From b15bd2c468657d948e8fd5f0d14b9ef583844beb Mon Sep 17 00:00:00 2001
From: cronn Bot <no-reply@cronn.de>
Date: Thu, 30 Jan 2025 07:29:26 +0000
Subject: [PATCH] Update v1.6.3

---
 admin-portal-api/.gitignore                   |     1 -
 admin-portal-api/build.gradle                 |    11 -
 admin-portal-api/package.json                 |     9 -
 admin-portal-api/tsconfig.json                |     3 -
 admin-portal/gradleDependencies.json          |     2 +-
 admin-portal/package.json                     |     2 +-
 admin-portal/src/lib/api/clients.ts           |     2 +-
 .../button/CertificateDialogButton.tsx        |     2 +-
 .../lib/components/table/addEditColumns.tsx   |     2 +-
 .../table/cell/ActorSelectorCell.tsx          |     2 +-
 .../lib/components/table/cell/AuditCell.tsx   |     2 +-
 .../components/table/cell/CertificateCell.tsx |     2 +-
 .../lib/components/table/cell/ColoredText.tsx |     2 +-
 .../table/cell/EditableCertificateCell.tsx    |     2 +-
 .../table/cell/EditableEnumCell.tsx           |     2 +-
 .../components/table/cell/ForeignKeyCell.tsx  |     2 +-
 .../components/table/cell/MetadataCell.tsx    |     2 +-
 .../table/cell/StaticActorSelectorCell.tsx    |     2 +-
 .../lib/components/view/actors/ActorTable.tsx |     2 +-
 .../view/audit-log/AuditHistory.tsx           |     2 +-
 .../components/view/audit-log/AuditLog.tsx    |     2 +-
 .../tables/AuditActorMetadataTable.tsx        |     2 +-
 .../view/audit-log/tables/AuditActorTable.tsx |     2 +-
 .../audit-log/tables/AuditOrgUnitTable.tsx    |     2 +-
 .../view/audit-log/tables/AuditRuleTable.tsx  |     2 +-
 .../view/org-units/OrgUnitTable.tsx           |     2 +-
 .../lib/components/view/rules/RuleTable.tsx   |     2 +-
 .../ServiceDirectoryConfiguration.tsx         |     2 +-
 .../dataTransfer/ExportContent.tsx            |     2 +-
 .../dataTransfer/ImportContent.tsx            |     2 +-
 admin-portal/src/lib/helpers/actorSelector.ts |     2 +-
 admin-portal/src/lib/helpers/entities.ts      |     2 +-
 admin-portal/src/lib/helpers/entityFilter.ts  |     2 +-
 .../src/lib/helpers/entityToString.ts         |     2 +-
 admin-portal/src/lib/hooks/useActors.ts       |     2 +-
 admin-portal/src/lib/hooks/useActorsApi.ts    |     2 +-
 admin-portal/src/lib/hooks/useAuditLogs.ts    |     2 +-
 admin-portal/src/lib/hooks/useOrgUnits.ts     |     2 +-
 admin-portal/src/lib/hooks/useOrgUnitsApi.ts  |     2 +-
 admin-portal/src/lib/hooks/useRules.ts        |     2 +-
 admin-portal/src/lib/hooks/useRulesApi.ts     |     2 +-
 backend/auditlog/build.gradle                 |     2 -
 backend/auditlog/gradle.lockfile              |     7 +-
 backend/auditlog/openApi.json                 |   865 ++
 backend/auditlog/openApi.yaml                 |   696 -
 .../de/eshg/base/centralfile/PersonApi.java   |    10 +
 .../api/GetFileStateIdsBulkRequest.java       |    15 +
 .../api/GetFileStateIdsBulkResponse.java      |    20 +
 .../eshg/base/citizenuser/CitizenUserApi.java |     2 +-
 .../de/eshg/base/gdpr/GdprProcedureApi.java   |    46 +-
 backend/base/openApi.json                     | 11468 ++++++++++++++++
 backend/base/openApi.yaml                     |  9575 -------------
 .../base/centralfile/PersonController.java    |    26 +
 .../base/centralfile/mapper/PersonMapper.java |    14 +
 .../persistence/AssociatedFileStateIds.java   |    10 +
 .../repository/PersonRepository.java          |    23 +
 .../base/gdpr/BundIdAttributesMapper.java     |    73 +-
 .../gdpr/CitizenUserAttributesMapper.java     |    27 +-
 .../de/eshg/base/gdpr/GdprCleanupJob.java     |     2 +-
 .../eshg/base/gdpr/MukAttributesMapper.java   |    54 +-
 .../eshg/base/gdpr/StreetAndHouseNumber.java  |    85 +
 .../repository/GdprProcedureRepository.java   |     5 +-
 .../config/BaseInternalSecurityConfig.java    |    33 +-
 backend/buildscript-gradle.lockfile           |     2 +-
 .../service/error/GlobalExceptionHandler.java |    14 +-
 .../security/DefaultEshgSecurityConfig.java   |     7 -
 backend/central-repository/build.gradle       |     3 -
 backend/central-repository/gradle.lockfile    |     7 +-
 backend/central-repository/openApi.json       |   873 ++
 backend/central-repository/openApi.yaml       |   674 -
 backend/chat-management/openApi.json          |   513 +
 backend/chat-management/openApi.yaml          |   385 -
 backend/dental/openApi.json                   |  6399 +++++++++
 backend/dental/openApi.yaml                   |  5511 --------
 .../de/eshg/dental/ExaminationService.java    |    59 +-
 .../dental/ProphylaxisSessionService.java     |    53 +-
 .../ProphylaxisSessionSpecification.java      |     2 +-
 .../main/java/de/eshg/dental/Validator.java   |    28 +
 .../api/CreateProphylaxisSessionRequest.java  |     2 +-
 .../de/eshg/dental/api/ExaminationDto.java    |     5 +-
 .../api/FluoridationExaminationResultDto.java |     2 +-
 .../api/IsFluorideVarnishApplicable.java      |    10 +
 ...rophylaxisSessionChildExaminationDto.java} |    13 +-
 .../api/ProphylaxisSessionDetailsDto.java     |     4 +-
 .../dental/api/ProphylaxisSessionDto.java     |     2 +-
 .../dental/api/ProphylaxisSessionRequest.java |     2 +-
 .../dental/api/ProphylaxisSessionSortKey.java |     2 +-
 .../api/ScreeningExaminationResultDto.java    |     2 +-
 .../de/eshg/dental/api/ToothDiagnosisDto.java |     7 +-
 .../java/de/eshg/dental/api/ToothDto.java     |    69 +
 .../api/UpdateProphylaxisSessionRequest.java  |     2 +-
 .../ProphylaxisSessionWithAugmentedData.java  |     4 +-
 .../de/eshg/dental/client/PersonClient.java   |    11 +
 .../de/eshg/dental/domain/model/Child.java    |     5 +
 .../domain/model/ProphylaxisSession.java      |     8 +-
 .../repository/ExaminationRepository.java     |    14 +
 .../eshg/dental/mapper/ExaminationMapper.java |     3 +-
 .../mapper/ProphylaxisSessionMapper.java      |    41 +-
 .../dental/testhelper/ChildrenPopulator.java  |    36 +-
 .../ProphylaxisSessionsPopulator.java         |    15 +-
 .../migrations/0028_rename_screening.xml      |    15 +
 .../main/resources/migrations/changelog.xml   |     1 +
 backend/inspection/openApi.json               | 10888 +++++++++++++++
 backend/inspection/openApi.yaml               |  8893 ------------
 backend/lib-appointmentblock/build.gradle     |     2 -
 backend/lib-appointmentblock/gradle.lockfile  |     7 +-
 backend/lib-appointmentblock/openApi.json     |   850 ++
 backend/lib-appointmentblock/openApi.yaml     |   681 -
 backend/lib-editor/openApi.json               |   775 ++
 backend/lib-editor/openApi.yaml               |   622 -
 .../foureyes/model/ApprovalRequestDto.java    |     4 +-
 backend/lib-four-eyes-principle/build.gradle  |     2 -
 .../lib-four-eyes-principle/gradle.lockfile   |     7 +-
 backend/lib-four-eyes-principle/openApi.json  |   468 +
 backend/lib-four-eyes-principle/openApi.yaml  |   362 -
 .../de/eshg/lib/keycloak/CitizenTestUser.java |     8 +-
 .../eshg/lib/keycloak/EmployeeTestUser.java   |    19 +-
 backend/lib-mutex/build.gradle                |     2 -
 backend/lib-mutex/gradle.lockfile             |     7 +-
 backend/lib-notification/build.gradle         |     2 -
 backend/lib-notification/gradle.lockfile      |     7 +-
 backend/lib-notification/openApi.json         |   327 +
 backend/lib-notification/openApi.yaml         |   252 -
 .../procedure/api/GdprValidationTaskApi.java  |    41 +-
 .../model/AbstractFileReferenceDto.java       |     3 +-
 .../model/GenericFileReferenceDto.java        |     6 +
 .../model/GetProgressEntriesResponse.java     |     6 +-
 .../model/GetProgressEntryResponse.java       |     6 +-
 .../KeyDocumentAwareProgressEntryDto.java     |     3 +-
 .../model/ManualProgressEntryDto.java         |    39 +-
 .../model/ProcessedInboxProgressEntryDto.java |    36 +-
 .../lib/procedure/model/ProgressEntryDto.java |    21 +-
 .../model/SystemProgressEntryDto.java         |    45 +-
 backend/lib-procedures/build.gradle           |     2 -
 backend/lib-procedures/gradle.lockfile        |     7 +-
 backend/lib-procedures/openApi.json           |  4835 +++++++
 backend/lib-procedures/openApi.yaml           |  4228 ------
 .../eshg/lib/procedure/helper/UserHelper.java |    32 +-
 .../ProcedureApprovalRequestMapper.java       |    13 +-
 .../ProgressEntryController.java              |    40 +-
 .../progressentry/ProgressEntryService.java   |     7 -
 .../service/security/config/BaseUrls.java     |    33 +
 .../AbstractPublicSecurityConfiguration.java  |    27 +-
 .../config/BasePublicSecurityConfig.java      |    53 +-
 backend/lib-statistics/README.md              |     4 +-
 backend/lib-statistics/build.gradle           |     2 -
 backend/lib-statistics/gradle.lockfile        |     7 +-
 backend/lib-statistics/openApi.json           |   384 +
 backend/lib-statistics/openApi.yaml           |   293 -
 backend/local-service-directory/openApi.json  |   148 +
 backend/local-service-directory/openApi.yaml  |   115 -
 backend/measles-protection/openApi.json       |  7579 ++++++++++
 backend/measles-protection/openApi.yaml       |  6428 ---------
 backend/medical-registry/openApi.json         |  6254 +++++++++
 backend/medical-registry/openApi.yaml         |  5441 --------
 backend/official-medical-service/openApi.json |  6596 +++++++++
 backend/official-medical-service/openApi.yaml |  5586 --------
 .../appointment/OmsAppointmentController.java |     6 +
 .../appointment/OmsAppointmentService.java    |    18 +
 .../EmployeeOmsProcedureController.java       |     6 +-
 .../EmployeeOmsProcedureService.java          |    63 +-
 .../TestPopulateProcedureService.java         |    21 +-
 .../api/PostPopulateProcedureRequest.java     |     1 +
 backend/opendata/build.gradle                 |     2 -
 backend/opendata/gradle.lockfile              |     7 +-
 backend/opendata/openApi.json                 |   921 ++
 backend/opendata/openApi.yaml                 |   750 -
 backend/replace.sh                            |    24 +
 backend/school-entry/openApi.json             |  9597 +++++++++++++
 backend/school-entry/openApi.yaml             |  8281 -----------
 .../schoolentry/SchoolEntryController.java    |    30 +-
 ...reData.java => RequiredProcedureArea.java} |     2 +-
 ...ValidateRequiredProcedureDataResponse.java |     2 +-
 .../schoolentry/api/WaitingStatusDto.java     |     5 +-
 .../domain/model/DevelopmentScreening.java    |     1 +
 .../domain/model/WaitingStatus.java           |     5 +-
 .../schoolentry/mapper/WaitingRoomMapper.java |     6 +
 .../SchoolInfoLetterValidator.java            |   216 +-
 .../migrations/0076_add_waiting_status.xml    |    15 +
 .../main/resources/migrations/changelog.xml   |     1 +
 backend/service-directory/build.gradle        |     2 -
 backend/service-directory/gradle.lockfile     |     7 +-
 backend/service-directory/openApi.json        |  2201 +++
 backend/service-directory/openApi.yaml        |  1661 ---
 backend/statistics/openApi.json               |  4839 +++++++
 backend/statistics/openApi.yaml               |  3752 -----
 .../aggregation/DataAggregationService.java   |     5 +-
 .../aggregation/TableRowSpecifications.java   |    18 +-
 backend/sti-protection/openApi.json           |  7625 ++++++++++
 backend/sti-protection/openApi.yaml           |  6447 ---------
 .../FollowUpProcedureService.java             |   126 +
 .../stiprotection/MedicalHistoryService.java  |     3 +
 .../StiProtectionProcedureController.java     |    42 +-
 .../StiProtectionProcedureService.java        |    26 +-
 .../api/CreateFollowUpProcedureRequest.java   |    16 +
 .../api/CreateFollowUpProcedureResponse.java  |    19 +
 .../api/GetProcedureResponse.java             |     1 +
 .../mapper/AppointmentMapper.java             |     9 +
 .../stiprotection/mapper/PersonMapper.java    |     8 +
 .../mapper/StiProtectionProcedureMapper.java  |     1 +
 .../mapper/diagnosis/DiagnosisMapper.java     |    15 +
 .../medicalhistory/MedicalHistoryMapper.java  |     2 +-
 .../data/StiProtectionProcedureData.java      |     4 +
 .../db/StiProtectionProcedure.java            |    12 +
 .../StiProtectionSystemProgressEntryType.java |     3 +-
 .../migrations/0044_add_follow_up_flag.xml    |    15 +
 .../main/resources/migrations/changelog.xml   |     1 +
 .../eshg/base/PostgresContainerConstants.java |    23 -
 .../de/eshg/base/PostgresTestContainer.java   |   127 +
 .../eshg/base/auth/AuthorizationTestUtil.java |     2 +-
 .../main/java/de/eshg/rest/RestHelper.java    |     4 +
 backend/travel-medicine/openApi.json          |  9646 +++++++++++++
 backend/travel-medicine/openApi.yaml          |  7981 -----------
 .../src/main/groovy/workspace-package.gradle  |     3 +-
 citizen-portal-api/build.gradle               |     8 +-
 citizen-portal/.env                           |     9 +-
 citizen-portal/gradleDependencies.json        |     3 +-
 citizen-portal/package.json                   |     1 +
 .../mein-bereich/datenschutzrechte/page.tsx   |     2 +-
 .../mein-bereich/profil/page.tsx              |     6 +-
 .../(static)/datenschutzrechte/page.tsx       |    55 +-
 .../mein-bereich/datenschutzrechte/page.tsx   |     2 +-
 .../unternehmen/mein-bereich/profil/page.tsx  |     6 +-
 citizen-portal/src/env/server.js              |     9 +-
 .../baseModule/api/queries/apiQueryKeys.ts    |     4 +
 .../src/lib/baseModule/api/queries/gdpr.ts    |   144 +
 .../gdpr/GdprProcedureDownloads.tsx           |   148 +
 .../components/gdpr/GdprProcedureList.tsx     |   231 +
 .../gdpr/GdprProcedureStatusChip.tsx          |    30 +
 .../form/ConfirmStartGdprProcedureDialog.tsx  |     8 -
 .../components/gdpr/form/GdprContactForm.tsx  |     1 +
 .../gdpr/page/GdprRightsOverviewPage.tsx      |    34 +-
 .../components/layout/AppLayout.tsx           |     2 +-
 .../src/lib/baseModule/locales/de/gdpr.json   |    85 +-
 .../src/lib/baseModule/locales/de/login.json  |     8 +-
 .../baseModule/locales/de/translation.json    |    11 +
 .../src/lib/baseModule/locales/en/gdpr.json   |   113 +-
 .../src/lib/baseModule/locales/en/login.json  |     8 +-
 .../baseModule/locales/en/translation.json    |    13 +-
 .../medicalRegistry/locales/de/overview.json  |     2 +-
 .../medicalRegistry/locales/en/overview.json  |     2 +-
 .../ProfessionalRegistrationSidePanel.tsx     |    39 +-
 .../ProfessionalRegistrationStepper.tsx       |    24 +-
 .../ProfessionalRegistrationFormStepFour.tsx  |   199 +-
 .../ProfessionalRegistrationFormStepOne.tsx   |    20 +-
 .../ProfessionalRegistrationFormStepThree.tsx |    52 +-
 .../ProfessionalRegistrationFormStepTwo.tsx   |    44 +-
 .../travelMedicine/api/clients.ts             |     4 +-
 .../api/mutations/citizenAuthApi.ts           |     8 +-
 .../api/mutations/citizenPublicApi.ts         |     2 +-
 .../api/queries/citizenPublicApi.ts           |     2 +-
 .../appointment/AppointmentFormButtonBar.tsx  |     5 +-
 .../appointment/steps/AppointmentTypeStep.tsx |     4 +-
 .../appointment/steps/TravelDataStep.tsx      |     2 +-
 .../appointment/steps/TravelTypeStep.tsx      |     2 +-
 .../AppointmentContent.tsx                    |     2 +-
 .../calendar/AppointmentDayPicker.tsx         |     2 +-
 .../calendar/AppointmentPicker.tsx            |     2 +-
 .../calendar/AppointmentTimePicker.tsx        |     2 +-
 .../TravelInformationOverviewDetails.tsx      |     5 +-
 .../components/appointment/types.ts           |     4 +-
 .../InformationStatementPanel.tsx             |     2 +-
 .../InformationStatementStep.tsx              |     2 +-
 .../InformationStatementStepper.tsx           |     8 +-
 .../MedicalHistorySidePanel.tsx               |     2 +-
 .../medicalHistory/MedicalHistoryStepper.tsx  |     2 +-
 .../components/document/AnamnesisQuestion.tsx |     2 +-
 .../document/ConfirmationElement.tsx          |     2 +-
 .../document/DocumentMultiSelectElement.tsx   |     8 +-
 .../document/DocumentRadioButtonElement.tsx   |     2 +-
 .../components/document/DocumentSection.tsx   |     2 +-
 .../shared/components/document/TextBlock.tsx  |     2 +-
 .../components/shared/contexts/IdContext.tsx  |     2 +-
 ...intmentDetailsInformationStatementList.tsx |     2 +-
 .../viewAppointment/AppointmentDetails.tsx    |     2 +-
 ...ppointmentDetailsAdditionalInformation.tsx |     2 +-
 ...AppointmentDetailsInformationStatement.tsx |     2 +-
 .../AppointmentDetailsMetaInformation.tsx     |     6 +-
 .../AppointmentDetailsSidePanel.tsx           |     2 +-
 .../AppointmentOverviewSheet.tsx              |     2 +-
 .../AppointmentOverviewSheetButton.tsx        |     6 +-
 .../rebook/RebookAppointment.tsx              |     2 +-
 .../rebook/RebookAppointmentSidePanel.tsx     |     2 +-
 .../helpers/appointmentFormHelper.ts          |     8 +-
 .../travelMedicine/helpers/options.ts         |     2 +-
 .../travelMedicine/helpers/translations.ts    |     4 +-
 citizen-portal/src/lib/shared/api/clients.ts  |    46 +-
 citizen-portal/src/lib/shared/api/config.ts   |    12 +-
 .../shared/components/OpeningHoursSection.tsx |     2 +-
 .../dialogs/LoginRedirectDialog.tsx           |    17 +-
 .../shared/components/icon/GradientIcon.tsx   |     2 +-
 docs/workspace-management.adoc                |     4 +-
 employee-portal-api/build.gradle              |    21 +-
 employee-portal/gradleDependencies.json       |     3 +-
 employee-portal/package.json                  |     1 +
 .../src/app/(baseModule)/gdpr/page.tsx        |    14 +-
 .../examinations/[examinationId]/page.tsx     |    81 +-
 .../examinations/[participantIndex]/page.tsx  |    85 +-
 .../[procedureId]/examinations/layout.tsx     |    28 +-
 .../evaluations/[id]/table/page.tsx           |    37 +-
 .../src/app/playground/charts/page.tsx        |     2 +-
 .../components/gdpr/overview/GDPRTable.tsx    |     5 +
 .../components/gdpr/overview/columns.tsx      |     4 +-
 .../gdpr/procedure/GDPRProcedureDetails.tsx   |    37 +-
 .../tiles/GdprDownloadPackagesTile.tsx        |    16 +-
 .../procedure/tiles/GdprFacilityDataTile.tsx  |     5 +-
 .../procedure/tiles/GdprPersonDataTile.tsx    |     5 +-
 .../src/lib/baseModule/theme/theme.ts         |     9 +
 .../details/AdditionalInformation.tsx         |    39 -
 .../children/details/ChildExaminationForm.tsx |    37 +
 .../children/details/ExaminationDetails.tsx   |    57 -
 .../dental/features/children/options.ts       |    12 -
 .../dental/features/children/translations.ts  |    13 -
 .../AdditionalInformationFormSection.tsx      |   108 +
 .../examinations/ExaminationFormLayout.tsx    |    74 +
 .../features/examinations/NoteFormSection.tsx |    21 +
 .../features/examinations/translations.ts     |     7 +
 .../CreateProphylaxisSessionSidebar.tsx       |    14 +-
 .../prophylaxisSessions/FluoridationField.tsx |     6 +-
 .../ProphylaxisSessionDetails.tsx             |     2 +-
 ...ProphylaxisSessionExaminationBottomBar.tsx |    75 -
 .../ProphylaxisSessionParticipantsTable.tsx   |    36 +-
 .../ProphylaxisSessionsTable.tsx              |     8 +-
 ...ProphylaxisSessionExaminationBottomBar.tsx |    67 +
 .../ProphylaxisSessionExaminationForm.tsx     |    42 +
 .../ProphylaxisSessionExaminationToolbar.tsx  |    10 +-
 .../examination/formComponents.tsx            |    42 +
 .../useProphylaxisSessionExaminationForm.ts   |    64 +
 ...ProphylaxisSessionExaminationNavigation.ts |    55 +
 .../store/participantFilters.ts               |     6 +-
 .../store/participantSorting.ts               |     8 +-
 .../store/prophylaxisSessionStore.ts          |    19 +-
 .../store/replaceExaminationResult.ts         |    24 +
 .../create/EmployeeInformationForm.tsx        |    13 +-
 .../create/OccupationalInformationForm.tsx    |    38 +-
 .../create/PersonalInformationForm.tsx        |    29 +-
 .../create/PracticeInformationForm.tsx        |    19 +-
 .../create/RequiredDocumentsForm.tsx          |   162 +-
 .../MedicalRegistryProcedureDetails.tsx       |     9 +-
 .../details/PracticesDetailsSection.tsx       |    21 +-
 .../details/ProfessionalDetailsSection.tsx    |    35 +-
 .../MedicalRegistryProceduresTable.tsx        |     8 +-
 .../api/mutations/appointmentApi.ts           |    19 +
 .../procedures/details/AppointmentsTable.tsx  |    53 +-
 .../overview/ProceduresOverviewTable.tsx      |    56 +-
 .../procedures/anamnesis/AnamnesisForm.tsx    |     2 +-
 .../BirthDataAndChildInformationForm.tsx      |     2 +-
 .../procedures/anamnesis/CheckUpsForm.tsx     |     2 +-
 .../anamnesis/CountryWithNumberField.tsx      |     2 +-
 .../anamnesis/MigrationBackgroundForm.tsx     |     2 +-
 .../PromotionBeforeSchoolEntryForm.tsx        |     2 +-
 .../DevelopmentScreeningForm.tsx              |     4 +-
 .../DevelopmentScreeningResultFields.tsx      |     2 +-
 .../developmentScreening/HandicapFields.tsx   |     2 +-
 .../HandicapWithDiagnosisFields.tsx           |     2 +-
 .../developmentScreening/Icd10Sidebar.tsx     |     6 +-
 .../MeasurementFields.tsx                     |     2 +-
 .../PsychoSocialRiskFields.tsx                |     2 +-
 .../SocioEducationalFields.tsx                |     2 +-
 .../ExaminationResultValueField.tsx           |     2 +-
 .../examinations/Icd10CodeField.tsx           |     2 +-
 ....tsx => IncompleteProcedureAreasModal.tsx} |    16 +-
 .../ResponseDoctorLetterField.tsx             |     2 +-
 .../procedures/examinations/SetAllSelect.tsx  |     4 +-
 .../sopessExamination/ArticulationField.tsx   |     2 +-
 .../BodyCoordinationForm.tsx                  |     2 +-
 .../sopessExamination/CountingForm.tsx        |     2 +-
 .../sopessExamination/HandednessForm.tsx      |     2 +-
 .../sopessExamination/LanguageForm.tsx        |     2 +-
 .../sopessExamination/PluralForm.tsx          |     2 +-
 .../sopessExamination/PrepositionForm.tsx     |     2 +-
 .../sopessExamination/PseudowordForm.tsx      |     2 +-
 .../QuantityKnowledgeForm.tsx                 |     2 +-
 .../SelectiveAttentionForm.tsx                |     2 +-
 .../SopessExaminationFields.tsx               |     2 +-
 .../VisualPerceptionForm.tsx                  |     2 +-
 .../VisuoMotorSkillsForm.tsx                  |     2 +-
 .../features/procedures/translations.ts       |    21 +-
 .../vaccination/VaccinationField.tsx          |     2 +-
 .../vaccination/VaccinationForm.tsx           |     4 +-
 .../api/queries/useGetProcedureIds.ts         |     1 +
 .../ChooseAttributesStep.tsx                  |    26 +-
 .../CreateEvaluationFromScratchSidebar.tsx    |    11 +-
 .../details/table/EvaluationDetailsTable.tsx  |    19 +-
 .../evaluations/details/table/columns.tsx     |    14 +-
 .../AnalysisChartDiagram.tsx                  |    27 +-
 .../AnalysisAccordion/AnalysisDiagramBox.tsx  |    26 +-
 .../procedureDetails/YesOrNoWithFollowUp.tsx  |     2 +-
 .../textTemplates/TextTemplateAccordion.tsx   |   105 +
 .../textTemplates/TextTemplatesSidebar.tsx    |   105 +
 .../TextTemplatesSidebarProvider.tsx          |    81 +
 .../TextareaFieldWithTextTemplates.tsx        |    86 +
 .../components/textTemplates/constants.ts     |   108 +
 .../textTemplates/useFieldHandle.tsx          |    62 +
 .../procedures/TabStickyBottomButtonBar.tsx   |    19 +-
 .../consultation/ConsultationForm.tsx         |    15 +-
 .../details/AnonIdentityDocumentCard.tsx      |     1 +
 .../details/CloseAndReopenDialogs.tsx         |    32 +-
 .../details/CreateAppointmentSidebar.tsx      |     3 +
 .../procedures/diagnosis/DiagnosisForm.tsx    |   164 +-
 .../procedures/diagnosis/Icd10Sidebar.tsx     |   233 +
 .../features/procedures/diagnosis/helpers.ts  |    20 +
 .../rapidTest/RapidTestExamination.tsx        |    24 +-
 .../medicalHistory/MedicalHistoryForm.tsx     |     6 +-
 .../procedures/medicalHistory/helpers.ts      |    16 +-
 .../sections/SexualOrientationAndContact.tsx  |     6 +-
 .../stiProtection/shared/constants.ts         |     1 +
 .../stiProtection/shared/helpers.ts           |    28 +
 .../stiProtection/shared/routes.ts            |     1 +
 .../travelMedicine/api/clients.ts             |     4 +-
 .../travelMedicine/api/download/files.ts      |     4 +-
 .../travelMedicine/api/models/Appointment.ts  |     2 +-
 .../api/models/AppointmentBlock.ts            |    10 +-
 .../api/models/AppointmentSummary.ts          |     4 +-
 .../api/models/AppointmentTypeConfig.ts       |     8 +-
 .../api/models/AssignableService.ts           |     2 +-
 .../travelMedicine/api/models/Disease.ts      |     2 +-
 .../models/InformationStatementTemplates.ts   |    12 +-
 .../api/models/OtherServicesTemplates.ts      |     2 +-
 .../travelMedicine/api/models/User.ts         |     2 +-
 .../travelMedicine/api/models/Vaccines.ts     |     2 +-
 .../api/mutations/appointmentBlocks.ts        |     2 +-
 .../api/mutations/appointmentTypes.ts         |     2 +-
 .../api/mutations/diseaseApi.ts               |     2 +-
 .../informationStatementTemplateApi.ts        |     8 +-
 .../api/mutations/medicalHistory.ts           |     2 +-
 .../api/mutations/medicalHistoryTemplates.ts  |     6 +-
 .../api/mutations/otherServiceTemplates.ts    |     2 +-
 .../api/mutations/procedureSteps.ts           |     8 +-
 .../api/mutations/vaccinationConsultation.ts  |    10 +-
 .../travelMedicine/api/mutations/vaccines.ts  |     2 +-
 .../api/queries/appointmentBlocks.ts          |     8 +-
 .../api/queries/vaccinationConsultation.ts    |     2 +-
 .../AppointmentBlockGroupForm.tsx             |     2 +-
 .../CreateAppointmentBlockGroupForm.tsx       |     6 +-
 .../AppointmentBlockGroupsTable.tsx           |     4 +-
 .../components/appointmentBlocks/options.ts   |     2 +-
 .../appointmentTypes/AppointmentTypeForm.tsx  |     2 +-
 .../AppointmentTypeSidebar.tsx                |     2 +-
 .../components/appointmentTypes/columns.tsx   |     2 +-
 .../appointmentTypes/translations.ts          |     4 +-
 .../components/diseases/DiseaseSidebar.tsx    |     2 +-
 .../components/diseases/DiseasesTable.tsx     |     2 +-
 .../components/diseases/columns.tsx           |     2 +-
 .../OtherServiceSidebar.tsx                   |     2 +-
 .../OtherServiceTable.tsx                     |     2 +-
 .../otherServiceTemplates/columns.tsx         |     2 +-
 .../personSidebar/PersonSidebar.tsx           |     4 +-
 .../appointment/InitialAppointmentForm.tsx    |     6 +-
 .../personSidebar/personSidebarHelper.ts      |     8 +-
 .../InformationStatementTemplateEditor.tsx    |     6 +-
 .../InformationStatementTemplateMetaInfo.tsx  |     2 +-
 .../informationStatement/columns.tsx          |     4 +-
 .../informationStatement/constants.ts         |     2 +-
 .../templates/informationStatement/options.ts |     2 +-
 .../informationStatement/translations.ts      |     2 +-
 .../MedicalHistoryTemplateEditor.tsx          |     6 +-
 .../templates/medicalHistory/columns.tsx      |     4 +-
 .../templates/medicalHistory/constants.ts     |     2 +-
 .../templates/medicalHistory/options.ts       |     2 +-
 .../templates/medicalHistory/translations.ts  |     2 +-
 ...ationConsultationsSearchFilterSettings.tsx |     2 +-
 .../searchColumns.tsx                         |     2 +-
 .../VaccinationConsultationsOverviewTable.tsx |     2 +-
 .../baseData/AbortProcedureModal.tsx          |     8 +-
 .../baseData/AcceptProcedureForm.tsx          |     2 +-
 .../baseData/AcceptProcedureSidebar.tsx       |     6 +-
 .../baseData/PatientDetails.tsx               |    10 +-
 .../baseData/PatientPanel.tsx                 |     4 +-
 .../baseData/ProcedureActionsPanel.tsx        |     4 +-
 .../baseData/ProcedureCreatedByTile.tsx       |     4 +-
 .../baseData/ServicePlanColumns.tsx           |     6 +-
 .../baseData/ServicePlanTable.tsx             |     2 +-
 .../baseData/TravelDataTile.tsx               |     2 +-
 .../VaccinationConsultationDetails.tsx        |     4 +-
 .../sidebars/AddServiceAppointmentSidebar.tsx |     4 +-
 .../sidebars/AddServicePlanSidebar.tsx        |     2 +-
 .../sidebars/AssignServiceSidebar.tsx         |     2 +-
 .../sidebars/EditEarliestDateSidebar.tsx      |     2 +-
 .../EditServiceAppointmentSidebar.tsx         |     2 +-
 .../sidebars/OtherServiceAppliedSidebar.tsx   |     4 +-
 .../sidebars/ServiceAppliedSidebar.tsx        |     4 +-
 .../baseData/sidebars/TravelDataSidebar.tsx   |     4 +-
 .../AddServiceAppointmentForm.tsx             |     4 +-
 .../sidebarForms/AddServicePlanForm.tsx       |     2 +-
 .../sidebarForms/AsssignServiceForm.tsx       |     2 +-
 .../sidebarForms/EditEarliestDateForm.tsx     |     2 +-
 .../EditServiceAppointmentForm.tsx            |    10 +-
 .../sidebarForms/InformationStatementForm.tsx |     8 +-
 .../sidebarForms/OtherServiceAppliedForm.tsx  |     2 +-
 .../sidebarForms/ServiceAppliedForm.tsx       |     2 +-
 .../sidebars/sidebarForms/ServicesSheet.tsx   |     6 +-
 .../sidebars/sidebarForms/TravelDataForm.tsx  |     8 +-
 .../sidebarForms/VaccinationFields.tsx        |     2 +-
 .../certificates/CertificateForm.tsx          |     8 +-
 .../certificates/CertificateSidebar.tsx       |     2 +-
 .../certificates/CertificatesTable.tsx        |     4 +-
 .../certificates/columns.tsx                  |     4 +-
 .../certificates/options.ts                   |     2 +-
 .../certificates/translations.ts              |     2 +-
 .../InformationStatementSidebar.tsx           |     2 +-
 .../InformationStatementsColumns.tsx          |     2 +-
 .../InformationStatementsTable.tsx            |     2 +-
 .../medicalHistory/ConfirmationElement.tsx    |     2 +-
 .../medicalHistory/MedicalHistory.tsx         |     2 +-
 .../medicalHistory/MedicalHistoryContent.tsx  |     6 +-
 .../MedicalHistoryMultiSelectElement.tsx      |     8 +-
 .../MedicalHistoryRadioButtonElement.tsx      |     2 +-
 .../overviewColumns.tsx                       |     8 +-
 .../shared/AppointmentRadioGroup.tsx          |     8 +-
 .../shared/CheckboxGroup.tsx                  |     4 +-
 .../shared/LegacyAppointmentRadioGroup.tsx    |     8 +-
 .../shared/constants.ts                       |     2 +-
 .../shared/helpers.ts                         |    14 +-
 .../shared/options.ts                         |     4 +-
 .../shared/translations.ts                    |     4 +-
 .../components/vaccines/VaccineForm.tsx       |     8 +-
 .../components/vaccines/VaccineSidebar.tsx    |     2 +-
 .../components/vaccines/columns.tsx           |     2 +-
 .../travelMedicine/shared/appointmentTypes.ts |     2 +-
 .../travelMedicine/shared/constants.ts        |     5 +-
 .../travelMedicine/shared/helper.ts           |     2 +-
 .../TemplateEditorMainContent.tsx             |     2 +-
 .../sections/TemplateSection.tsx              |     2 +-
 .../sections/TemplateSectionList.tsx          |     2 +-
 .../dataElements/SectionDataElementList.tsx   |     2 +-
 .../SectionElementComponentFactory.tsx        |     2 +-
 .../anamnesisQuestion/AnamnesisQuestion.tsx   |     2 +-
 .../subElements/SubMultiSelectList.tsx        |     2 +-
 .../components/detailsSection/DetailsCell.tsx |    18 +
 .../components/formFields/CheckboxField.tsx   |     4 +-
 .../formFields/CheckboxGroupField.tsx         |    52 +-
 .../components/formFields/FieldSetControl.tsx |    51 +
 .../shared/components/formFields/Legend.tsx   |    13 +-
 .../components/formFields/TextareaField.tsx   |    10 +-
 .../components/icons/AddTextTemplate.tsx      |    33 +
 .../components/icons/CalendarAddDay.tsx       |     2 +-
 .../personSidebarHelper.ts                    |     2 +-
 .../ProgressEntriesContext.tsx                |    20 -
 .../progress-entries/ProgressEntriesPage.tsx  |     5 +-
 .../buildTimelineEntryProps.tsx               |    40 +-
 .../procedures/progress-entries/helper.ts     |    22 +-
 .../queries/progressEntryApi.ts               |     2 +-
 .../ApprovalRequestCard.tsx                   |    12 +-
 .../ApprovalRequestsOverviewSidebar.tsx       |    10 +-
 .../FileAsApprovalRequestEntity.tsx           |    14 +-
 .../ProgressEntryAsApprovalRequestEntity.tsx  |    12 +-
 .../InboxProgressEntryDetails.tsx             |    10 +-
 .../ManualProgressEntryDetails.tsx            |    16 +-
 .../ProgressEntryDetailsSidebar.tsx           |     9 +-
 .../SystemProgressEntryDetails.tsx            |     7 +-
 .../procedures/progress-entries/types.ts      |     4 +-
 .../TabNavigationToolbar.tsx                  |    36 +-
 .../form}/fieldVariants.tsx                   |    38 +-
 .../formFields/MonthAndYearFields.tsx         |     8 +-
 .../src/components/formFields/SelectField.tsx |     6 +-
 packages/base-api/build.gradle                |     2 +-
 packages/dental-api/build.gradle              |     2 +-
 .../dental/src/api/models/ChildExamination.ts |    26 +-
 packages/dental/src/api/models/Examination.ts |    18 +-
 ...minationResult.ts => ExaminationResult.ts} |    18 +-
 .../src/api/models/ProphylaxisSession.ts      |     4 +-
 .../api/mutations/prophylaxisSessionApi.ts    |    33 +-
 packages/measles-protection-api/build.gradle  |     2 +-
 packages/school-entry-api/build.gradle        |     2 +-
 packages/service-directory-api/.gitignore     |     2 +
 packages/service-directory-api/build.gradle   |     9 +
 .../buildscript-gradle.lockfile               |     0
 packages/service-directory-api/package.json   |    10 +
 packages/service-directory-api/tsconfig.json  |     3 +
 packages/service-directory-api/tsup.config.ts |     8 +
 packages/statistics-api/build.gradle          |     2 +-
 packages/travel-medicine-api/.gitignore       |     2 +
 packages/travel-medicine-api/build.gradle     |     9 +
 .../buildscript-gradle.lockfile               |     4 +
 packages/travel-medicine-api/package.json     |    10 +
 packages/travel-medicine-api/tsconfig.json    |     3 +
 packages/travel-medicine-api/tsup.config.ts   |     8 +
 pnpm-lock.yaml                                |   155 +-
 pnpm-workspace.yaml                           |     1 -
 reverse-proxy/citizen-portal.conf             |    40 +
 settings.gradle                               |     1 -
 582 files changed, 99954 insertions(+), 80975 deletions(-)
 delete mode 100644 admin-portal-api/.gitignore
 delete mode 100644 admin-portal-api/build.gradle
 delete mode 100644 admin-portal-api/package.json
 delete mode 100644 admin-portal-api/tsconfig.json
 create mode 100644 backend/auditlog/openApi.json
 delete mode 100644 backend/auditlog/openApi.yaml
 create mode 100644 backend/base-api/src/main/java/de/eshg/base/centralfile/api/GetFileStateIdsBulkRequest.java
 create mode 100644 backend/base-api/src/main/java/de/eshg/base/centralfile/api/GetFileStateIdsBulkResponse.java
 create mode 100644 backend/base/openApi.json
 delete mode 100644 backend/base/openApi.yaml
 create mode 100644 backend/base/src/main/java/de/eshg/base/centralfile/persistence/AssociatedFileStateIds.java
 create mode 100644 backend/base/src/main/java/de/eshg/base/gdpr/StreetAndHouseNumber.java
 create mode 100644 backend/central-repository/openApi.json
 delete mode 100644 backend/central-repository/openApi.yaml
 create mode 100644 backend/chat-management/openApi.json
 delete mode 100644 backend/chat-management/openApi.yaml
 create mode 100644 backend/dental/openApi.json
 delete mode 100644 backend/dental/openApi.yaml
 create mode 100644 backend/dental/src/main/java/de/eshg/dental/api/IsFluorideVarnishApplicable.java
 rename backend/dental/src/main/java/de/eshg/dental/api/{ProphylaxisSessionChildExamination.java => ProphylaxisSessionChildExaminationDto.java} (51%)
 create mode 100644 backend/dental/src/main/resources/migrations/0028_rename_screening.xml
 create mode 100644 backend/inspection/openApi.json
 delete mode 100644 backend/inspection/openApi.yaml
 create mode 100644 backend/lib-appointmentblock/openApi.json
 delete mode 100644 backend/lib-appointmentblock/openApi.yaml
 create mode 100644 backend/lib-editor/openApi.json
 delete mode 100644 backend/lib-editor/openApi.yaml
 create mode 100644 backend/lib-four-eyes-principle/openApi.json
 delete mode 100644 backend/lib-four-eyes-principle/openApi.yaml
 create mode 100644 backend/lib-notification/openApi.json
 delete mode 100644 backend/lib-notification/openApi.yaml
 create mode 100644 backend/lib-procedures/openApi.json
 delete mode 100644 backend/lib-procedures/openApi.yaml
 create mode 100644 backend/lib-statistics/openApi.json
 delete mode 100644 backend/lib-statistics/openApi.yaml
 create mode 100644 backend/local-service-directory/openApi.json
 delete mode 100644 backend/local-service-directory/openApi.yaml
 create mode 100644 backend/measles-protection/openApi.json
 delete mode 100644 backend/measles-protection/openApi.yaml
 create mode 100644 backend/medical-registry/openApi.json
 delete mode 100644 backend/medical-registry/openApi.yaml
 create mode 100644 backend/official-medical-service/openApi.json
 delete mode 100644 backend/official-medical-service/openApi.yaml
 create mode 100644 backend/opendata/openApi.json
 delete mode 100644 backend/opendata/openApi.yaml
 create mode 100644 backend/replace.sh
 create mode 100644 backend/school-entry/openApi.json
 delete mode 100644 backend/school-entry/openApi.yaml
 rename backend/school-entry/src/main/java/de/eshg/schoolentry/api/{RequiredProcedureData.java => RequiredProcedureArea.java} (87%)
 create mode 100644 backend/school-entry/src/main/resources/migrations/0076_add_waiting_status.xml
 create mode 100644 backend/service-directory/openApi.json
 delete mode 100644 backend/service-directory/openApi.yaml
 create mode 100644 backend/statistics/openApi.json
 delete mode 100644 backend/statistics/openApi.yaml
 create mode 100644 backend/sti-protection/openApi.json
 delete mode 100644 backend/sti-protection/openApi.yaml
 create mode 100644 backend/sti-protection/src/main/java/de/eshg/stiprotection/FollowUpProcedureService.java
 create mode 100644 backend/sti-protection/src/main/java/de/eshg/stiprotection/api/CreateFollowUpProcedureRequest.java
 create mode 100644 backend/sti-protection/src/main/java/de/eshg/stiprotection/api/CreateFollowUpProcedureResponse.java
 create mode 100644 backend/sti-protection/src/main/resources/migrations/0044_add_follow_up_flag.xml
 delete mode 100644 backend/test-commons/src/main/java/de/eshg/base/PostgresContainerConstants.java
 create mode 100644 backend/test-commons/src/main/java/de/eshg/base/PostgresTestContainer.java
 create mode 100644 backend/travel-medicine/openApi.json
 delete mode 100644 backend/travel-medicine/openApi.yaml
 create mode 100644 citizen-portal/src/lib/baseModule/api/queries/gdpr.ts
 create mode 100644 citizen-portal/src/lib/baseModule/components/gdpr/GdprProcedureDownloads.tsx
 create mode 100644 citizen-portal/src/lib/baseModule/components/gdpr/GdprProcedureList.tsx
 create mode 100644 citizen-portal/src/lib/baseModule/components/gdpr/GdprProcedureStatusChip.tsx
 delete mode 100644 employee-portal/src/lib/businessModules/dental/features/children/details/AdditionalInformation.tsx
 create mode 100644 employee-portal/src/lib/businessModules/dental/features/children/details/ChildExaminationForm.tsx
 delete mode 100644 employee-portal/src/lib/businessModules/dental/features/children/details/ExaminationDetails.tsx
 delete mode 100644 employee-portal/src/lib/businessModules/dental/features/children/options.ts
 delete mode 100644 employee-portal/src/lib/businessModules/dental/features/children/translations.ts
 create mode 100644 employee-portal/src/lib/businessModules/dental/features/examinations/AdditionalInformationFormSection.tsx
 create mode 100644 employee-portal/src/lib/businessModules/dental/features/examinations/ExaminationFormLayout.tsx
 create mode 100644 employee-portal/src/lib/businessModules/dental/features/examinations/NoteFormSection.tsx
 delete mode 100644 employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionExaminationBottomBar.tsx
 create mode 100644 employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/ProphylaxisSessionExaminationBottomBar.tsx
 create mode 100644 employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/ProphylaxisSessionExaminationForm.tsx
 rename employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/{ => examination}/ProphylaxisSessionExaminationToolbar.tsx (82%)
 create mode 100644 employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/formComponents.tsx
 create mode 100644 employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/useProphylaxisSessionExaminationForm.ts
 create mode 100644 employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/useProphylaxisSessionExaminationNavigation.ts
 create mode 100644 employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/store/replaceExaminationResult.ts
 rename employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/{RequiredProcedureDataModal.tsx => IncompleteProcedureAreasModal.tsx} (53%)
 create mode 100644 employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/TextTemplateAccordion.tsx
 create mode 100644 employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/TextTemplatesSidebar.tsx
 create mode 100644 employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/TextTemplatesSidebarProvider.tsx
 create mode 100644 employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/TextareaFieldWithTextTemplates.tsx
 create mode 100644 employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/constants.ts
 create mode 100644 employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/useFieldHandle.tsx
 create mode 100644 employee-portal/src/lib/businessModules/stiProtection/features/procedures/diagnosis/Icd10Sidebar.tsx
 create mode 100644 employee-portal/src/lib/shared/components/formFields/FieldSetControl.tsx
 create mode 100644 employee-portal/src/lib/shared/components/icons/AddTextTemplate.tsx
 rename lib-portal/src/{businessModules/schoolEntry/features/procedures => components/form}/fieldVariants.tsx (83%)
 rename packages/dental/src/api/models/{ChildExaminationResult.ts => ExaminationResult.ts} (79%)
 create mode 100644 packages/service-directory-api/.gitignore
 create mode 100644 packages/service-directory-api/build.gradle
 rename {admin-portal-api => packages/service-directory-api}/buildscript-gradle.lockfile (100%)
 create mode 100644 packages/service-directory-api/package.json
 create mode 100644 packages/service-directory-api/tsconfig.json
 create mode 100644 packages/service-directory-api/tsup.config.ts
 create mode 100644 packages/travel-medicine-api/.gitignore
 create mode 100644 packages/travel-medicine-api/build.gradle
 create mode 100644 packages/travel-medicine-api/buildscript-gradle.lockfile
 create mode 100644 packages/travel-medicine-api/package.json
 create mode 100644 packages/travel-medicine-api/tsconfig.json
 create mode 100644 packages/travel-medicine-api/tsup.config.ts

diff --git a/admin-portal-api/.gitignore b/admin-portal-api/.gitignore
deleted file mode 100644
index 39f8bdd3b..000000000
--- a/admin-portal-api/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-src/**
diff --git a/admin-portal-api/build.gradle b/admin-portal-api/build.gradle
deleted file mode 100644
index 65b2bfd48..000000000
--- a/admin-portal-api/build.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-plugins {
-  id 'openapi-generator'
-}
-
-def backendDir = rootProject.layout.projectDirectory.dir('backend')
-
-openapiGenerator {
-  inputSpecs = [
-    'serviceDirectory'  : backendDir.file('service-directory/openApi.yaml')
-  ]
-}
diff --git a/admin-portal-api/package.json b/admin-portal-api/package.json
deleted file mode 100644
index 83ae83555..000000000
--- a/admin-portal-api/package.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-  "name": "@eshg/admin-portal-api",
-  "version": "0.0.1",
-  "type": "module",
-  "private": true,
-  "exports": {
-    "./*": "./build/dist/src/*/index.js"
-  }
-}
diff --git a/admin-portal-api/tsconfig.json b/admin-portal-api/tsconfig.json
deleted file mode 100644
index f3bf745a5..000000000
--- a/admin-portal-api/tsconfig.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "extends": "../config/tsconfig.lib-legacy.json"
-}
diff --git a/admin-portal/gradleDependencies.json b/admin-portal/gradleDependencies.json
index 5f7d1f2b7..3876a925c 100644
--- a/admin-portal/gradleDependencies.json
+++ b/admin-portal/gradleDependencies.json
@@ -1,3 +1,3 @@
 {
-  "dependencies": [":admin-portal-api", ":lib-portal"]
+  "dependencies": [":lib-portal", ":service-directory-api"]
 }
diff --git a/admin-portal/package.json b/admin-portal/package.json
index ece649031..979659cf0 100644
--- a/admin-portal/package.json
+++ b/admin-portal/package.json
@@ -6,8 +6,8 @@
   "dependencies": {
     "@emotion/react": "catalog:joy",
     "@emotion/styled": "catalog:joy",
-    "@eshg/admin-portal-api": "workspace:*",
     "@eshg/lib-portal": "workspace:*",
+    "@eshg/service-directory-api": "workspace:*",
     "@fontsource/poppins": "catalog:joy",
     "@mui/icons-material": "catalog:joy",
     "@mui/joy": "catalog:joy",
diff --git a/admin-portal/src/lib/api/clients.ts b/admin-portal/src/lib/api/clients.ts
index 2a664d342..97d9f4155 100644
--- a/admin-portal/src/lib/api/clients.ts
+++ b/admin-portal/src/lib/api/clients.ts
@@ -9,7 +9,7 @@ import {
   HTTPHeaders,
   Middleware,
   ServiceDirectoryAdminApi,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 
 import { setAdminName } from "@/lib/helpers/adminName";
 
diff --git a/admin-portal/src/lib/components/button/CertificateDialogButton.tsx b/admin-portal/src/lib/components/button/CertificateDialogButton.tsx
index ce472e63c..fd33d9f81 100644
--- a/admin-portal/src/lib/components/button/CertificateDialogButton.tsx
+++ b/admin-portal/src/lib/components/button/CertificateDialogButton.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAdminCertificate } from "@eshg/admin-portal-api/serviceDirectory";
+import { ApiAdminCertificate } from "@eshg/service-directory-api";
 import {
   Button,
   DialogTitle,
diff --git a/admin-portal/src/lib/components/table/addEditColumns.tsx b/admin-portal/src/lib/components/table/addEditColumns.tsx
index e48c7d310..b8e31ae02 100644
--- a/admin-portal/src/lib/components/table/addEditColumns.tsx
+++ b/admin-portal/src/lib/components/table/addEditColumns.tsx
@@ -7,7 +7,7 @@ import {
   ApiAdminStagedEntityType,
   ApiGetOrgUnitsResponse,
   ApiStagingStatus,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 import { Add, Delete, Edit, Save, Undo } from "@mui/icons-material";
 import Done from "@mui/icons-material/Done";
 import ModeEdit from "@mui/icons-material/ModeEdit";
diff --git a/admin-portal/src/lib/components/table/cell/ActorSelectorCell.tsx b/admin-portal/src/lib/components/table/cell/ActorSelectorCell.tsx
index 665b8a3af..17c3c4724 100644
--- a/admin-portal/src/lib/components/table/cell/ActorSelectorCell.tsx
+++ b/admin-portal/src/lib/components/table/cell/ActorSelectorCell.tsx
@@ -8,7 +8,7 @@ import {
   ApiAdminActorType,
   ApiAdminOrgUnitType,
   ApiFederalState,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 import { Autocomplete, Select, SelectProps, Stack } from "@mui/joy";
 import { CellContext } from "@tanstack/react-table";
 import { ReactNode, useCallback, useMemo } from "react";
diff --git a/admin-portal/src/lib/components/table/cell/AuditCell.tsx b/admin-portal/src/lib/components/table/cell/AuditCell.tsx
index 1e376926a..676854f2d 100644
--- a/admin-portal/src/lib/components/table/cell/AuditCell.tsx
+++ b/admin-portal/src/lib/components/table/cell/AuditCell.tsx
@@ -6,7 +6,7 @@
 import {
   ApiAdminActorSelector,
   ApiAdminCertificate,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 import { CellContext } from "@tanstack/react-table";
 import { ReactNode } from "react";
 import { isDeepEqual } from "remeda";
diff --git a/admin-portal/src/lib/components/table/cell/CertificateCell.tsx b/admin-portal/src/lib/components/table/cell/CertificateCell.tsx
index d915ec84a..f462e1f0d 100644
--- a/admin-portal/src/lib/components/table/cell/CertificateCell.tsx
+++ b/admin-portal/src/lib/components/table/cell/CertificateCell.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAdminCertificate } from "@eshg/admin-portal-api/serviceDirectory";
+import { ApiAdminCertificate } from "@eshg/service-directory-api";
 import { CellContext } from "@tanstack/react-table";
 import { ReactNode } from "react";
 
diff --git a/admin-portal/src/lib/components/table/cell/ColoredText.tsx b/admin-portal/src/lib/components/table/cell/ColoredText.tsx
index 6e80a5845..0d9f9fc51 100644
--- a/admin-portal/src/lib/components/table/cell/ColoredText.tsx
+++ b/admin-portal/src/lib/components/table/cell/ColoredText.tsx
@@ -8,7 +8,7 @@ import {
   ApiAdminCertificate,
   instanceOfApiAdminActorSelector,
   instanceOfApiAdminCertificate,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 import { ColorPaletteProp, Typography } from "@mui/joy";
 import { ReactNode } from "react";
 import { isObjectType } from "remeda";
diff --git a/admin-portal/src/lib/components/table/cell/EditableCertificateCell.tsx b/admin-portal/src/lib/components/table/cell/EditableCertificateCell.tsx
index fde970107..5c9467ea0 100644
--- a/admin-portal/src/lib/components/table/cell/EditableCertificateCell.tsx
+++ b/admin-portal/src/lib/components/table/cell/EditableCertificateCell.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAdminCertificate } from "@eshg/admin-portal-api/serviceDirectory";
 import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+import { ApiAdminCertificate } from "@eshg/service-directory-api";
 import { Add, AddModerator } from "@mui/icons-material";
 import { IconButton, styled } from "@mui/joy";
 import { CellContext } from "@tanstack/react-table";
diff --git a/admin-portal/src/lib/components/table/cell/EditableEnumCell.tsx b/admin-portal/src/lib/components/table/cell/EditableEnumCell.tsx
index 0faf65300..69a0b7e9c 100644
--- a/admin-portal/src/lib/components/table/cell/EditableEnumCell.tsx
+++ b/admin-portal/src/lib/components/table/cell/EditableEnumCell.tsx
@@ -7,7 +7,7 @@ import {
   ApiAdminActorType,
   ApiAdminOrgUnitType,
   ApiFederalState,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 import { FormControl, Select } from "@mui/joy";
 import { CellContext } from "@tanstack/react-table";
 import { ReactNode, useCallback } from "react";
diff --git a/admin-portal/src/lib/components/table/cell/ForeignKeyCell.tsx b/admin-portal/src/lib/components/table/cell/ForeignKeyCell.tsx
index 65538947e..c1fe60ccf 100644
--- a/admin-portal/src/lib/components/table/cell/ForeignKeyCell.tsx
+++ b/admin-portal/src/lib/components/table/cell/ForeignKeyCell.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAdminActor } from "@eshg/admin-portal-api/serviceDirectory";
+import { ApiAdminActor } from "@eshg/service-directory-api";
 import { Chip, Stack, Tooltip, styled } from "@mui/joy";
 import { CellContext } from "@tanstack/react-table";
 import { ReactNode } from "react";
diff --git a/admin-portal/src/lib/components/table/cell/MetadataCell.tsx b/admin-portal/src/lib/components/table/cell/MetadataCell.tsx
index cbd7e2c5f..16f3eb061 100644
--- a/admin-portal/src/lib/components/table/cell/MetadataCell.tsx
+++ b/admin-portal/src/lib/components/table/cell/MetadataCell.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAdminActorMetadata } from "@eshg/admin-portal-api/serviceDirectory";
+import { ApiAdminActorMetadata } from "@eshg/service-directory-api";
 import { styled } from "@mui/joy";
 import { CellContext } from "@tanstack/react-table";
 import { ReactNode } from "react";
diff --git a/admin-portal/src/lib/components/table/cell/StaticActorSelectorCell.tsx b/admin-portal/src/lib/components/table/cell/StaticActorSelectorCell.tsx
index 42e25d9b1..5d57497bb 100644
--- a/admin-portal/src/lib/components/table/cell/StaticActorSelectorCell.tsx
+++ b/admin-portal/src/lib/components/table/cell/StaticActorSelectorCell.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAdminActorSelector } from "@eshg/admin-portal-api/serviceDirectory";
+import { ApiAdminActorSelector } from "@eshg/service-directory-api";
 import { Stack } from "@mui/joy";
 import { CellContext } from "@tanstack/react-table";
 
diff --git a/admin-portal/src/lib/components/view/actors/ActorTable.tsx b/admin-portal/src/lib/components/view/actors/ActorTable.tsx
index 6c1dd92bf..27e313ab5 100644
--- a/admin-portal/src/lib/components/view/actors/ActorTable.tsx
+++ b/admin-portal/src/lib/components/view/actors/ActorTable.tsx
@@ -12,7 +12,7 @@ import {
   ApiAdminStagedEntityAdminPartialActor,
   ApiAdminStagedEntityType,
   ApiGetOrgUnitsResponse,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 import { createColumnHelper, filterFns } from "@tanstack/react-table";
 import { useMemo } from "react";
 
diff --git a/admin-portal/src/lib/components/view/audit-log/AuditHistory.tsx b/admin-portal/src/lib/components/view/audit-log/AuditHistory.tsx
index 636e4bfaf..b9700667f 100644
--- a/admin-portal/src/lib/components/view/audit-log/AuditHistory.tsx
+++ b/admin-portal/src/lib/components/view/audit-log/AuditHistory.tsx
@@ -15,7 +15,7 @@ import {
   ApiPairAdminPartialActor,
   ApiPairAdminPartialOrgUnit,
   ApiPairAdminPartialRule,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 import { Stack, Typography } from "@mui/joy";
 import { TFunction } from "i18next";
 import { isEmpty } from "remeda";
diff --git a/admin-portal/src/lib/components/view/audit-log/AuditLog.tsx b/admin-portal/src/lib/components/view/audit-log/AuditLog.tsx
index fcfbdaed1..3f152d092 100644
--- a/admin-portal/src/lib/components/view/audit-log/AuditLog.tsx
+++ b/admin-portal/src/lib/components/view/audit-log/AuditLog.tsx
@@ -5,7 +5,7 @@
 
 "use client";
 
-import { ApiAdminRevision } from "@eshg/admin-portal-api/serviceDirectory";
+import { ApiAdminRevision } from "@eshg/service-directory-api";
 import { FileDownloadOutlined } from "@mui/icons-material";
 import { Button, Divider, Stack } from "@mui/joy";
 import { useSearchParams } from "next/navigation";
diff --git a/admin-portal/src/lib/components/view/audit-log/tables/AuditActorMetadataTable.tsx b/admin-portal/src/lib/components/view/audit-log/tables/AuditActorMetadataTable.tsx
index 3f28fa248..eb3627a44 100644
--- a/admin-portal/src/lib/components/view/audit-log/tables/AuditActorMetadataTable.tsx
+++ b/admin-portal/src/lib/components/view/audit-log/tables/AuditActorMetadataTable.tsx
@@ -5,7 +5,7 @@
 
 "use client";
 
-import { ApiPairAdminActorMetadata } from "@eshg/admin-portal-api/serviceDirectory";
+import { ApiPairAdminActorMetadata } from "@eshg/service-directory-api";
 import { createColumnHelper } from "@tanstack/react-table";
 
 import { AuditCell } from "@/lib/components/table/cell/AuditCell";
diff --git a/admin-portal/src/lib/components/view/audit-log/tables/AuditActorTable.tsx b/admin-portal/src/lib/components/view/audit-log/tables/AuditActorTable.tsx
index b9b70d719..1bb85c60f 100644
--- a/admin-portal/src/lib/components/view/audit-log/tables/AuditActorTable.tsx
+++ b/admin-portal/src/lib/components/view/audit-log/tables/AuditActorTable.tsx
@@ -9,7 +9,7 @@ import {
   ApiAdminActorType,
   ApiAdminCertificate,
   ApiPairAdminPartialActor,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 import { createColumnHelper } from "@tanstack/react-table";
 
 import { AuditCell } from "@/lib/components/table/cell/AuditCell";
diff --git a/admin-portal/src/lib/components/view/audit-log/tables/AuditOrgUnitTable.tsx b/admin-portal/src/lib/components/view/audit-log/tables/AuditOrgUnitTable.tsx
index 0c3017f6a..76dd25487 100644
--- a/admin-portal/src/lib/components/view/audit-log/tables/AuditOrgUnitTable.tsx
+++ b/admin-portal/src/lib/components/view/audit-log/tables/AuditOrgUnitTable.tsx
@@ -9,7 +9,7 @@ import {
   ApiAdminOrgUnitType,
   ApiFederalState,
   ApiPairAdminPartialOrgUnit,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 import { createColumnHelper } from "@tanstack/react-table";
 
 import { AuditCell } from "@/lib/components/table/cell/AuditCell";
diff --git a/admin-portal/src/lib/components/view/audit-log/tables/AuditRuleTable.tsx b/admin-portal/src/lib/components/view/audit-log/tables/AuditRuleTable.tsx
index 84d8e2f3e..67195b25e 100644
--- a/admin-portal/src/lib/components/view/audit-log/tables/AuditRuleTable.tsx
+++ b/admin-portal/src/lib/components/view/audit-log/tables/AuditRuleTable.tsx
@@ -8,7 +8,7 @@
 import {
   ApiAdminActorSelector,
   ApiPairAdminPartialRule,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 import { createColumnHelper } from "@tanstack/react-table";
 
 import { AuditCell } from "@/lib/components/table/cell/AuditCell";
diff --git a/admin-portal/src/lib/components/view/org-units/OrgUnitTable.tsx b/admin-portal/src/lib/components/view/org-units/OrgUnitTable.tsx
index 229e88a5a..b6697bb78 100644
--- a/admin-portal/src/lib/components/view/org-units/OrgUnitTable.tsx
+++ b/admin-portal/src/lib/components/view/org-units/OrgUnitTable.tsx
@@ -12,7 +12,7 @@ import {
   ApiFederalState,
   ApiGetOrgUnitsResponse,
   ApiOrgUnitType,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 import { createColumnHelper, filterFns } from "@tanstack/react-table";
 import { useMemo } from "react";
 
diff --git a/admin-portal/src/lib/components/view/rules/RuleTable.tsx b/admin-portal/src/lib/components/view/rules/RuleTable.tsx
index 8495014c6..1815711f8 100644
--- a/admin-portal/src/lib/components/view/rules/RuleTable.tsx
+++ b/admin-portal/src/lib/components/view/rules/RuleTable.tsx
@@ -9,7 +9,7 @@ import {
   ApiAdminStagedEntityAdminPartialRule,
   ApiAdminStagedEntityType,
   ApiGetRulesResponse,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 import { createColumnHelper, filterFns } from "@tanstack/react-table";
 import { useMemo } from "react";
 
diff --git a/admin-portal/src/lib/components/view/service-directory/ServiceDirectoryConfiguration.tsx b/admin-portal/src/lib/components/view/service-directory/ServiceDirectoryConfiguration.tsx
index 71ad1e163..ab46f1680 100644
--- a/admin-portal/src/lib/components/view/service-directory/ServiceDirectoryConfiguration.tsx
+++ b/admin-portal/src/lib/components/view/service-directory/ServiceDirectoryConfiguration.tsx
@@ -5,7 +5,7 @@
 
 "use client";
 
-import { ApiGetOrgUnitsResponse } from "@eshg/admin-portal-api/serviceDirectory";
+import { ApiGetOrgUnitsResponse } from "@eshg/service-directory-api";
 import { useMemo, useState } from "react";
 
 import { PageContent } from "@/lib/components/view/PageContent";
diff --git a/admin-portal/src/lib/components/view/service-directory/dataTransfer/ExportContent.tsx b/admin-portal/src/lib/components/view/service-directory/dataTransfer/ExportContent.tsx
index 07c81c42a..3ddb7feba 100644
--- a/admin-portal/src/lib/components/view/service-directory/dataTransfer/ExportContent.tsx
+++ b/admin-portal/src/lib/components/view/service-directory/dataTransfer/ExportContent.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiExportResponse } from "@eshg/admin-portal-api/serviceDirectory";
+import { ApiExportResponse } from "@eshg/service-directory-api";
 import { FileDownloadOutlined } from "@mui/icons-material";
 import { Button } from "@mui/joy";
 import { useCallback } from "react";
diff --git a/admin-portal/src/lib/components/view/service-directory/dataTransfer/ImportContent.tsx b/admin-portal/src/lib/components/view/service-directory/dataTransfer/ImportContent.tsx
index f2d21cffb..c7626360d 100644
--- a/admin-portal/src/lib/components/view/service-directory/dataTransfer/ImportContent.tsx
+++ b/admin-portal/src/lib/components/view/service-directory/dataTransfer/ImportContent.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiImportRequest } from "@eshg/admin-portal-api/serviceDirectory";
 import { FormPlus } from "@eshg/lib-portal/components/form/FormPlus";
+import { ApiImportRequest } from "@eshg/service-directory-api";
 import { Typography } from "@mui/joy";
 import { Formik, FormikHelpers } from "formik";
 import { Dispatch, SetStateAction, useState } from "react";
diff --git a/admin-portal/src/lib/helpers/actorSelector.ts b/admin-portal/src/lib/helpers/actorSelector.ts
index 4c23d4fbb..3db2e1d99 100644
--- a/admin-portal/src/lib/helpers/actorSelector.ts
+++ b/admin-portal/src/lib/helpers/actorSelector.ts
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAdminActorSelector } from "@eshg/admin-portal-api/serviceDirectory";
+import { ApiAdminActorSelector } from "@eshg/service-directory-api";
 
 import { PartialActorWithId } from "@/lib/components/view/actors/ActorTable";
 import { PartialOrgUnitWithId, useOrgUnitsById } from "@/lib/hooks/useOrgUnits";
diff --git a/admin-portal/src/lib/helpers/entities.ts b/admin-portal/src/lib/helpers/entities.ts
index b6954d5f5..cc174d14e 100644
--- a/admin-portal/src/lib/helpers/entities.ts
+++ b/admin-portal/src/lib/helpers/entities.ts
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAdminStagedEntityType } from "@eshg/admin-portal-api/serviceDirectory";
+import { ApiAdminStagedEntityType } from "@eshg/service-directory-api";
 import { FunctionComponent, ReactNode } from "react";
 
 import { OverridableTableRowProps } from "@/lib/components/table/TableRow";
diff --git a/admin-portal/src/lib/helpers/entityFilter.ts b/admin-portal/src/lib/helpers/entityFilter.ts
index ef5d7fc2c..935e86efb 100644
--- a/admin-portal/src/lib/helpers/entityFilter.ts
+++ b/admin-portal/src/lib/helpers/entityFilter.ts
@@ -8,7 +8,7 @@ import {
   instanceOfApiAdminStagedEntityAdminPartialActor,
   instanceOfApiAdminStagedEntityAdminPartialOrgUnit,
   instanceOfApiAdminStagedEntityAdminPartialRule,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 import { Row } from "@tanstack/react-table";
 
 import { useEditableTable } from "@/lib/components/table/context/TableEditContext";
diff --git a/admin-portal/src/lib/helpers/entityToString.ts b/admin-portal/src/lib/helpers/entityToString.ts
index b41478496..d5dc1b4e7 100644
--- a/admin-portal/src/lib/helpers/entityToString.ts
+++ b/admin-portal/src/lib/helpers/entityToString.ts
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAdminActorSelector } from "@eshg/admin-portal-api/serviceDirectory";
+import { ApiAdminActorSelector } from "@eshg/service-directory-api";
 
 import { formatActorSelector } from "@/lib/components/table/cell/StaticActorSelectorCell";
 
diff --git a/admin-portal/src/lib/hooks/useActors.ts b/admin-portal/src/lib/hooks/useActors.ts
index dce3e28a1..cdc86ee27 100644
--- a/admin-portal/src/lib/hooks/useActors.ts
+++ b/admin-portal/src/lib/hooks/useActors.ts
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAdminStagedEntityType } from "@eshg/admin-portal-api/serviceDirectory";
+import { ApiAdminStagedEntityType } from "@eshg/service-directory-api";
 import { useMemo } from "react";
 
 import { PartialActorWithId } from "@/lib/components/view/actors/ActorTable";
diff --git a/admin-portal/src/lib/hooks/useActorsApi.ts b/admin-portal/src/lib/hooks/useActorsApi.ts
index dc35323a8..ead7330d5 100644
--- a/admin-portal/src/lib/hooks/useActorsApi.ts
+++ b/admin-portal/src/lib/hooks/useActorsApi.ts
@@ -6,7 +6,7 @@
 import {
   ApiAdminPartialActor,
   ApiStagingStatus,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 import { useMutation, useQueryClient } from "@tanstack/react-query";
 import { useCallback } from "react";
 
diff --git a/admin-portal/src/lib/hooks/useAuditLogs.ts b/admin-portal/src/lib/hooks/useAuditLogs.ts
index 3c01a5a94..eb943f479 100644
--- a/admin-portal/src/lib/hooks/useAuditLogs.ts
+++ b/admin-portal/src/lib/hooks/useAuditLogs.ts
@@ -6,7 +6,7 @@
 import {
   ApiExportResponse,
   ServiceDirectoryAdminApi,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 import { useQuery } from "@tanstack/react-query";
 import { useMemo } from "react";
 
diff --git a/admin-portal/src/lib/hooks/useOrgUnits.ts b/admin-portal/src/lib/hooks/useOrgUnits.ts
index 0fe921f53..3022d5767 100644
--- a/admin-portal/src/lib/hooks/useOrgUnits.ts
+++ b/admin-portal/src/lib/hooks/useOrgUnits.ts
@@ -12,7 +12,7 @@ import {
   ApiAdminStagedEntityType,
   ApiGetOrgUnitsResponse,
   ServiceDirectoryAdminApi,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 import { useQuery } from "@tanstack/react-query";
 import { useMemo } from "react";
 import { prop, sortBy } from "remeda";
diff --git a/admin-portal/src/lib/hooks/useOrgUnitsApi.ts b/admin-portal/src/lib/hooks/useOrgUnitsApi.ts
index 784aee6bd..184817ff9 100644
--- a/admin-portal/src/lib/hooks/useOrgUnitsApi.ts
+++ b/admin-portal/src/lib/hooks/useOrgUnitsApi.ts
@@ -6,7 +6,7 @@
 import {
   ApiAdminPartialOrgUnit,
   ApiStagingStatus,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 import { useMutation, useQueryClient } from "@tanstack/react-query";
 import { useCallback } from "react";
 
diff --git a/admin-portal/src/lib/hooks/useRules.ts b/admin-portal/src/lib/hooks/useRules.ts
index 07db0769d..38c8fc539 100644
--- a/admin-portal/src/lib/hooks/useRules.ts
+++ b/admin-portal/src/lib/hooks/useRules.ts
@@ -11,7 +11,7 @@ import {
   ApiAdminStagedEntityAdminPartialRule,
   ApiGetRulesResponse,
   ServiceDirectoryAdminApi,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 import { useQuery } from "@tanstack/react-query";
 import { prop, sortBy } from "remeda";
 
diff --git a/admin-portal/src/lib/hooks/useRulesApi.ts b/admin-portal/src/lib/hooks/useRulesApi.ts
index f3004f4f2..d3aa5a95f 100644
--- a/admin-portal/src/lib/hooks/useRulesApi.ts
+++ b/admin-portal/src/lib/hooks/useRulesApi.ts
@@ -6,7 +6,7 @@
 import {
   ApiAdminPartialRule,
   ApiStagingStatus,
-} from "@eshg/admin-portal-api/serviceDirectory";
+} from "@eshg/service-directory-api";
 import { useMutation, useQueryClient } from "@tanstack/react-query";
 import { useCallback } from "react";
 
diff --git a/backend/auditlog/build.gradle b/backend/auditlog/build.gradle
index 6d88344dc..fd79517ce 100644
--- a/backend/auditlog/build.gradle
+++ b/backend/auditlog/build.gradle
@@ -21,8 +21,6 @@ dependencies {
     testImplementation testFixtures(project(':business-module-commons'))
     testImplementation testFixtures(project(':business-module-persistence-commons'))
 
-    testImplementation 'org.testcontainers:junit-jupiter'
-    testImplementation 'org.testcontainers:postgresql'
     testImplementation 'org.springdoc:springdoc-openapi-starter-common:latest.release'
 }
 
diff --git a/backend/auditlog/gradle.lockfile b/backend/auditlog/gradle.lockfile
index 0b884e99d..5a0bee602 100644
--- a/backend/auditlog/gradle.lockfile
+++ b/backend/auditlog/gradle.lockfile
@@ -196,10 +196,9 @@ org.springframework:spring-test:6.2.1=testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-tx:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-web:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-webmvc:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-org.testcontainers:database-commons:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:jdbc:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:junit-jupiter:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:postgresql:1.20.4=testCompileClasspath,testRuntimeClasspath
+org.testcontainers:database-commons:1.20.4=testRuntimeClasspath
+org.testcontainers:jdbc:1.20.4=testRuntimeClasspath
+org.testcontainers:postgresql:1.20.4=testRuntimeClasspath
 org.testcontainers:testcontainers:1.20.4=testCompileClasspath,testRuntimeClasspath
 org.verapdf:core-jakarta:1.26.5=productionRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
 org.verapdf:feature-reporting-jakarta:1.26.5=productionRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
diff --git a/backend/auditlog/openApi.json b/backend/auditlog/openApi.json
new file mode 100644
index 000000000..7f33ad0a4
--- /dev/null
+++ b/backend/auditlog/openApi.json
@@ -0,0 +1,865 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is the API for the auditlog service",
+    "title" : "Auditlog Service API",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8094"
+  } ],
+  "paths" : {
+    "/auditlog" : {
+      "get" : {
+        "operationId" : "readAuditLogFile",
+        "parameters" : [ {
+          "in" : "header",
+          "name" : "decryption-key",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "source",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/AuditLogSource"
+          }
+        }, {
+          "in" : "query",
+          "name" : "date",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Decrypt and read an auditlog file for a service of a certain date.",
+        "tags" : [ "AuditLog" ]
+      },
+      "post" : {
+        "description" : "POST operation to add an auditlog file for a service.",
+        "operationId" : "addAuditlogFile",
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "addAuditLogFileRequest" : {
+                    "$ref" : "#/components/schemas/AddAuditLogFileRequest"
+                  },
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  }
+                },
+                "required" : [ "addAuditLogFileRequest", "file" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add an auditlog file for a service",
+        "tags" : [ "AuditLog" ]
+      }
+    },
+    "/auditlog/accessible" : {
+      "get" : {
+        "operationId" : "getAccessibleAuditLogs",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAccessibleAuditLogsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "List all audit log files accessible to the current user.",
+        "tags" : [ "AuditLog" ]
+      }
+    },
+    "/auditlog/available" : {
+      "get" : {
+        "operationId" : "getAvailableLogs",
+        "parameters" : [ {
+          "description" : "Filter logic:\n    - If `source` is submitted, only audit logs from the specified sources are returned.\n    - If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "source",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AuditLogSource"
+            }
+          }
+        }, {
+          "description" : "Can only be used in combination with endDate.\n\nFilter logic:\n- If `startDate` and `endDate` are submitted, only audit logs within the specified period are returned.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "startDate",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Can only be used in combination with startDate.\n\nFilter logic:\n- If `startDate` and `endDate` are submitted, only audit logs within the specified period are returned.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "endDate",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAvailableAuditLogsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a list of all available logs.",
+        "tags" : [ "AuditLog" ]
+      }
+    },
+    "/auditlog/grant-access" : {
+      "get" : {
+        "operationId" : "getAuditLogGrantedAccesses",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "source",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/AuditLogSource"
+          }
+        }, {
+          "in" : "query",
+          "name" : "date",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAuditLogGrantedAccessesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "List all granted accesses of audit log.",
+        "tags" : [ "AuditLog" ]
+      },
+      "post" : {
+        "operationId" : "grantAuditLogAccess",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GrantAuditLogAccessRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Grant access to an auditlog file for a service of a certain date to a certain user.",
+        "tags" : [ "AuditLog" ]
+      }
+    },
+    "/auditlog/grantees-candidates" : {
+      "get" : {
+        "operationId" : "getAuditLogGranteesCandidates",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "source",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/AuditLogSource"
+          }
+        }, {
+          "in" : "query",
+          "name" : "date",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetUsersResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "List all user candidates for audit log grant access.",
+        "tags" : [ "AuditLog" ]
+      }
+    },
+    "/auditlog/key" : {
+      "get" : {
+        "operationId" : "getEncryptedSymmetricKey",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "source",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/AuditLogSource"
+          }
+        }, {
+          "in" : "query",
+          "name" : "date",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetEncryptedSymmetricKeyResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get user specific asymmetrically encrypted symmetric key.",
+        "tags" : [ "AuditLog" ]
+      }
+    },
+    "/test-helper/archiving-job" : {
+      "post" : {
+        "operationId" : "runArchivingJob",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/audit-log-storage" : {
+      "delete" : {
+        "operationId" : "clearAuditLogStorageDirectory",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "AccessibleAuditLog" : {
+        "required" : [ "auditLog", "expiresAt" ],
+        "type" : "object",
+        "properties" : {
+          "auditLog" : {
+            "$ref" : "#/components/schemas/AuditLog"
+          },
+          "expiresAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "AddAuditLogFileRequest" : {
+        "required" : [ "date", "source" ],
+        "type" : "object",
+        "properties" : {
+          "date" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "source" : {
+            "$ref" : "#/components/schemas/AuditLogSource"
+          }
+        }
+      },
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "AuditLog" : {
+        "required" : [ "date", "source" ],
+        "type" : "object",
+        "properties" : {
+          "date" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "source" : {
+            "$ref" : "#/components/schemas/AuditLogSource"
+          }
+        }
+      },
+      "AuditLogGrantedAccessCount" : {
+        "required" : [ "auditLog", "validGrantedAccessCount" ],
+        "type" : "object",
+        "properties" : {
+          "auditLog" : {
+            "$ref" : "#/components/schemas/AuditLog"
+          },
+          "validGrantedAccessCount" : {
+            "type" : "integer",
+            "description" : "Number of users having granted access",
+            "format" : "int32"
+          }
+        }
+      },
+      "AuditLogSource" : {
+        "type" : "string",
+        "enum" : [ "BASE", "INSPECTION", "SCHOOL_ENTRY", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY", "DENTAL", "AUDITLOG", "STATISTICS", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "GetAccessibleAuditLogsResponse" : {
+        "required" : [ "accessibleAuditLogs" ],
+        "type" : "object",
+        "properties" : {
+          "accessibleAuditLogs" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AccessibleAuditLog"
+            }
+          }
+        }
+      },
+      "GetAuditLogGrantedAccessesResponse" : {
+        "required" : [ "grantedAccesses", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "grantedAccesses" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GrantedAccess"
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetAvailableAuditLogsResponse" : {
+        "required" : [ "logs", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "logs" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AuditLogGrantedAccessCount"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetEncryptedSymmetricKeyResponse" : {
+        "required" : [ "encapsulatedKey", "encryptedSymmetricKey" ],
+        "type" : "object",
+        "properties" : {
+          "encapsulatedKey" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "byte"
+            }
+          },
+          "encryptedSymmetricKey" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "byte"
+            }
+          }
+        }
+      },
+      "GetUsersResponse" : {
+        "required" : [ "users" ],
+        "type" : "object",
+        "properties" : {
+          "users" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GrantAuditLogAccessRequest" : {
+        "required" : [ "date", "idsOfGrantedUser", "source" ],
+        "type" : "object",
+        "properties" : {
+          "date" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "idsOfGrantedUser" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "source" : {
+            "$ref" : "#/components/schemas/AuditLogSource"
+          }
+        }
+      },
+      "GrantedAccess" : {
+        "required" : [ "expiresAt", "idOfGrantedUser" ],
+        "type" : "object",
+        "properties" : {
+          "expiresAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "idOfGrantedUser" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      },
+      "User" : {
+        "required" : [ "enabled", "firstName", "lastName", "userId", "username" ],
+        "type" : "object",
+        "properties" : {
+          "email" : {
+            "type" : "string",
+            "description" : "The email address of a user.",
+            "example" : "example@mail.de"
+          },
+          "enabled" : {
+            "type" : "boolean",
+            "description" : "True, if the user can login",
+            "example" : false
+          },
+          "externalChatUsername" : {
+            "type" : "string",
+            "description" : "The chat username of the gematik TI-Messenger (matrix chat).",
+            "example" : "@username:server"
+          },
+          "firstName" : {
+            "type" : "string",
+            "description" : "The given name(s) of a user.",
+            "example" : "John"
+          },
+          "lastName" : {
+            "type" : "string",
+            "description" : "The last name of a user.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "type" : "string",
+            "description" : "The phone number of a user.",
+            "example" : "+491234567890"
+          },
+          "userId" : {
+            "type" : "string",
+            "description" : "The Id of the user.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "username" : {
+            "type" : "string",
+            "description" : "The username which is displayed in the application and can be used for the login.",
+            "example" : "testuser"
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/backend/auditlog/openApi.yaml b/backend/auditlog/openApi.yaml
deleted file mode 100644
index a464235cf..000000000
--- a/backend/auditlog/openApi.yaml
+++ /dev/null
@@ -1,696 +0,0 @@
-# Copyright 2025 cronn GmbH
-# SPDX-License-Identifier: Apache-2.0
-
-openapi: 3.0.1
-info:
-  description: This is the API for the auditlog service
-  title: Auditlog Service API
-  version: "0.1"
-servers:
-- url: http://localhost:8094
-paths:
-  /auditlog:
-    get:
-      operationId: readAuditLogFile
-      parameters:
-      - in: header
-        name: decryption-key
-        required: true
-        schema:
-          type: string
-      - in: query
-        name: source
-        required: true
-        schema:
-          $ref: "#/components/schemas/AuditLogSource"
-      - in: query
-        name: date
-        required: true
-        schema:
-          type: string
-          format: date
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Decrypt and read an auditlog file for a service of a certain date.
-      tags:
-      - AuditLog
-    post:
-      description: POST operation to add an auditlog file for a service.
-      operationId: addAuditlogFile
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                addAuditLogFileRequest:
-                  $ref: "#/components/schemas/AddAuditLogFileRequest"
-                file:
-                  type: string
-                  format: binary
-              required:
-              - addAuditLogFileRequest
-              - file
-      responses:
-        "200":
-          description: OK
-      summary: Add an auditlog file for a service
-      tags:
-      - AuditLog
-  /auditlog/accessible:
-    get:
-      operationId: getAccessibleAuditLogs
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAccessibleAuditLogsResponse"
-          description: OK
-      summary: List all audit log files accessible to the current user.
-      tags:
-      - AuditLog
-  /auditlog/available:
-    get:
-      operationId: getAvailableLogs
-      parameters:
-      - description: |
-          Filter logic:
-              - If `source` is submitted, only audit logs from the specified sources are returned.
-              - If not submitted, no filtering takes place
-        in: query
-        name: source
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/AuditLogSource"
-          uniqueItems: true
-      - description: |
-          Can only be used in combination with endDate.
-
-          Filter logic:
-          - If `startDate` and `endDate` are submitted, only audit logs within the specified period are returned.
-          - If not submitted, no filtering takes place
-        in: query
-        name: startDate
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Can only be used in combination with startDate.
-
-          Filter logic:
-          - If `startDate` and `endDate` are submitted, only audit logs within the specified period are returned.
-          - If not submitted, no filtering takes place
-        in: query
-        name: endDate
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 25
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAvailableAuditLogsResponse"
-          description: OK
-      summary: Get a list of all available logs.
-      tags:
-      - AuditLog
-  /auditlog/grant-access:
-    get:
-      operationId: getAuditLogGrantedAccesses
-      parameters:
-      - in: query
-        name: source
-        required: true
-        schema:
-          $ref: "#/components/schemas/AuditLogSource"
-      - in: query
-        name: date
-        required: true
-        schema:
-          type: string
-          format: date
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAuditLogGrantedAccessesResponse"
-          description: OK
-      summary: List all granted accesses of audit log.
-      tags:
-      - AuditLog
-    post:
-      operationId: grantAuditLogAccess
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GrantAuditLogAccessRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Grant access to an auditlog file for a service of a certain date to
-        a certain user.
-      tags:
-      - AuditLog
-  /auditlog/grantees-candidates:
-    get:
-      operationId: getAuditLogGranteesCandidates
-      parameters:
-      - in: query
-        name: source
-        required: true
-        schema:
-          $ref: "#/components/schemas/AuditLogSource"
-      - in: query
-        name: date
-        required: true
-        schema:
-          type: string
-          format: date
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetUsersResponse"
-          description: OK
-      summary: List all user candidates for audit log grant access.
-      tags:
-      - AuditLog
-  /auditlog/key:
-    get:
-      operationId: getEncryptedSymmetricKey
-      parameters:
-      - in: query
-        name: source
-        required: true
-        schema:
-          $ref: "#/components/schemas/AuditLogSource"
-      - in: query
-        name: date
-        required: true
-        schema:
-          type: string
-          format: date
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetEncryptedSymmetricKeyResponse"
-          description: OK
-      summary: Get user specific asymmetrically encrypted symmetric key.
-      tags:
-      - AuditLog
-  /test-helper/archiving-job:
-    post:
-      operationId: runArchivingJob
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/audit-log-storage:
-    delete:
-      operationId: clearAuditLogStorageDirectory
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-components:
-  schemas:
-    AccessibleAuditLog:
-      type: object
-      properties:
-        auditLog:
-          $ref: "#/components/schemas/AuditLog"
-        expiresAt:
-          type: string
-          format: date-time
-      required:
-      - auditLog
-      - expiresAt
-    AddAuditLogFileRequest:
-      type: object
-      properties:
-        date:
-          type: string
-          format: date
-        source:
-          $ref: "#/components/schemas/AuditLogSource"
-      required:
-      - date
-      - source
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    AuditLog:
-      type: object
-      properties:
-        date:
-          type: string
-          format: date
-        source:
-          $ref: "#/components/schemas/AuditLogSource"
-      required:
-      - date
-      - source
-    AuditLogGrantedAccessCount:
-      type: object
-      properties:
-        auditLog:
-          $ref: "#/components/schemas/AuditLog"
-        validGrantedAccessCount:
-          type: integer
-          format: int32
-          description: Number of users having granted access
-      required:
-      - auditLog
-      - validGrantedAccessCount
-    AuditLogSource:
-      type: string
-      enum:
-      - BASE
-      - INSPECTION
-      - SCHOOL_ENTRY
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY
-      - DENTAL
-      - AUDITLOG
-      - STATISTICS
-      - OFFICIAL_MEDICAL_SERVICE
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    GetAccessibleAuditLogsResponse:
-      type: object
-      properties:
-        accessibleAuditLogs:
-          type: array
-          items:
-            $ref: "#/components/schemas/AccessibleAuditLog"
-      required:
-      - accessibleAuditLogs
-    GetAuditLogGrantedAccessesResponse:
-      type: object
-      properties:
-        grantedAccesses:
-          type: array
-          items:
-            $ref: "#/components/schemas/GrantedAccess"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - grantedAccesses
-      - resolvedUsers
-    GetAvailableAuditLogsResponse:
-      type: object
-      properties:
-        logs:
-          type: array
-          items:
-            $ref: "#/components/schemas/AuditLogGrantedAccessCount"
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages
-      required:
-      - logs
-      - totalElements
-      - totalPages
-    GetEncryptedSymmetricKeyResponse:
-      type: object
-      properties:
-        encapsulatedKey:
-          type: array
-          items:
-            type: string
-            format: byte
-        encryptedSymmetricKey:
-          type: array
-          items:
-            type: string
-            format: byte
-      required:
-      - encapsulatedKey
-      - encryptedSymmetricKey
-    GetUsersResponse:
-      type: object
-      properties:
-        users:
-          type: array
-          items:
-            $ref: "#/components/schemas/User"
-      required:
-      - users
-    GrantAuditLogAccessRequest:
-      type: object
-      properties:
-        date:
-          type: string
-          format: date
-        idsOfGrantedUser:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-          uniqueItems: true
-        source:
-          $ref: "#/components/schemas/AuditLogSource"
-      required:
-      - date
-      - idsOfGrantedUser
-      - source
-    GrantedAccess:
-      type: object
-      properties:
-        expiresAt:
-          type: string
-          format: date-time
-        idOfGrantedUser:
-          type: string
-          format: uuid
-      required:
-      - expiresAt
-      - idOfGrantedUser
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
-    User:
-      type: object
-      properties:
-        email:
-          type: string
-          description: The email address of a user.
-          example: example@mail.de
-        enabled:
-          type: boolean
-          description: "True, if the user can login"
-          example: false
-        externalChatUsername:
-          type: string
-          description: The chat username of the gematik TI-Messenger (matrix chat).
-          example: '@username:server'
-        firstName:
-          type: string
-          description: The given name(s) of a user.
-          example: John
-        lastName:
-          type: string
-          description: The last name of a user.
-          example: Doe
-        phoneNumber:
-          type: string
-          description: The phone number of a user.
-          example: "+491234567890"
-        userId:
-          type: string
-          format: uuid
-          description: The Id of the user.
-          example: fe9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        username:
-          type: string
-          description: The username which is displayed in the application and can
-            be used for the login.
-          example: testuser
-      required:
-      - enabled
-      - firstName
-      - lastName
-      - userId
-      - username
diff --git a/backend/base-api/src/main/java/de/eshg/base/centralfile/PersonApi.java b/backend/base-api/src/main/java/de/eshg/base/centralfile/PersonApi.java
index a8b6b0806..b9cac5f65 100644
--- a/backend/base-api/src/main/java/de/eshg/base/centralfile/PersonApi.java
+++ b/backend/base-api/src/main/java/de/eshg/base/centralfile/PersonApi.java
@@ -6,6 +6,8 @@
 package de.eshg.base.centralfile;
 
 import de.eshg.base.centralfile.api.DeleteFileStatesRequest;
+import de.eshg.base.centralfile.api.GetFileStateIdsBulkRequest;
+import de.eshg.base.centralfile.api.GetFileStateIdsBulkResponse;
 import de.eshg.base.centralfile.api.GetFileStateIdsResponse;
 import de.eshg.base.centralfile.api.person.*;
 import de.eshg.rest.service.security.config.BaseUrls;
@@ -97,6 +99,14 @@ public interface PersonApi {
       @Parameter(description = "The Id of the File State of the Person.") @PathVariable("id")
           UUID id);
 
+  @PostExchange(FILE_STATES_URL + "/linked-ids")
+  @ApiResponse(responseCode = "200")
+  @Operation(
+      summary =
+          "Get the Ids of all other person file states associated with the reference person of the given file state")
+  GetFileStateIdsBulkResponse getPersonFileStateIdsAssociatedWithFileStates(
+      @Valid @RequestBody GetFileStateIdsBulkRequest request);
+
   @GetExchange(REFERENCE_URL + "/{id}/linked-ids")
   @ApiResponse(responseCode = "200")
   @Operation(
diff --git a/backend/base-api/src/main/java/de/eshg/base/centralfile/api/GetFileStateIdsBulkRequest.java b/backend/base-api/src/main/java/de/eshg/base/centralfile/api/GetFileStateIdsBulkRequest.java
new file mode 100644
index 000000000..ecb7a4772
--- /dev/null
+++ b/backend/base-api/src/main/java/de/eshg/base/centralfile/api/GetFileStateIdsBulkRequest.java
@@ -0,0 +1,15 @@
+/*
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package de.eshg.base.centralfile.api;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import java.util.List;
+import java.util.UUID;
+
+public record GetFileStateIdsBulkRequest(
+    @Schema(description = "A list of UUIDs to find associated file state ids for") @NotEmpty
+        List<UUID> fileStateIds) {}
diff --git a/backend/base-api/src/main/java/de/eshg/base/centralfile/api/GetFileStateIdsBulkResponse.java b/backend/base-api/src/main/java/de/eshg/base/centralfile/api/GetFileStateIdsBulkResponse.java
new file mode 100644
index 000000000..e08ffdf1b
--- /dev/null
+++ b/backend/base-api/src/main/java/de/eshg/base/centralfile/api/GetFileStateIdsBulkResponse.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package de.eshg.base.centralfile.api;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+public record GetFileStateIdsBulkResponse(
+    @Schema(description = "A map of UUIDs to lists of the associated file state ids")
+        @NotEmpty
+        @Valid
+        Map<UUID, @NotNull List<UUID>> fileStateIds) {}
diff --git a/backend/base-api/src/main/java/de/eshg/base/citizenuser/CitizenUserApi.java b/backend/base-api/src/main/java/de/eshg/base/citizenuser/CitizenUserApi.java
index fdbfafe69..bdb17254e 100644
--- a/backend/base-api/src/main/java/de/eshg/base/citizenuser/CitizenUserApi.java
+++ b/backend/base-api/src/main/java/de/eshg/base/citizenuser/CitizenUserApi.java
@@ -25,6 +25,6 @@ public interface CitizenUserApi {
 
   @GetExchange(BaseUrls.Base.CITIZEN_USER_SELF_URL)
   @ApiResponse(responseCode = "200")
-  @Operation(summary = "Get the name of the citizen user which is currently active")
+  @Operation(summary = "Get the attributes of the citizen user which is currently active")
   GetCitizenSelfUserResponse getCitizenSelfUser();
 }
diff --git a/backend/base-api/src/main/java/de/eshg/base/gdpr/GdprProcedureApi.java b/backend/base-api/src/main/java/de/eshg/base/gdpr/GdprProcedureApi.java
index 2b0f2f4bc..6eb9ef77a 100644
--- a/backend/base-api/src/main/java/de/eshg/base/gdpr/GdprProcedureApi.java
+++ b/backend/base-api/src/main/java/de/eshg/base/gdpr/GdprProcedureApi.java
@@ -23,6 +23,7 @@ import de.eshg.base.gdpr.api.GetGdprProceduresResponse;
 import de.eshg.base.gdpr.api.SetMatterOfConcernRequest;
 import de.eshg.base.gdpr.api.StartGdprProcedureRequest;
 import de.eshg.rest.service.security.config.BaseUrls;
+import de.eshg.rest.service.security.config.BaseUrls.Base;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.responses.ApiResponse;
@@ -38,15 +39,26 @@ import org.springframework.web.service.annotation.*;
 @HttpExchange(url = GdprProcedureApi.BASE_URL)
 public interface GdprProcedureApi {
   String BASE_URL = BaseUrls.Base.GDPR_PROCEDURE_API;
-  String REFRESH_URL_SUFFIX = "/{id}/refresh-status";
   String SELF_LINKED_GDPR_PROCEDURES = "/self/linked-gdpr-procedures";
+  String CITIZEN_PORTAL_URL = Base.GDPR_PROCEDURE_CITIZEN_PORTAL_URL;
+  String DOWNLOADS = Base.Gdpr.DOWNLOADS;
+  String FILE_STATE_IDS = Base.Gdpr.FILE_STATE_IDS;
+  String BY_ID = Base.Gdpr.BY_ID;
+  String DETAILS_PAGE = Base.Gdpr.DETAILS_PAGE;
+  String REPORT_DOCUMENT = Base.Gdpr.REPORT_DOCUMENT;
+  String MATTER_OF_CONCERN = Base.Gdpr.MATTER_OF_CONCERN;
+  String REFRESH_STATUS = Base.Gdpr.REFRESH_STATUS;
+  String START_PROCEDURE = Base.Gdpr.START_PROCEDURE;
+  String CANCEL_PROCEDURE = Base.Gdpr.CANCEL_PROCEDURE;
+  String CLOSE_PROCEDURE = Base.Gdpr.CLOSE_PROCEDURE;
+  String CENTRAL_FILE_DOWNLOAD_PACKAGE = Base.Gdpr.CENTRAL_FILE_DOWNLOAD_PACKAGE;
 
   @PostExchange
   @ApiResponse(responseCode = "200")
   @Operation(summary = "Add a GDPR procedure")
   GetGdprProcedureResponse addGdprProcedure(@RequestBody @Valid AddGdprProcedureRequest request);
 
-  @PostExchange(BaseUrls.Base.GDPR_PROCEDURE_CITIZEN_PORTAL_URL)
+  @PostExchange(CITIZEN_PORTAL_URL)
   @ApiResponse(responseCode = "200")
   @Operation(
       summary =
@@ -58,25 +70,25 @@ public interface GdprProcedureApi {
   GetGdprProcedureResponse addGdprProcedureFromCitizenPortal(
       @RequestBody @Valid AddGdprProcedureFromCitizenPortalRequest request);
 
-  @GetExchange(BaseUrls.Base.GDPR_PROCEDURE_CITIZEN_PORTAL_URL + SELF_LINKED_GDPR_PROCEDURES)
+  @GetExchange(CITIZEN_PORTAL_URL + SELF_LINKED_GDPR_PROCEDURES)
   @ApiResponse(responseCode = "200")
   @Operation(
       summary = "Get the GDPR procedures linked with the citizen user which is currently active")
   GetCitizenSelfUsersGdprProceduresResponse getCitizenSelfUserLinkedGdprProcedures();
 
-  @GetExchange("/{id}")
+  @GetExchange(BY_ID)
   @ApiResponse(responseCode = "200")
   @Operation(summary = "Get GDPR procedure by id")
   GetGdprProcedureResponse getGdprProcedure(
       @Parameter(description = "The Id of the GDPR procedure.") @PathVariable("id") UUID id);
 
-  @PostExchange(REFRESH_URL_SUFFIX)
+  @PostExchange(REFRESH_STATUS)
   @ApiResponse(responseCode = "200")
   @Operation(summary = "Refresh status of GDPR procedure.")
   GetGdprProcedureResponse refreshStatus(
       @Parameter(description = "The Id of the GDPR procedure.") @PathVariable("id") UUID id);
 
-  @GetExchange("/{id}/details-page")
+  @GetExchange(DETAILS_PAGE)
   @ApiResponse(responseCode = "200")
   @Operation(
       summary =
@@ -92,14 +104,14 @@ public interface GdprProcedureApi {
   GetGdprProceduresResponse getGdprProcedures(
       @InlineParameterObject @ParameterObject @Valid GdprProcedureFilterParameters parameters);
 
-  @PostExchange("/{id}")
+  @PostExchange(BY_ID)
   @ApiResponse(responseCode = "200")
   @Operation(summary = "Add central file id to GDPR procedure.")
   GetGdprProcedureResponse addCentralFileIdToGdprProcedure(
       @Parameter(description = "The Id of the GDPR procedure.") @PathVariable("id") UUID id,
       @RequestBody @Valid AddCentralFileIdToGdprProcedureRequest request);
 
-  @PutExchange("/{id}/matter-of-concern")
+  @PutExchange(MATTER_OF_CONCERN)
   @ApiResponse(responseCode = "200")
   @Operation(
       summary =
@@ -107,36 +119,36 @@ public interface GdprProcedureApi {
   void setMatterOfConcern(
       @PathVariable("id") UUID id, @RequestBody @Valid SetMatterOfConcernRequest request);
 
-  @PostExchange("/{id}/start-procedure")
+  @PostExchange(START_PROCEDURE)
   @ApiResponse(responseCode = "200")
   @Operation(summary = "Start the GDPR procedure")
   void startProcedure(
       @PathVariable("id") UUID id, @RequestBody @Valid StartGdprProcedureRequest request);
 
-  @PostExchange("/{id}/cancel-procedure")
+  @PostExchange(CANCEL_PROCEDURE)
   @ApiResponse(responseCode = "200")
   @Operation(summary = "Cancel the GDPR procedure")
   void cancelProcedure(
       @PathVariable("id") UUID id, @RequestBody @Valid CancelGdprProcedureRequest request);
 
-  @PostExchange("/{id}/close-procedure")
+  @PostExchange(CLOSE_PROCEDURE)
   @ApiResponse(responseCode = "200")
   @Operation(summary = "Close the GDPR procedure")
   void closeProcedure(
       @PathVariable("id") UUID id, @RequestBody @Valid CloseGdprProcedureRequest request);
 
-  @GetExchange("/{id}/fileStateIds")
+  @GetExchange(FILE_STATE_IDS)
   @ApiResponse(responseCode = "200")
   @Operation(summary = "Get file state ids of this gdpr procedure.")
   GetGdprProcedureFileStateIdsResponse getFileStateIds(
       @Parameter(description = "The Id of the GDPR procedure.") @PathVariable("id") UUID id);
 
-  @GetExchange("/{id}/report-document")
+  @GetExchange(REPORT_DOCUMENT)
   @ApiResponse(responseCode = "200")
   @Operation(summary = "Returns the relevant report as PDF for this GDPR Procedure.")
   ResponseEntity<Resource> getReportDocument(@PathVariable("id") UUID id);
 
-  @PostExchange("/{id}/downloads")
+  @PostExchange(DOWNLOADS)
   @ApiResponse(responseCode = "200")
   @Operation(
       summary =
@@ -144,14 +156,14 @@ public interface GdprProcedureApi {
   void addDownloads(
       @PathVariable("id") UUID id, @RequestBody @Valid AddGdprDownloadsRequest request);
 
-  @GetExchange("/{id}/downloads")
+  @GetExchange(DOWNLOADS)
   @ApiResponse(responseCode = "200")
   @Operation(
       summary =
           "Get list of download ids of GDPR-related documents or data of this GDPR procedure.")
   GetGdprDownloadsResponse getDownloads(@PathVariable("id") UUID id);
 
-  @DeleteExchange("/{id}/downloads")
+  @DeleteExchange(DOWNLOADS)
   @ApiResponse(responseCode = "200")
   @Operation(
       summary =
@@ -159,7 +171,7 @@ public interface GdprProcedureApi {
   void deleteDownloads(
       @PathVariable("id") UUID id, @RequestBody @Valid DeleteGdprDownloadsRequest request);
 
-  @GetExchange("/{id}/central-file-download-package")
+  @GetExchange(CENTRAL_FILE_DOWNLOAD_PACKAGE)
   @ApiResponse(responseCode = "200")
   @Operation(
       summary = "Get Gdpr Download Package of central files linked to given Gdpr Procedure Id")
diff --git a/backend/base/openApi.json b/backend/base/openApi.json
new file mode 100644
index 000000000..ebcab2c95
--- /dev/null
+++ b/backend/base/openApi.json
@@ -0,0 +1,11468 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is the api for the base module",
+    "title" : "Base Module Api",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8080"
+  } ],
+  "paths" : {
+    "/bundid-person-link" : {
+      "post" : {
+        "operationId" : "createBundIdPersonLink",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddBundIdPersonLinkRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Establish a link between a BundId user and a person",
+        "tags" : [ "BundIdPersonLink" ]
+      }
+    },
+    "/bundid-person-link/self/person" : {
+      "get" : {
+        "operationId" : "getReferencePersonLinkedToBundIdSelfUser",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetReferencePersonResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the reference person linked to the BUNDID user which is currently active",
+        "tags" : [ "BundIdPersonLink" ]
+      }
+    },
+    "/calendars" : {
+      "get" : {
+        "operationId" : "getCalendars",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "onlyGlobal",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean",
+            "default" : false
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetCalendarsResponse"
+                }
+              }
+            },
+            "description" : "Returns all/global calendars"
+          }
+        },
+        "summary" : "List all calendars",
+        "tags" : [ "Calendar" ]
+      }
+    },
+    "/calendars/events/base_event" : {
+      "post" : {
+        "operationId" : "addBaseEvent",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/BaseEventRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DetailedEvent"
+                }
+              }
+            },
+            "description" : "Returns the event with augmented attributes, eg. the id"
+          }
+        },
+        "summary" : "Add an event to a calendar",
+        "tags" : [ "CalendarEvent" ]
+      }
+    },
+    "/calendars/events/base_event/{eventId}" : {
+      "delete" : {
+        "operationId" : "deleteBaseEvent",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "eventId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Returned when the event was deleted"
+          }
+        },
+        "summary" : "Delete an event",
+        "tags" : [ "CalendarEvent" ]
+      },
+      "get" : {
+        "operationId" : "getBaseEvent",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "eventId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DetailedEvent"
+                }
+              }
+            },
+            "description" : "Returns the event"
+          }
+        },
+        "summary" : "Get an event",
+        "tags" : [ "CalendarEvent" ]
+      },
+      "put" : {
+        "operationId" : "updateBaseEvent",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "eventId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/BaseEventRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DetailedEvent"
+                }
+              }
+            },
+            "description" : "Returns the updated event"
+          }
+        },
+        "summary" : "Update an existing event in a calendar",
+        "tags" : [ "CalendarEvent" ]
+      }
+    },
+    "/calendars/events/blocking/bulk-get" : {
+      "post" : {
+        "description" : "The search by date is including events with timeRangeEnd = event.start and timeRangeStart = event.end",
+        "operationId" : "getBlockingEventsOfCalendars",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetBlockingEventsOfCalendarsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetBlockingEventsOfCalendarsResponse"
+                }
+              }
+            },
+            "description" : "Returns the blocking events in the time range"
+          }
+        },
+        "summary" : "Get all blocking events in the calendars",
+        "tags" : [ "CalendarEvent" ]
+      }
+    },
+    "/calendars/events/blocking/resources/bulk-get" : {
+      "post" : {
+        "description" : "The search by date is including events with timeRangeEnd = event.start and timeRangeStart = event.end",
+        "operationId" : "getBlockingEventsOfResourceCalendars",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetBlockingEventsOfResourcesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetBlockingEventsOfResourcesResponse"
+                }
+              }
+            },
+            "description" : "Returns the blocking events in the time range"
+          }
+        },
+        "summary" : "Get all blocking events in the calendars of the requested resources",
+        "tags" : [ "CalendarEvent" ]
+      }
+    },
+    "/calendars/events/bulk-get" : {
+      "post" : {
+        "operationId" : "getEventsWithTimeData",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetEventsWithTimeDataRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetEventsWithTimeDataResponse"
+                }
+              }
+            },
+            "description" : "Returns the events and a list of event ids which could not be found"
+          }
+        },
+        "summary" : "Get multiple events",
+        "tags" : [ "CalendarEvent" ]
+      }
+    },
+    "/calendars/events/business_module" : {
+      "post" : {
+        "operationId" : "addBusinessCaseEvent",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/BusinessCaseEventRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DetailedEvent"
+                }
+              }
+            },
+            "description" : "Returns the event with augmented attributes, eg. the id"
+          }
+        },
+        "summary" : "Add an event to multiple calendars, global calendars not allowed",
+        "tags" : [ "CalendarEvent" ]
+      }
+    },
+    "/calendars/events/business_module/{eventId}" : {
+      "delete" : {
+        "operationId" : "deleteBusinessCaseEvent",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "eventId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Returned when the event was deleted"
+          }
+        },
+        "summary" : "Delete an event",
+        "tags" : [ "CalendarEvent" ]
+      },
+      "get" : {
+        "operationId" : "getBusinessCaseEvent",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "eventId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetBusinessCaseEventResponse"
+                }
+              }
+            },
+            "description" : "Returns the event"
+          }
+        },
+        "summary" : "Get an event",
+        "tags" : [ "CalendarEvent" ]
+      },
+      "put" : {
+        "operationId" : "updateBusinessCaseEvent",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "eventId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/BusinessCaseEventRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DetailedEvent"
+                }
+              }
+            },
+            "description" : "Returns the updated event"
+          }
+        },
+        "summary" : "Update an existing event",
+        "tags" : [ "CalendarEvent" ]
+      }
+    },
+    "/calendars/global" : {
+      "post" : {
+        "operationId" : "addGlobalCalendar",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddGlobalCalendarRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GlobalCalendar"
+                }
+              }
+            },
+            "description" : "Returns the Calendar with augmented attributes, eg. the id"
+          }
+        },
+        "summary" : "Add a global calendar",
+        "tags" : [ "Calendar" ]
+      }
+    },
+    "/calendars/resource/bulk-get" : {
+      "post" : {
+        "operationId" : "getResourceCalendars",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetResourceCalendarsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetResourceCalendarsResponse"
+                }
+              }
+            },
+            "description" : "Returns links of calendar and resource id and a list of resource ids which could not be found"
+          }
+        },
+        "summary" : "Get multiple resource calendars",
+        "tags" : [ "Calendar" ]
+      }
+    },
+    "/calendars/resource/{resourceId}" : {
+      "get" : {
+        "operationId" : "getResourceCalendar",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "resourceId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ResourceCalendar"
+                }
+              }
+            },
+            "description" : "Returns the Calendar with augmented attributes, eg. the id"
+          }
+        },
+        "summary" : "Get a resource calendar",
+        "tags" : [ "Calendar" ]
+      }
+    },
+    "/calendars/user/bulk-get" : {
+      "post" : {
+        "operationId" : "getUserCalendars",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetUserCalendarsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetUserCalendarsResponse"
+                }
+              }
+            },
+            "description" : "Returns links of calendar and user id and a list of user ids which could not be found"
+          }
+        },
+        "summary" : "Get multiple user calendars",
+        "tags" : [ "Calendar" ]
+      }
+    },
+    "/calendars/user/relevant-calendars/self" : {
+      "get" : {
+        "operationId" : "getRelevantCalendarsForCurrentUser",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRelevantCalendarsResponse"
+                }
+              }
+            },
+            "description" : "Returns information about the calendar of the current user as well as calendars of users in relevant groups and global calendars"
+          }
+        },
+        "summary" : "Get the calendars relevant for the current user",
+        "tags" : [ "Calendar" ]
+      }
+    },
+    "/calendars/user/self" : {
+      "get" : {
+        "operationId" : "getCurrentUserCalendar",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/UserCalendar"
+                }
+              }
+            },
+            "description" : "Returns the Calendar with augmented attributes, eg. the id"
+          }
+        },
+        "summary" : "Get the user calendar of the current user",
+        "tags" : [ "Calendar" ]
+      }
+    },
+    "/calendars/{calendarId}/events" : {
+      "get" : {
+        "description" : "The search by date is including events with timeRangeEnd = event.start and timeRangeStart = event.end",
+        "operationId" : "getEventsOfCalendar",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "calendarId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetEventsOfCalendarResponse"
+                }
+              }
+            },
+            "description" : "Returns the events in the calendar"
+          }
+        },
+        "summary" : "Get all events in a calendar for a given time range",
+        "tags" : [ "CalendarEvent" ]
+      }
+    },
+    "/citizen-access-code-users/date-of-birth" : {
+      "post" : {
+        "operationId" : "addCitizenAccessCodeUserWithDateOfBirthCredential",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddCitizenAccessCodeUserWithDateOfBirthCredentialRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CitizenAccessCodeUser"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a new citizen access code user with a date of birth credential",
+        "tags" : [ "CitizenAccessCodeUser" ]
+      }
+    },
+    "/citizen-access-code-users/pin" : {
+      "post" : {
+        "operationId" : "addCitizenAccessCodeUserWithPinCredential",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddCitizenAccessCodeUserWithPinCredentialRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CitizenAccessCodeUser"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a new citizen access code user with a pin credential",
+        "tags" : [ "CitizenAccessCodeUser" ]
+      }
+    },
+    "/citizen-access-code-users/{id}" : {
+      "get" : {
+        "operationId" : "getCitizenAccessCodeUser",
+        "parameters" : [ {
+          "description" : "Id of the citizen user",
+          "example" : "UUID_1",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CitizenAccessCodeUser"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a citizen access code user",
+        "tags" : [ "CitizenAccessCodeUser" ]
+      }
+    },
+    "/citizen-access-code-users/{id}/delete" : {
+      "delete" : {
+        "operationId" : "deleteCitizenAccessCodeUser",
+        "parameters" : [ {
+          "description" : "Id of the citizen user",
+          "example" : "UUID_1",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete a citizen access code user",
+        "tags" : [ "CitizenAccessCodeUser" ]
+      }
+    },
+    "/citizen-access-code-users/{id}/verify" : {
+      "post" : {
+        "operationId" : "verifyCitizenAccessCodeUserCredentials",
+        "parameters" : [ {
+          "description" : "Id of the citizen user",
+          "example" : "UUID_1",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/VerifyCitizenAccessCodeUserCredentialsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Verify citizen access code user credentials",
+        "tags" : [ "CitizenAccessCodeUser" ]
+      }
+    },
+    "/citizen-users/self" : {
+      "get" : {
+        "operationId" : "getCitizenSelfUser",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetCitizenSelfUserResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the attributes of the citizen user which is currently active",
+        "tags" : [ "CitizenUser" ]
+      }
+    },
+    "/citizen-users/self/permissions" : {
+      "get" : {
+        "operationId" : "getCitizenSelfUserPermissions",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetCitizenPermissionsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the permissions of the user which is currently active",
+        "tags" : [ "CitizenUser" ]
+      }
+    },
+    "/contacts" : {
+      "get" : {
+        "operationId" : "getContacts",
+        "parameters" : [ {
+          "description" : "The full name of the Contact (or parts of it) which shall be searched for.",
+          "in" : "query",
+          "name" : "name",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "description" : "The street, as the main part of the address of a Contact, (or parts of it) which shall be searched for.",
+          "in" : "query",
+          "name" : "street",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "description" : "A filter for the possible types of Contacts.",
+          "in" : "query",
+          "name" : "type",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ContactType"
+          }
+        }, {
+          "description" : "A filter for the possible categories of Institutions.",
+          "in" : "query",
+          "name" : "categories",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ContactCategory"
+            }
+          }
+        }, {
+          "description" : "The parameter by which to sort.",
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ContactSortKey"
+          }
+        }, {
+          "description" : "The direction by which to sort.",
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "description" : "Part of pagination. Specifies the page of the paginated items that is returned in the response.",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "description" : "Part of pagination. Specifies the number of items which shall be on a single page. Only this amount of items is returned in the response.",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SearchContactsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : " Search contacts. Filter results by the optional parameters 'name', 'type', 'category', 'firstName' or 'street'.\n 'firstName' only exists in Contacts of type Person, so no Institutions can be found if it is set.\n In the same way, 'category' only exists in Contacts of type Institution, so no Person contacts can be found\n if it is set.\n Sort and page the results by default values or by optional parameters.\n",
+        "tags" : [ "Contact" ]
+      },
+      "post" : {
+        "operationId" : "addContact",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "oneOf" : [ {
+                  "$ref" : "#/components/schemas/AddInstitutionContactRequest"
+                }, {
+                  "$ref" : "#/components/schemas/AddPersonContactRequest"
+                } ]
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/InstitutionContact"
+                  }, {
+                    "$ref" : "#/components/schemas/PersonContact"
+                  } ]
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add a contact",
+        "tags" : [ "Contact" ]
+      }
+    },
+    "/contacts/bulk-get" : {
+      "post" : {
+        "operationId" : "getBulkContacts",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetContactsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetContactsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get contacts for provided ids in bulk.",
+        "tags" : [ "Contact" ]
+      }
+    },
+    "/contacts/parse-vcard/institutions" : {
+      "post" : {
+        "operationId" : "importInstitutionContact",
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary",
+                    "description" : "A .vcf file (vCard) with details of the institution contact, that shall be parsed."
+                  }
+                },
+                "required" : [ "file" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ImportInstitutionContactResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Parse a vcf file (VCard) of an institution contact and get possible matches",
+        "tags" : [ "Contact" ]
+      }
+    },
+    "/contacts/parse-vcard/persons" : {
+      "post" : {
+        "operationId" : "importPersonContact",
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary",
+                    "description" : "A .vcf file (vCard) with details of the person contact, that shall be parsed."
+                  }
+                },
+                "required" : [ "file" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ImportPersonContactResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Parse a vcf file (VCard) of a person contact and get possible matches",
+        "tags" : [ "Contact" ]
+      }
+    },
+    "/contacts/{id}" : {
+      "get" : {
+        "operationId" : "getContact",
+        "parameters" : [ {
+          "description" : "The Id of the Contact.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/InstitutionContact"
+                  }, {
+                    "$ref" : "#/components/schemas/PersonContact"
+                  } ]
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a contact",
+        "tags" : [ "Contact" ]
+      },
+      "put" : {
+        "operationId" : "updateContact",
+        "parameters" : [ {
+          "description" : "The Id of the Contact.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "oneOf" : [ {
+                  "$ref" : "#/components/schemas/UpdateInstitutionContactRequest"
+                }, {
+                  "$ref" : "#/components/schemas/UpdatePersonContactRequest"
+                } ]
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/InstitutionContact"
+                  }, {
+                    "$ref" : "#/components/schemas/PersonContact"
+                  } ]
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update an existing contact. Passing another contact ID using 'mergedFrom' will merge the specified contact into this one.",
+        "tags" : [ "Contact" ]
+      }
+    },
+    "/contacts/{id}/addresses/{addressId}/history/{historyId}" : {
+      "get" : {
+        "operationId" : "getContactAddressHistoryStep",
+        "parameters" : [ {
+          "description" : "The Id of the Contact.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "The Id of the address under consideration.",
+          "in" : "path",
+          "name" : "addressId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "description" : "The revision Id of the history step of the address of the Contact.",
+          "in" : "path",
+          "name" : "historyId",
+          "required" : true,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/HistoryStepAddress"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get address history step by revision id.",
+        "tags" : [ "Contact" ]
+      }
+    },
+    "/contacts/{id}/history" : {
+      "get" : {
+        "operationId" : "getContactHistory",
+        "parameters" : [ {
+          "description" : "The Id of the Contact.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "A filter to only show history entries done by a certain User, whose Id is specified here.",
+          "in" : "query",
+          "name" : "userId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "A filter to only show history entries before a certain time.",
+          "in" : "query",
+          "name" : "before",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetContactHistoryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get contact history",
+        "tags" : [ "Contact" ]
+      }
+    },
+    "/contacts/{id}/history/{historyId}" : {
+      "get" : {
+        "operationId" : "getContactHistoryStep",
+        "parameters" : [ {
+          "description" : "The Id of the Contact.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "The revision Id of the history step of the address of the Contact.",
+          "in" : "path",
+          "name" : "historyId",
+          "required" : true,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/HistoryStepContact"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get base contact history step by revision id.",
+        "tags" : [ "Contact" ]
+      }
+    },
+    "/contacts/{id}/merged-contacts" : {
+      "get" : {
+        "operationId" : "getMergedContacts",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetMergedContactsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Returns the IDs of contacts that were merged into the requested contact",
+        "tags" : [ "Contact" ]
+      }
+    },
+    "/department/info" : {
+      "get" : {
+        "operationId" : "getDepartmentInfo",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetDepartmentInfoResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get detailed information about the department running this application.",
+        "tags" : [ "Department" ]
+      }
+    },
+    "/department/logo" : {
+      "get" : {
+        "operationId" : "getDepartmentLogo",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the logo of the department running this application.",
+        "tags" : [ "Department" ]
+      }
+    },
+    "/department/security-txt" : {
+      "get" : {
+        "operationId" : "getSecurityTxt",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "byte"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the security.txt file of the department running this application.",
+        "tags" : [ "Department" ]
+      }
+    },
+    "/department/security-txt-public-key" : {
+      "get" : {
+        "operationId" : "getSecurityTxtPublicKey",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "byte"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the security.txt public PGP key file of the department running this application.",
+        "tags" : [ "Department" ]
+      }
+    },
+    "/facilities" : {
+      "get" : {
+        "operationId" : "searchReferenceFacilities",
+        "parameters" : [ {
+          "description" : "The name of the Facility (knowledge factor) which shall be searched for.",
+          "in" : "query",
+          "name" : "name",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SearchReferenceFacilitiesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Search reference facilities for the given knowledge factor 'name'.\nExcludes facilities created from external sources.\nCaution: The returned ids of the reference facilities must not be stored.\n",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/facilities/centralfilestates" : {
+      "post" : {
+        "operationId" : "addFacilityFileState",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddFacilityFileStateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddFacilityFileStateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add a new facility file state and associate it with a reference facility.\nIf no reference id is provided, an existing reference facility with matching facility data is selected or (if\nit does not exist) created for this purpose.\n",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/facilities/centralfilestates/archive-deletion" : {
+      "post" : {
+        "operationId" : "deleteFacilityFileStateDuringArchive",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/DeleteFileStatesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete this file state as soon as possible.\nThis is used during an archival process, where the file states are moved to an archive and thereby deleted from the central file.\nTo delete file states under normal cleanup, use /mark-for-deletion instead.\n",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/facilities/centralfilestates/bulk-add" : {
+      "post" : {
+        "operationId" : "addFacilityFileStates",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddFacilityFileStatesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddFacilityFileStatesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add multiple facility file states in a bulk operation.\nEach file state is linked to a reference facility whose name and mandatory\ncontact address fields match; other fields are not taken into account here. If\nno such facility exists, a new one will be created.\n",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/facilities/centralfilestates/bulk-get" : {
+      "post" : {
+        "operationId" : "getFacilityFileStates",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetFacilityFileStatesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFacilityFileStatesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get multiple facilities",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/facilities/centralfilestates/external-source" : {
+      "post" : {
+        "operationId" : "addFacilityFromExternalSource",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ExternalAddFacilityFileStateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddFacilityFileStateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a new facility file state as well as a new associated reference\nfacility, without any matching to existing data.\nThis endpoint requires a valid authentication from the citizen portal.\nThe created data are labelled as external and are thus regarded as temporary,\nunconfirmed and untrustworthy. It must undergo a verification process performed\nby a health office employee before it can be used for any official processes.\nThe only exception to this are GDPR-related procedures, where the data may be\nused immediately.\n",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/facilities/centralfilestates/mark-for-deletion" : {
+      "post" : {
+        "operationId" : "markFacilityFileStateForDeletion",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/DeleteFileStatesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Mark this file state for deletion at a later time.\nThis can be used to clean up draft procedures or appointments and spam data.\nThe file state will be deleted after a grace period, to allow for recovery.\n",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/facilities/centralfilestates/{id}" : {
+      "get" : {
+        "operationId" : "getFacilityFileState",
+        "parameters" : [ {
+          "description" : "The Id of the File State of the Facility.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFacilityFileStateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a facility",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/facilities/centralfilestates/{id}/diff" : {
+      "get" : {
+        "operationId" : "getFacilityDiff",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFacilityDiffResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the difference between the requested file state and its associated reference facility.\n",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/facilities/centralfilestates/{id}/linked-ids" : {
+      "get" : {
+        "operationId" : "getFacilityFileStateIdsWithSameReferenceFacility",
+        "parameters" : [ {
+          "description" : "The Id of the File State of the Facility.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFileStateIdsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the Ids of all other facility file states associated with the reference facility of the given file state",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/facilities/centralfilestates/{id}/reference-facility" : {
+      "get" : {
+        "operationId" : "getReferenceFacility",
+        "parameters" : [ {
+          "description" : "The Id of the File State of the Facility.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetReferenceFacilityResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the data of the reference facility associated with a given facility file state.\nCaution: The returned id of the reference facility must not be stored.\n",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/facilities/centralfilestates/{id}/sync-file-state" : {
+      "post" : {
+        "operationId" : "syncFacilityFileState",
+        "parameters" : [ {
+          "description" : "The id of the file state",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SyncFileStateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddFacilityFileStateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update a differing facility file state by taking over the data from the\nassociated reference facility\n",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/facilities/centralfilestates/{id}/update-file-state-and-reference" : {
+      "post" : {
+        "operationId" : "updateFacilityFileStateAndReference",
+        "parameters" : [ {
+          "description" : "The id of the file state",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PutFacilityRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddFacilityFileStateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Perform a consistent update of the existent facility file state and its\nassociated reference facility\n",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/facilities/reference/{id}/linked-ids" : {
+      "get" : {
+        "operationId" : "getFacilityFileStateIdsAssociatedWithReferenceFacility",
+        "parameters" : [ {
+          "description" : "The Id of the Reference Facility.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFileStateIdsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the Ids of all facility file states associated with the given reference facility",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/facilities/reference/{id}/update" : {
+      "post" : {
+        "operationId" : "updateReferenceFacility",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateReferenceFacilityRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddFacilityFileStateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Updates reference facility data identified by given id. Sets dataOrigin to DataOrigin.EDIT.\nReturns a new file state with the resulting new state.\n",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/feature-toggles" : {
+      "get" : {
+        "operationId" : "getFeatureToggles",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetBaseFeatureTogglesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "BaseFeatureToggles" ]
+      }
+    },
+    "/gdpr-procedures" : {
+      "get" : {
+        "operationId" : "getGdprProcedures",
+        "parameters" : [ {
+          "description" : "A filter for a type that GDPR procedures can have.",
+          "in" : "query",
+          "name" : "type",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }, {
+          "description" : "The parameter by which to sort.",
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprProcedureSortKey"
+          }
+        }, {
+          "description" : "The direction by which to sort.",
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "description" : "Part of pagination. Specifies the page of the paginated items that is returned in the response.",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "description" : "Part of pagination. Specifies the number of items which shall be on a single page. Only this amount of items is returned in the response.",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all GDPR procedures. Filter result by type. Sort and page the results by createdAt.",
+        "tags" : [ "GdprProcedure" ]
+      },
+      "post" : {
+        "operationId" : "addGdprProcedure",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddGdprProcedureRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add a GDPR procedure",
+        "tags" : [ "GdprProcedure" ]
+      }
+    },
+    "/gdpr-procedures/citizen-portal" : {
+      "post" : {
+        "operationId" : "addGdprProcedureFromCitizenPortal",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddGdprProcedureFromCitizenPortalRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "This endpoint allows authenticated MUK and BundID users to initiate a GDPR\nprocedure via the citizen portal initiate a GDPR procedure. A matter of\nconcern can be added to the request if desired.\n",
+        "tags" : [ "GdprProcedure" ]
+      }
+    },
+    "/gdpr-procedures/citizen-portal/self/linked-gdpr-procedures" : {
+      "get" : {
+        "operationId" : "getCitizenSelfUserLinkedGdprProcedures",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetCitizenSelfUsersGdprProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the GDPR procedures linked with the citizen user which is currently active",
+        "tags" : [ "GdprProcedure" ]
+      }
+    },
+    "/gdpr-procedures/{id}" : {
+      "get" : {
+        "operationId" : "getGdprProcedure",
+        "parameters" : [ {
+          "description" : "The Id of the GDPR procedure.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get GDPR procedure by id",
+        "tags" : [ "GdprProcedure" ]
+      },
+      "post" : {
+        "operationId" : "addCentralFileIdToGdprProcedure",
+        "parameters" : [ {
+          "description" : "The Id of the GDPR procedure.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddCentralFileIdToGdprProcedureRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add central file id to GDPR procedure.",
+        "tags" : [ "GdprProcedure" ]
+      }
+    },
+    "/gdpr-procedures/{id}/cancel-procedure" : {
+      "post" : {
+        "operationId" : "cancelProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CancelGdprProcedureRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Cancel the GDPR procedure",
+        "tags" : [ "GdprProcedure" ]
+      }
+    },
+    "/gdpr-procedures/{id}/central-file-download-package" : {
+      "get" : {
+        "operationId" : "getCentralFileDownloadPackage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get Gdpr Download Package of central files linked to given Gdpr Procedure Id",
+        "tags" : [ "GdprProcedure" ]
+      }
+    },
+    "/gdpr-procedures/{id}/close-procedure" : {
+      "post" : {
+        "operationId" : "closeProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CloseGdprProcedureRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Close the GDPR procedure",
+        "tags" : [ "GdprProcedure" ]
+      }
+    },
+    "/gdpr-procedures/{id}/details-page" : {
+      "get" : {
+        "operationId" : "getGdprProcedureDetailsPage",
+        "parameters" : [ {
+          "description" : "The Id of the GDPR procedure.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprProcedureDetailsPageResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get GDPR procedure details page information. Used exclusively by the frontend to display the GDPR Procedure.",
+        "tags" : [ "GdprProcedure" ]
+      }
+    },
+    "/gdpr-procedures/{id}/downloads" : {
+      "delete" : {
+        "operationId" : "deleteDownloads",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/DeleteGdprDownloadsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete one or multiple downloads of GDPR-related document or data of this GDPR procedure.",
+        "tags" : [ "GdprProcedure" ]
+      },
+      "get" : {
+        "operationId" : "getDownloads",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprDownloadsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get list of download ids of GDPR-related documents or data of this GDPR procedure.",
+        "tags" : [ "GdprProcedure" ]
+      },
+      "post" : {
+        "operationId" : "addDownloads",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddGdprDownloadsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add one or multiple downloads of GDPR-related document or data for this GDPR procedure.",
+        "tags" : [ "GdprProcedure" ]
+      }
+    },
+    "/gdpr-procedures/{id}/fileStateIds" : {
+      "get" : {
+        "operationId" : "getFileStateIds",
+        "parameters" : [ {
+          "description" : "The Id of the GDPR procedure.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprProcedureFileStateIdsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get file state ids of this gdpr procedure.",
+        "tags" : [ "GdprProcedure" ]
+      }
+    },
+    "/gdpr-procedures/{id}/matter-of-concern" : {
+      "put" : {
+        "operationId" : "setMatterOfConcern",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SetMatterOfConcernRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Changes the matter of concern of this GDPR procedure, this is only relevant for right to correction and right to objection.",
+        "tags" : [ "GdprProcedure" ]
+      }
+    },
+    "/gdpr-procedures/{id}/refresh-status" : {
+      "post" : {
+        "operationId" : "refreshStatus",
+        "parameters" : [ {
+          "description" : "The Id of the GDPR procedure.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Refresh status of GDPR procedure.",
+        "tags" : [ "GdprProcedure" ]
+      }
+    },
+    "/gdpr-procedures/{id}/report-document" : {
+      "get" : {
+        "operationId" : "getReportDocument",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Returns the relevant report as PDF for this GDPR Procedure.",
+        "tags" : [ "GdprProcedure" ]
+      }
+    },
+    "/gdpr-procedures/{id}/start-procedure" : {
+      "post" : {
+        "operationId" : "startProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/StartGdprProcedureRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Start the GDPR procedure",
+        "tags" : [ "GdprProcedure" ]
+      }
+    },
+    "/icd10-codes" : {
+      "get" : {
+        "operationId" : "searchIcd10Codes",
+        "parameters" : [ {
+          "description" : "Search for a string within the ICD-10 codes, groups and their title. The search supports a fuzzy search mechanism.",
+          "in" : "query",
+          "name" : "searchString",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "description" : "Search for a string within the ICD-10 codes, groups and their title. The search supports a fuzzy search mechanism.",
+            "default" : ""
+          }
+        }, {
+          "in" : "query",
+          "name" : "codes",
+          "required" : false,
+          "schema" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            },
+            "default" : [ ]
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SearchIcd10CodesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Search in the ICD-10 catalogue.",
+        "tags" : [ "Icd10Code" ]
+      },
+      "post" : {
+        "operationId" : "findAllIcd10Codes",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/FindIcd10CodesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/FindIcd10CodesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Icd10Code" ]
+      }
+    },
+    "/inventoryItems" : {
+      "get" : {
+        "operationId" : "getInventoryItems",
+        "parameters" : [ {
+          "description" : "The name of the Inventory Item (or parts of it) which shall be searched for.",
+          "in" : "query",
+          "name" : "name",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "description" : "A filter for the possible types of an Inventory Item.",
+          "in" : "query",
+          "name" : "type",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/InventoryItemType"
+          }
+        }, {
+          "description" : "A filter for labels that are used for Inventory Items. Only one label can be specified at a time.",
+          "in" : "query",
+          "name" : "label",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "description" : "The parameter by which to sort.",
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/InventorySortKey"
+          }
+        }, {
+          "description" : "The direction by which to sort.",
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "description" : "Part of pagination. Specifies the page of the paginated items that is returned in the response.",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "description" : "Part of pagination. Specifies the number of items which shall be on a single page. Only this amount of items is returned in the response.",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInventoryItemsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : " Search inventory items. Filter results by the optional parameters 'name', 'type' and label. Sort and page the\n results by default values or by optional parameters\n",
+        "tags" : [ "Inventory" ]
+      },
+      "post" : {
+        "operationId" : "addInventoryItem",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddInventoryItemRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InventoryItem"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add a new Inventory Item",
+        "tags" : [ "Inventory" ]
+      }
+    },
+    "/inventoryItems/{id}" : {
+      "get" : {
+        "operationId" : "getInventoryItem",
+        "parameters" : [ {
+          "description" : "Id of the Inventory Item.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InventoryItem"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get an Inventory Item",
+        "tags" : [ "Inventory" ]
+      },
+      "put" : {
+        "operationId" : "updateInventoryItem",
+        "parameters" : [ {
+          "description" : "Id of the Inventory Item.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateInventoryItemRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InventoryItem"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : " Update an inventory item. Any provided label names will be used to resolve existing labels from the\n database, use the same name where applicable\n",
+        "tags" : [ "Inventory" ]
+      }
+    },
+    "/inventoryItems/{id}/booking" : {
+      "post" : {
+        "operationId" : "bookInventoryItem",
+        "parameters" : [ {
+          "description" : "Id of the Inventory Item.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/BookInventoryItemRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InventoryItemBookingEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Book a certain amount of stock for a given inventory item,\nreturns a booking entry with the relevant booking id on success.\n",
+        "tags" : [ "Inventory" ]
+      }
+    },
+    "/inventoryItems/{id}/booking/history" : {
+      "get" : {
+        "operationId" : "getInventoryBookingHistory",
+        "parameters" : [ {
+          "description" : "Id of the Inventory Item.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Part of pagination. Specifies the page of the paginated booking entries that is returned in the response.",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        }, {
+          "description" : "Part of pagination. Specifies the number of booking entries which shall be on a single page. Only this amount of entries is returned in the response.",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 50,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InventoryItemBookingHistory"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the history of booking operations for a given inventory item",
+        "tags" : [ "Inventory" ]
+      }
+    },
+    "/inventoryItems/{id}/booking/{bookingId}" : {
+      "get" : {
+        "operationId" : "getInventoryItemBooking",
+        "parameters" : [ {
+          "description" : "Id of the Inventory Item.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "The public Id of the booking of the given Inventory Item.",
+          "in" : "path",
+          "name" : "bookingId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InventoryItemBookingEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a booking entry",
+        "tags" : [ "Inventory" ]
+      }
+    },
+    "/inventoryItems/{id}/booking/{bookingId}/cancel" : {
+      "post" : {
+        "operationId" : "cancelInventoryItemBooking",
+        "parameters" : [ {
+          "description" : "Id of the Inventory Item.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "The public Id of the booking of the given Inventory Item.",
+          "in" : "path",
+          "name" : "bookingId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "description" : "The private Id that was returned when booking the Inventory Item.",
+          "in" : "query",
+          "name" : "ownerKey",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InventoryItemBookingEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Cancel the booking request for the given inventory.\nDoes nothing if the booking was already cancelled.\nThis is only supported for entries of type BOOKING.\n",
+        "tags" : [ "Inventory" ]
+      }
+    },
+    "/inventoryItems/{id}/correction" : {
+      "post" : {
+        "operationId" : "updateInventoryItemCount",
+        "parameters" : [ {
+          "description" : "Id of the Inventory Item.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateInventoryItemCountRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update the item count by providing the current version and new count.\nIf the current version does not match, a conflict error is returned to avoid race conditions.\n",
+        "tags" : [ "Inventory" ]
+      }
+    },
+    "/inventoryItems/{id}/restocking" : {
+      "post" : {
+        "operationId" : "restockInventoryItem",
+        "parameters" : [ {
+          "description" : "Id of the Inventory Item.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/RestockInventoryItemRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InventoryItemBookingEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add a certain amount of stock for a given inventory item",
+        "tags" : [ "Inventory" ]
+      }
+    },
+    "/labels" : {
+      "get" : {
+        "operationId" : "getLabels",
+        "parameters" : [ {
+          "description" : "The name of the label which shall be searched for.",
+          "in" : "query",
+          "name" : "name",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetLabelsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Search labels. Filter results by the optional parameter 'name'. Results are sorted in ascending order",
+        "tags" : [ "Label" ]
+      },
+      "put" : {
+        "operationId" : "addLabel",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddLabelRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Label"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Idempotently add a label, returning existing label if one with the same name exists",
+        "tags" : [ "Label" ]
+      }
+    },
+    "/labels/{id}" : {
+      "get" : {
+        "operationId" : "getLabel",
+        "parameters" : [ {
+          "description" : "The Id of the label.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Label"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a label",
+        "tags" : [ "Label" ]
+      }
+    },
+    "/mail" : {
+      "post" : {
+        "operationId" : "sendEmail",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SendEmailRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Send an email to a single recipient.",
+        "tags" : [ "Mail" ]
+      }
+    },
+    "/mail/notification" : {
+      "post" : {
+        "operationId" : "sendEmailNotification",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SendEmailNotificationRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Send an email notification via template.",
+        "tags" : [ "Mail" ]
+      }
+    },
+    "/muk-facility-link" : {
+      "post" : {
+        "operationId" : "createMukFacilityLink",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddMukFacilityLinkRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Establish a link between a MUK user and a facility",
+        "tags" : [ "MukFacilityLink" ]
+      }
+    },
+    "/muk-facility-link/self/facility" : {
+      "get" : {
+        "operationId" : "getReferenceFacilityLinkedToMukSelfUser",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetReferenceFacilityResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the reference facility linked to the MUK user which is currently active",
+        "tags" : [ "MukFacilityLink" ]
+      }
+    },
+    "/notification-aggregation" : {
+      "get" : {
+        "operationId" : "getNotifications",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAggregatedNotificationsResponse"
+                }
+              }
+            },
+            "description" : "The current users notifications"
+          }
+        },
+        "summary" : "Get notifications for current user",
+        "tags" : [ "NotificationAggregation" ]
+      },
+      "patch" : {
+        "operationId" : "markNotificationsAsRead",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/MarkNotificationsAsReadRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/MarkNotificationsAsReadResponse"
+                }
+              }
+            },
+            "description" : "The error responses if business modules fail"
+          }
+        },
+        "summary" : "Mark notifications for the current user as read",
+        "tags" : [ "NotificationAggregation" ]
+      }
+    },
+    "/notification-aggregation/unread" : {
+      "get" : {
+        "operationId" : "getUnreadNotifications",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAggregatedNotificationsResponse"
+                }
+              }
+            },
+            "description" : "The current users unread notifications"
+          }
+        },
+        "summary" : "Get unread notifications for current user",
+        "tags" : [ "NotificationAggregation" ]
+      }
+    },
+    "/persons" : {
+      "get" : {
+        "operationId" : "searchReferencePersons",
+        "parameters" : [ {
+          "description" : "The first name of the Person (1 of 3 knowledge factors) which shall be searched for.",
+          "in" : "query",
+          "name" : "firstName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "description" : "The last name of the Person (1 of 3 knowledge factors) which shall be searched for.",
+          "in" : "query",
+          "name" : "lastName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "description" : "The date of birth of the Person (1 of 3 knowledge factors) which shall be searched for.",
+          "in" : "query",
+          "name" : "dateOfBirth",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SearchReferencePersonsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Search reference persons for the given knowledge factors 'firstName', 'lastName' and 'dateOfBirth'.\nExcludes persons created from external sources.\nCaution: The returned ids of the reference persons must not be stored.\n",
+        "tags" : [ "Person" ]
+      }
+    },
+    "/persons/centralfilestates" : {
+      "post" : {
+        "operationId" : "addPersonFileState",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddPersonFileStateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/PersonFileState"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add a new person file state and associate it with a reference person.\nIf no reference id is provided, an existing reference person with matching personal data is selected or (if\nit does not exist) created for this purpose.\n",
+        "tags" : [ "Person" ]
+      }
+    },
+    "/persons/centralfilestates/archive-deletion" : {
+      "post" : {
+        "operationId" : "deletePersonFileStateDuringArchive",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/DeleteFileStatesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete this file state as soon as possible.\nThis is used during an archival process, where the file states are moved to an archive and thereby deleted from the central file.\nTo delete file states under normal cleanup, use /mark-for-deletion instead.\n",
+        "tags" : [ "Person" ]
+      }
+    },
+    "/persons/centralfilestates/bulk-add" : {
+      "post" : {
+        "operationId" : "addPersonFileStates",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddPersonFileStatesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddPersonFileStatesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add multiple persons and associate each with a reference person.\nIf no reference person matches the mandatory parameters of the new file state, a new reference person is created.\nNon-mandatory parameters are ignored when searching for matching reference persons.\n",
+        "tags" : [ "Person" ]
+      }
+    },
+    "/persons/centralfilestates/bulk-get" : {
+      "post" : {
+        "operationId" : "getPersonFileStates",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetPersonFileStatesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetPersonFileStatesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get multiple persons",
+        "tags" : [ "Person" ]
+      }
+    },
+    "/persons/centralfilestates/bulk-search" : {
+      "post" : {
+        "operationId" : "getPersonFileStateIdsByReferencePersonKeyAttributes",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetPersonFileStateIdsByKeyAttributesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetPersonFileStateIdsByKeyAttributesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Search multiple reference persons by the given key attributes\nand return all file state ids associated with these reference persons.\n",
+        "tags" : [ "Person" ]
+      }
+    },
+    "/persons/centralfilestates/bulk-update" : {
+      "post" : {
+        "operationId" : "updatePersonFileStatesAndReferences",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdatePersonsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/UpdatePersonsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Perform a consistent update of person file states and their associated\nreference persons in a bulk operation.\n",
+        "tags" : [ "Person" ]
+      }
+    },
+    "/persons/centralfilestates/external-source" : {
+      "post" : {
+        "operationId" : "addPersonFromExternalSource",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ExternalAddPersonFileStateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/PersonFileState"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a new person file state as well as a new associated reference person,\nwithout any matching to existing data.\nThis endpoint requires a valid authentication from the citizen portal.\nThe created data are labelled as external and are thus regarded as temporary,\nunconfirmed and untrustworthy. It must undergo a verification process performed\nby a health office employee before it can be used for any official processes.\nThe only exception to this are GDPR-related procedures, where the data may be\nused immediately.\n",
+        "tags" : [ "Person" ]
+      }
+    },
+    "/persons/centralfilestates/linked-ids" : {
+      "post" : {
+        "operationId" : "getPersonFileStateIdsAssociatedWithFileStates",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetFileStateIdsBulkRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFileStateIdsBulkResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the Ids of all other person file states associated with the reference person of the given file state",
+        "tags" : [ "Person" ]
+      }
+    },
+    "/persons/centralfilestates/mark-for-deletion" : {
+      "post" : {
+        "operationId" : "markPersonFileStateForDeletion",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/DeleteFileStatesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Mark this file state for deletion at a later time.\nThis can be used to clean up draft procedures or appointments and spam data.\nThe file state will be deleted after a grace period, to allow for recovery.\n",
+        "tags" : [ "Person" ]
+      }
+    },
+    "/persons/centralfilestates/{id}" : {
+      "get" : {
+        "operationId" : "getPersonFileState",
+        "parameters" : [ {
+          "description" : "The Id of the File State of the Person.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetPersonFileStateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a person",
+        "tags" : [ "Person" ]
+      }
+    },
+    "/persons/centralfilestates/{id}/diff" : {
+      "get" : {
+        "operationId" : "getPersonDiff",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetPersonDiffResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the difference between the requested file state and its associated reference person.\n",
+        "tags" : [ "Person" ]
+      }
+    },
+    "/persons/centralfilestates/{id}/linked-ids" : {
+      "get" : {
+        "operationId" : "getPersonFileStateIdsAssociatedWithFileState",
+        "parameters" : [ {
+          "description" : "The Id of the File State of the Person.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFileStateIdsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the Ids of all other person file states associated with the reference person of the given file state",
+        "tags" : [ "Person" ]
+      }
+    },
+    "/persons/centralfilestates/{id}/reference-person" : {
+      "get" : {
+        "operationId" : "getReferencePerson",
+        "parameters" : [ {
+          "description" : "The Id of the File State of the Person.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetReferencePersonResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the data of the reference person associated with a given person file state\nCaution: The returned ids of the reference person must not be stored.\n",
+        "tags" : [ "Person" ]
+      }
+    },
+    "/persons/centralfilestates/{id}/sync-file-state" : {
+      "post" : {
+        "operationId" : "syncFileState",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SyncFileStateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/PersonFileState"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update a differing person file state by taking over the personal data from the\nassociated reference person\n",
+        "tags" : [ "Person" ]
+      }
+    },
+    "/persons/centralfilestates/{id}/update-file-state-and-reference" : {
+      "post" : {
+        "operationId" : "updatePersonFileStateAndReference",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdatePersonRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/PersonFileState"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Perform a consistent update of the existent person file state and its\nassociated reference person\n",
+        "tags" : [ "Person" ]
+      }
+    },
+    "/persons/reference/{id}/linked-ids" : {
+      "get" : {
+        "operationId" : "getPersonFileStateIdsAssociatedWithReferencePerson",
+        "parameters" : [ {
+          "description" : "The Id of the Reference Data of the Person.",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFileStateIdsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the Ids of all person file states associated with the given reference person",
+        "tags" : [ "Person" ]
+      }
+    },
+    "/persons/reference/{id}/update" : {
+      "post" : {
+        "operationId" : "updateReferencePerson",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateReferencePersonRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/PersonFileState"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Updates reference person data identified by given id. Sets dataOrigin to DataOrigin.EDIT.\nReturns a new file state with the resulting new state.\n",
+        "tags" : [ "Person" ]
+      }
+    },
+    "/procedure-config" : {
+      "get" : {
+        "operationId" : "getProcedureConfig",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureConfigResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get lib procedure configuration",
+        "tags" : [ "ProcedureConfig" ]
+      }
+    },
+    "/procedure-metrics" : {
+      "get" : {
+        "operationId" : "aggregateProcedureMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAggregatedProcedureMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of procedures"
+          }
+        },
+        "summary" : "Get procedure metrics for procedures created in the given time range",
+        "tags" : [ "ProcedureAggregation" ]
+      }
+    },
+    "/public/config" : {
+      "get" : {
+        "operationId" : "getConfig",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetConfigurationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get general system configuration which is needed by the frontend",
+        "tags" : [ "PublicConfig" ]
+      }
+    },
+    "/recent-procedures" : {
+      "get" : {
+        "operationId" : "aggregateRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "userId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "businessModule",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessModule"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAggregatedRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for user",
+        "tags" : [ "ProcedureAggregation" ]
+      }
+    },
+    "/recent-procedures/self" : {
+      "get" : {
+        "operationId" : "aggregateSelfRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "businessModule",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessModule"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAggregatedRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for the current user",
+        "tags" : [ "ProcedureAggregation" ]
+      }
+    },
+    "/resources" : {
+      "get" : {
+        "operationId" : "getResources",
+        "parameters" : [ {
+          "description" : "The name of the Resource (or parts of it) which shall be searched for.",
+          "in" : "query",
+          "name" : "name",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "description" : "A filter for the possible types of a Resource.",
+          "in" : "query",
+          "name" : "type",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ResourceType"
+          }
+        }, {
+          "description" : "A filter for labels that are used for Resources. Only one label can be specified at a time.",
+          "in" : "query",
+          "name" : "label",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "description" : "The parameter by which to sort.",
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ResourceSortKey"
+          }
+        }, {
+          "description" : "The direction by which to sort.",
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "description" : "Part of pagination. Specifies the page of the paginated items that is returned in the response.",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "description" : "Part of pagination. Specifies the number of items which shall be on a single page. Only this amount of items is returned in the response.",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetResourcesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : " Search resources. Filter results by the optional parameters 'name', 'type' and 'label'. Sort and page the\n results by default values or by optional parameters\n",
+        "tags" : [ "Resource" ]
+      },
+      "post" : {
+        "operationId" : "addResource",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddResourceRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Resource"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add a new resource",
+        "tags" : [ "Resource" ]
+      }
+    },
+    "/resources/{id}" : {
+      "get" : {
+        "operationId" : "getResource",
+        "parameters" : [ {
+          "description" : "Id of the Resource",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Resource"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a resource",
+        "tags" : [ "Resource" ]
+      },
+      "patch" : {
+        "operationId" : "updateResource",
+        "parameters" : [ {
+          "description" : "Id of the Resource",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateResourceRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Resource"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : " Update a resource. Any provided label names will be used to resolve existing labels from the database,\n use the same name where applicable\n",
+        "tags" : [ "Resource" ]
+      }
+    },
+    "/streets" : {
+      "get" : {
+        "operationId" : "searchStreet",
+        "parameters" : [ {
+          "description" : "The name of the street of the address for which the search shall be done",
+          "example" : "Beispielweg",
+          "in" : "query",
+          "name" : "streetName",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "description" : "The name of the street of the address for which the search shall be done",
+            "example" : "Beispielweg"
+          }
+        }, {
+          "description" : "The house number of the address for which the search shall be done",
+          "example" : "1A",
+          "in" : "query",
+          "name" : "houseNumber",
+          "required" : false,
+          "schema" : {
+            "pattern" : "^(\\d+)([a-zA-Z]*)$|",
+            "type" : "string",
+            "description" : "The house number of the address for which the search shall be done",
+            "example" : "1A"
+          }
+        }, {
+          "description" : "The postal code of the address for which the search shall be done",
+          "example" : 123456,
+          "in" : "query",
+          "name" : "postalCode",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "description" : "The country code in ISO 3166-1 alpha-2 format of the address for which the search shall be done",
+          "in" : "query",
+          "name" : "country",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SearchStreetResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Search street data by streetName, houseNumber, postalCode and country.",
+        "tags" : [ "Street" ]
+      }
+    },
+    "/streets/autocomplete" : {
+      "get" : {
+        "operationId" : "autocompleteStreet",
+        "parameters" : [ {
+          "description" : "The case-insensitive street name prefix to autocomplete",
+          "example" : "Breite ga",
+          "in" : "query",
+          "name" : "streetNamePrefix",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AutocompleteStreetResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Returns all street names for the given prefix",
+        "tags" : [ "Street" ]
+      }
+    },
+    "/task-metrics" : {
+      "get" : {
+        "operationId" : "getTaskMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "businessModuleName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTaskMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of a specific procedure type"
+          }
+        },
+        "summary" : "Get task metrics for a procedure type of a business module for procedures created in the given time range",
+        "tags" : [ "TaskMetrics" ]
+      }
+    },
+    "/tasks" : {
+      "get" : {
+        "description" : "### GET operation for aggregated tasks\nassigneeId or assignedById is required as input parameter. However, they are mutually exclusive.\n",
+        "operationId" : "aggregateTasks",
+        "parameters" : [ {
+          "description" : "Id of the assignee of the task",
+          "in" : "query",
+          "name" : "assigneeId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Id of the user who assigned the task to someone",
+          "in" : "query",
+          "name" : "assignedById",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "description" : "Filter on business module",
+          "in" : "query",
+          "name" : "businessModule",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessModule"
+            }
+          }
+        }, {
+          "description" : "Filter on task type",
+          "in" : "query",
+          "name" : "taskType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskType"
+            }
+          }
+        }, {
+          "description" : "Filter on task status",
+          "in" : "query",
+          "name" : "taskStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskStatus"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- PRIORITY: First tasks with a dueDate are listed and sorted by DueDate. Afterwards tasks without a dueDate are listed and sorted by createdAt\n- CREATED_AT: Sorting by createdAt attribute\n- MODIFIED_AT: Sorting by modifiedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortBy"
+          }
+        }, {
+          "description" : "Sorting order. Possible options  \"ASC\" for ascending and \"DESC\" for descending\n",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned tasks",
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "offset",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAggregatedTasksResponse"
+                }
+              }
+            },
+            "description" : "the users tasks"
+          }
+        },
+        "summary" : "Get aggregated tasks",
+        "tags" : [ "TaskAggregation" ]
+      }
+    },
+    "/tasks/dashboard" : {
+      "get" : {
+        "operationId" : "aggregateTasksForDashboard",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAggregatedTasksResponse"
+                }
+              }
+            },
+            "description" : "the users tasks"
+          }
+        },
+        "summary" : "Get aggregated tasks for the dashboard",
+        "tags" : [ "TaskAggregation" ]
+      }
+    },
+    "/test-helper/archiving-job" : {
+      "post" : {
+        "operationId" : "runArchivingJob",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/audit-log-storage" : {
+      "delete" : {
+        "operationId" : "clearAuditLogStorageDirectory",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/auditlog-notification-job" : {
+      "post" : {
+        "operationId" : "runAuditlogNotificationJob",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/business-modules/{businessModuleToDisable}" : {
+      "delete" : {
+        "operationId" : "disableBusinessModule",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "businessModuleToDisable",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/create-calendar-test-events" : {
+      "post" : {
+        "operationId" : "createCalendarTestEvents",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateCalendarTestEventsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CreateCalendarTestEventsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/disable-new-features/{featureToDisable}" : {
+      "post" : {
+        "operationId" : "disableNewFeature",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "featureToDisable",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/BaseFeature"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/enabled-new-features/{featureToEnable}" : {
+      "post" : {
+        "operationId" : "enableNewFeature",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "featureToEnable",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/BaseFeature"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/idp-user/{nameId}" : {
+      "get" : {
+        "operationId" : "getIdpUser",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "nameId",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CitizenUser"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/keycloak/reset" : {
+      "post" : {
+        "operationId" : "resetKeycloak",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/keycloak/sessions" : {
+      "delete" : {
+        "operationId" : "invalidateAllKeycloakSessions",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/keycloak/user/create-temporary" : {
+      "post" : {
+        "operationId" : "createTemporaryUser",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "group",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/User"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/keycloak/user/{userName}" : {
+      "delete" : {
+        "operationId" : "deleteKeycloakUser",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "userName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/login" : {
+      "post" : {
+        "operationId" : "login",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperLoginRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AccessToken"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/login-citizen-access-code-user" : {
+      "post" : {
+        "operationId" : "loginAsCitizenAccessCodeUser",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperLoginAsCitizenAccessCodeUserRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AccessToken"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population/contacts" : {
+      "post" : {
+        "operationId" : "populateContacts",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PopulationRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SearchContactsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population/contacts/health-departments" : {
+      "post" : {
+        "operationId" : "populateHealthDepartmentContacts",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PopulationRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SearchContactsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population/contacts/schools" : {
+      "post" : {
+        "operationId" : "populateSchoolContacts",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PopulationRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SearchContactsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population/inventory" : {
+      "post" : {
+        "operationId" : "populateInventory",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PopulationRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInventoryItemsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population/resources" : {
+      "post" : {
+        "operationId" : "populateResources",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PopulationRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetResourcesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/setup-admin" : {
+      "post" : {
+        "operationId" : "createSetupAdmin",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateSetupAdminRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/setup-admin/{userName}" : {
+      "delete" : {
+        "operationId" : "deleteSetupAdmin",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "userName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/users" : {
+      "get" : {
+        "operationId" : "getUsers",
+        "parameters" : [ {
+          "description" : "A filter for a role users can have",
+          "in" : "query",
+          "name" : "role",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/UserRole"
+          }
+        }, {
+          "description" : "The start of the first name, last name, username or email of a User which shall be searched for.",
+          "in" : "query",
+          "name" : "searchTerm",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "description" : "The start of the first name, last name, username or email of a User which shall be searched for."
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetUsersResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Search users. Filter results by the parameters 'role' and 'search term'. At least one of these filter parameters must be provided",
+        "tags" : [ "User" ]
+      }
+    },
+    "/users/bulk-get" : {
+      "post" : {
+        "operationId" : "getUsersBulk",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetUsersRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetUsersResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get multiple users",
+        "tags" : [ "User" ]
+      }
+    },
+    "/users/groupMembers" : {
+      "get" : {
+        "operationId" : "getUsersByGroup",
+        "parameters" : [ {
+          "description" : "The name of the group whose users shall be returned",
+          "example" : "group",
+          "in" : "query",
+          "name" : "groupName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetUsersResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get users by groupName. Returns max. 100 entries.",
+        "tags" : [ "User" ]
+      }
+    },
+    "/users/keys/public" : {
+      "get" : {
+        "operationId" : "getPublicEmployeeUserKeys",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetPublicEmployeeUserKeysResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the public keys from all employee users which have the right to decrypt\nlog files from the audit log\n",
+        "tags" : [ "User" ]
+      }
+    },
+    "/users/self" : {
+      "get" : {
+        "operationId" : "getSelfUser",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/User"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the user which is currently active",
+        "tags" : [ "User" ]
+      },
+      "put" : {
+        "operationId" : "updateSelfUser",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateSelfUserRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/User"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update the user which is currently active",
+        "tags" : [ "User" ]
+      }
+    },
+    "/users/self/active-sessions" : {
+      "get" : {
+        "operationId" : "getSelfActiveSessions",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetActiveSessionsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all known active sessions for the currently active user",
+        "tags" : [ "User" ]
+      }
+    },
+    "/users/self/active-sessions/invalidate" : {
+      "post" : {
+        "operationId" : "invalidateActiveSessions",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InvalidateSessionsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Invalidates the provided sessions of the currently active user",
+        "tags" : [ "User" ]
+      }
+    },
+    "/users/self/events" : {
+      "get" : {
+        "operationId" : "getSelfEvents",
+        "parameters" : [ {
+          "description" : "Filter by event type.",
+          "in" : "query",
+          "name" : "type",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/UserEventType"
+          }
+        }, {
+          "description" : "Part of pagination. Specifies the offset of the first element in the response.",
+          "in" : "query",
+          "name" : "offset",
+          "required" : true,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "description" : "Part of pagination. Specifies the number of items which shall be retrieved. Only this amount of items is returned in the response.",
+          "in" : "query",
+          "name" : "limit",
+          "required" : true,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetEventsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get logged events like login and login error of the currently active user",
+        "tags" : [ "User" ]
+      }
+    },
+    "/users/self/groups" : {
+      "get" : {
+        "operationId" : "getSelfGroups",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGroupsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the groups of the currently active user",
+        "tags" : [ "User" ]
+      }
+    },
+    "/users/self/keys" : {
+      "delete" : {
+        "operationId" : "deleteEmployeeUserKeys",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the key pair (used for audit log access) from the user which is currently active",
+        "tags" : [ "User" ]
+      },
+      "post" : {
+        "operationId" : "addEmployeeSelfUserKeys",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/EmployeeUserKeys"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/EmployeeUserKeys"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Upload private and public key for an employee user (i.e. for audit log access)",
+        "tags" : [ "User" ]
+      }
+    },
+    "/users/self/keys/private" : {
+      "get" : {
+        "operationId" : "getEmployeePrivateUserKey",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/PrivateEmployeeUserKeyDto"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the private keys (necessary for decrypting audit log files) from the employee user who is currently active",
+        "tags" : [ "User" ]
+      }
+    },
+    "/users/self/leaders" : {
+      "get" : {
+        "operationId" : "getSelfLeaders",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetUsersResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the team leaders of the currently active user",
+        "tags" : [ "User" ]
+      }
+    },
+    "/users/self/with-access" : {
+      "get" : {
+        "operationId" : "getSelfUserAndAccess",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SelfUser"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the user which is currently active, including all roles assigned to this user",
+        "tags" : [ "User" ]
+      }
+    },
+    "/users/suggest" : {
+      "post" : {
+        "operationId" : "suggestUser",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddUserRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/User"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Suggest a new user for the employee portal",
+        "tags" : [ "User" ]
+      }
+    },
+    "/users/user-management-page" : {
+      "get" : {
+        "operationId" : "getUserManagementPage",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetUserManagementPageResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get resources for the user management page. Includes the self user, self user groups, and members of those groups.",
+        "tags" : [ "User" ]
+      }
+    },
+    "/users/{id}" : {
+      "get" : {
+        "operationId" : "getUser",
+        "parameters" : [ {
+          "description" : "The id of the user",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/User"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a user",
+        "tags" : [ "User" ]
+      }
+    },
+    "/users/{id}/profile" : {
+      "get" : {
+        "operationId" : "getUserProfile",
+        "parameters" : [ {
+          "description" : "The id of the user",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/UserProfile"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the profile of a user, includes additional information",
+        "tags" : [ "User" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "AbsenceNotification" : {
+        "required" : [ "absenceEnd", "absenceStart", "absentUserId", "createdAt", "id" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractNotification"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "absenceEnd" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "absenceStart" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "absentUserId" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        } ]
+      },
+      "AbstractAddContactRequest" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AbstractContactChange" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "mapping" : {
+            "DomesticContactAddressChange" : "#/components/schemas/DomesticContactAddressChange",
+            "InstitutionContactChange" : "#/components/schemas/InstitutionContactChange",
+            "PersonContactChange" : "#/components/schemas/PersonContactChange",
+            "PostboxContactAddressChange" : "#/components/schemas/PostboxContactAddressChange"
+          },
+          "propertyName" : "@type"
+        }
+      },
+      "AbstractNotification" : {
+        "required" : [ "@type", "createdAt", "id" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "readAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AbstractUpdateContactRequest" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AccessToken" : {
+        "type" : "object",
+        "properties" : {
+          "expiresAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "jwt" : {
+            "type" : "string"
+          }
+        }
+      },
+      "ActiveUserSession" : {
+        "required" : [ "device", "ip", "isCurrent", "lastActiveTime", "sessionId", "startTime" ],
+        "type" : "object",
+        "properties" : {
+          "device" : {
+            "$ref" : "#/components/schemas/Device"
+          },
+          "ip" : {
+            "type" : "string"
+          },
+          "isCurrent" : {
+            "type" : "boolean"
+          },
+          "lastActiveTime" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "sessionId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "startTime" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "AddBundIdPersonLinkRequest" : {
+        "required" : [ "bpk2", "referencePersonId" ],
+        "type" : "object",
+        "properties" : {
+          "bpk2" : {
+            "type" : "string",
+            "description" : "The bPK2 of the bundId user",
+            "example" : "VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0"
+          },
+          "referencePersonId" : {
+            "type" : "string",
+            "description" : "The (external) id of the reference person",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          }
+        },
+        "description" : "Request used for establishing a link between a BundId user and a reference person"
+      },
+      "AddCentralFileIdToGdprProcedureRequest" : {
+        "required" : [ "centralFileIds", "version" ],
+        "type" : "object",
+        "properties" : {
+          "centralFileIds" : {
+            "type" : "array",
+            "description" : "The Ids belonging to the Reference Data from the Central Files that shall be processed in this GDPR procedure.",
+            "example" : "[UUID_2, UUID_3]",
+            "items" : {
+              "type" : "string",
+              "description" : "The Ids belonging to the Reference Data from the Central Files that shall be processed in this GDPR procedure.",
+              "format" : "uuid"
+            }
+          },
+          "version" : {
+            "type" : "integer",
+            "description" : "Version of the entity. Each time the entity is changed, it is incremented by one.",
+            "format" : "int64"
+          }
+        }
+      },
+      "AddCitizenAccessCodeUserWithDateOfBirthCredentialRequest" : {
+        "required" : [ "personFileStateId" ],
+        "type" : "object",
+        "properties" : {
+          "personFileStateId" : {
+            "type" : "string",
+            "description" : "Id of the person file state",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          }
+        }
+      },
+      "AddCitizenAccessCodeUserWithPinCredentialRequest" : {
+        "required" : [ "pin" ],
+        "type" : "object",
+        "properties" : {
+          "pin" : {
+            "pattern" : "\\d{6}",
+            "type" : "string",
+            "description" : "The PIN for anonymous authorization.",
+            "example" : "654321"
+          }
+        }
+      },
+      "AddFacilityFileStateRequest" : {
+        "required" : [ "dataOrigin", "name" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "referenceFacilityId" : {
+            "type" : "string",
+            "description" : "Id of a referenceFacility. If this Id is provided, a new File State with the input attributes is created for that referenceFacility, regardless of any matching logic.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          }
+        },
+        "description" : "Request used for adding facilities from non-external sources"
+      },
+      "AddFacilityFileStateResponse" : {
+        "required" : [ "contactPersons", "dataOrigin", "emailAddresses", "id", "name", "phoneNumbers", "referenceVersion" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "The Id of the Facility.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          }
+        }
+      },
+      "AddFacilityFileStatesRequest" : {
+        "required" : [ "facilities" ],
+        "type" : "object",
+        "properties" : {
+          "facilities" : {
+            "maxItems" : 10000,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AddFacilityFileStateRequest"
+            }
+          }
+        },
+        "description" : "A list of Facilities that shall be added to the Central Files."
+      },
+      "AddFacilityFileStatesResponse" : {
+        "required" : [ "facilityFileStateIds" ],
+        "type" : "object",
+        "properties" : {
+          "facilityFileStateIds" : {
+            "type" : "array",
+            "description" : "A list containing the file state IDs of the added facilities",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "AddGdprDownloadsRequest" : {
+        "required" : [ "downloadIds" ],
+        "type" : "object",
+        "properties" : {
+          "downloadIds" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "AddGdprProcedureFromCitizenPortalRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "matterOfConcern" : {
+            "maxLength" : 10000,
+            "minLength" : 0,
+            "type" : "string",
+            "description" : "The matter of concern for the GDPR procedure (relevant only for the right to rectification and right to object"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        },
+        "description" : "Request used for initiating GDPR procedures from the citizen portal"
+      },
+      "AddGdprProcedureRequest" : {
+        "required" : [ "identificationData", "type" ],
+        "type" : "object",
+        "properties" : {
+          "identificationData" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GdprFacility"
+            }, {
+              "$ref" : "#/components/schemas/GdprPerson"
+            } ]
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }
+      },
+      "AddGlobalCalendarRequest" : {
+        "required" : [ "globalCalendarName" ],
+        "type" : "object",
+        "properties" : {
+          "globalCalendarName" : {
+            "type" : "string"
+          }
+        }
+      },
+      "AddInstitutionContactRequest" : {
+        "required" : [ "contactAddress", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractAddContactRequest"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "category" : {
+              "$ref" : "#/components/schemas/ContactCategory"
+            },
+            "contactAddress" : {
+              "type" : "object",
+              "description" : "The contact address of the Contact.",
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "differentBillingAddress" : {
+              "type" : "object",
+              "description" : "An optional deviating billing address of the Contact.",
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "emailAddresses" : {
+              "type" : "array",
+              "description" : "A list of email addresses of the Contact.",
+              "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+              "items" : {
+                "type" : "string"
+              }
+            },
+            "name" : {
+              "maxLength" : 300,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the Institution.",
+              "example" : "123 Example Laboratory"
+            },
+            "phoneNumbers" : {
+              "type" : "array",
+              "description" : "A list of telephone numbers of the Contact.",
+              "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+              "items" : {
+                "maxLength" : 23,
+                "minLength" : 1,
+                "type" : "string"
+              }
+            }
+          }
+        } ]
+      },
+      "AddInventoryItemRequest" : {
+        "required" : [ "count", "minCount", "name", "type" ],
+        "type" : "object",
+        "properties" : {
+          "articleNumber" : {
+            "type" : "string",
+            "description" : "A descriptive number of the Inventory Item, e.g. the article or model number.",
+            "example" : "T-800"
+          },
+          "count" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "The initial amount of stock of the Inventory Item, which shall be available for bookings.",
+            "format" : "int32",
+            "example" : 500
+          },
+          "description" : {
+            "type" : "string",
+            "description" : "Free text field for descriptive information on the Inventory Item.",
+            "example" : "The vaccine is stored in a red container in the fridge of the storage room."
+          },
+          "labelNames" : {
+            "type" : "array",
+            "description" : "A list of label names. Any provided name will be used to resolve existing labels from the database.",
+            "example" : "['Label1','Label2','Label3']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "minCount" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "When this amount of stock of the Inventory Item is reached, a graphic warning is displayed in the overview list.",
+            "format" : "int32",
+            "example" : 100
+          },
+          "name" : {
+            "type" : "string",
+            "description" : "The name of the Inventory Item.",
+            "example" : "Example Manufacturer's Vaccine"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InventoryItemType"
+          }
+        }
+      },
+      "AddLabelRequest" : {
+        "required" : [ "name" ],
+        "type" : "object",
+        "properties" : {
+          "name" : {
+            "type" : "string",
+            "description" : "The name of a label (e.g. the name of a business module to which certain Inventory Items or Resources may belong).",
+            "example" : "Travel Medicine"
+          }
+        }
+      },
+      "AddMukFacilityLinkRequest" : {
+        "required" : [ "dataTransmitterPseudonymId", "referenceFacilityId" ],
+        "type" : "object",
+        "properties" : {
+          "dataTransmitterPseudonymId" : {
+            "type" : "string",
+            "description" : "The 'DatenübermittlerPseudonymId' of the MUK user",
+            "example" : "du-986b2b54ab89cf4ed674ad8c3126b966b54d4872"
+          },
+          "referenceFacilityId" : {
+            "type" : "string",
+            "description" : "The (external) id of the reference facility",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          }
+        },
+        "description" : "Request used for establishing a link between a MUK user and a reference facility"
+      },
+      "AddPersonContactRequest" : {
+        "required" : [ "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractAddContactRequest"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "contactAddress" : {
+              "type" : "object",
+              "description" : "The contact address of the Contact.",
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "differentBillingAddress" : {
+              "type" : "object",
+              "description" : "An optional deviating billing address of the Contact.",
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "emailAddresses" : {
+              "type" : "array",
+              "description" : "A list of email addresses of the Contact.",
+              "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+              "items" : {
+                "type" : "string"
+              }
+            },
+            "externalChatUsername" : {
+              "maxLength" : 255,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The chat username of the gematik TI-Messenger (matrix chat).",
+              "example" : "@username:server"
+            },
+            "firstName" : {
+              "maxLength" : 80,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The given name(s) of the Person.",
+              "example" : "John"
+            },
+            "gender" : {
+              "$ref" : "#/components/schemas/Gender"
+            },
+            "name" : {
+              "maxLength" : 120,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The last name of the Person.",
+              "example" : "Doe"
+            },
+            "phoneNumbers" : {
+              "type" : "array",
+              "description" : "A list of telephone numbers of the Contact.",
+              "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+              "items" : {
+                "maxLength" : 23,
+                "minLength" : 1,
+                "type" : "string"
+              }
+            },
+            "salutation" : {
+              "$ref" : "#/components/schemas/Salutation"
+            },
+            "title" : {
+              "maxLength" : 119,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The academic title of a Person.",
+              "example" : "Prof. Dr."
+            }
+          }
+        } ]
+      },
+      "AddPersonFileStateRequest" : {
+        "required" : [ "dataOrigin", "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "The date of birth of the Person.",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Person.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Person.",
+            "example" : "Doe"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name at birth of the Person.",
+            "example" : "Smith"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Person.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The place of birth (without country) of the Person.",
+            "example" : "Berlin"
+          },
+          "referencePersonId" : {
+            "type" : "string",
+            "description" : "Id of a referencePerson. If this Id is provided, a new File State with the input attributes is created for that referencePerson, regardless of any matching logic.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a Person.",
+            "example" : "Prof. Dr."
+          }
+        },
+        "description" : "Request used for adding persons from non-external sources"
+      },
+      "AddPersonFileStatesRequest" : {
+        "required" : [ "persons" ],
+        "type" : "object",
+        "properties" : {
+          "persons" : {
+            "maxItems" : 10000,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AddPersonFileStateRequest"
+            }
+          }
+        },
+        "description" : "A list of Persons that shall be added to the Central Files."
+      },
+      "AddPersonFileStatesResponse" : {
+        "required" : [ "personFileStateIds" ],
+        "type" : "object",
+        "properties" : {
+          "personFileStateIds" : {
+            "type" : "array",
+            "description" : "A list containing the file state IDs of the added persons",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "AddResourceRequest" : {
+        "required" : [ "name", "type" ],
+        "type" : "object",
+        "properties" : {
+          "articleNumber" : {
+            "type" : "string",
+            "description" : "A descriptive number of the Resource, e.g. the article or model number.",
+            "example" : "T-800"
+          },
+          "description" : {
+            "type" : "string",
+            "description" : "Free text field for descriptive information on the Resource.",
+            "example" : "The car is parked in the right garage."
+          },
+          "labelNames" : {
+            "type" : "array",
+            "description" : "A list of label names. Any provided name will be used to resolve existing labels from the database.",
+            "example" : "['Label1','Label2','Label3']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "name" : {
+            "type" : "string",
+            "description" : "The name of the Resource.",
+            "example" : "White delivery truck"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/ResourceType"
+          }
+        }
+      },
+      "AddUserRequest" : {
+        "required" : [ "firstName", "groups", "lastName", "username" ],
+        "type" : "object",
+        "properties" : {
+          "email" : {
+            "type" : "string",
+            "description" : "The email address of a user",
+            "example" : "example@mail.de"
+          },
+          "externalChatUsername" : {
+            "pattern" : "\\p{ASCII}{3,255}",
+            "type" : "string",
+            "description" : "The chat username of the gematik TI-Messenger (matrix chat)",
+            "example" : "@username:server"
+          },
+          "firstName" : {
+            "maxLength" : 255,
+            "minLength" : 2,
+            "type" : "string",
+            "description" : "The given name(s) of a user",
+            "example" : "John"
+          },
+          "groups" : {
+            "type" : "array",
+            "description" : "A list of groups the user shall be part of",
+            "example" : "['group1','group2','group3']",
+            "items" : {
+              "type" : "string",
+              "description" : "A list of groups the user shall be part of",
+              "example" : "['group1','group2','group3']"
+            }
+          },
+          "lastName" : {
+            "maxLength" : 255,
+            "minLength" : 2,
+            "type" : "string",
+            "description" : "The last name of a user",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "pattern" : "[-+0-9() ]{1,23}",
+            "type" : "string",
+            "description" : "The phone number of a user",
+            "example" : "+491234567890"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 0,
+            "type" : "string",
+            "description" : "The academic title of a user",
+            "example" : "Prof. Dr."
+          },
+          "username" : {
+            "maxLength" : 255,
+            "minLength" : 3,
+            "type" : "string",
+            "description" : "The username which is displayed in the application and can be used for the login",
+            "example" : "testuser"
+          }
+        },
+        "description" : "Suggest a user with the given properties.\nThe authorization server uses the validators shown in this link:\nhttps://github.com/keycloak/keycloak/tree/adca2c67673232a6502cac976a10611254cbc51c/services/src/main/java/org/keycloak/userprofile/validator\n"
+      },
+      "Address" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ArchivingRelevance" : {
+        "type" : "string",
+        "enum" : [ "DEFAULT", "RELEVANT", "IRRELEVANT" ]
+      },
+      "ArchivingRelevanceSettings" : {
+        "required" : [ "archivingRelevance", "defaultArchivingRelevance" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "defaultArchivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          }
+        }
+      },
+      "AutocompleteStreetResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "description" : "A list of street names which are results of the autocompletion",
+            "example" : "['Hauptpfad','Hauptstraße','Hauptweg']",
+            "items" : {
+              "type" : "string",
+              "description" : "A list of street names which are results of the autocompletion",
+              "example" : "['Hauptpfad','Hauptstraße','Hauptweg']"
+            }
+          },
+          "totalNumberOfElements" : {
+            "type" : "integer",
+            "description" : "The number of streets in the response",
+            "format" : "int64"
+          }
+        }
+      },
+      "BaseEventRequest" : {
+        "required" : [ "calendarId", "timeData", "type" ],
+        "type" : "object",
+        "properties" : {
+          "calendarId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "subject" : {
+            "type" : "string"
+          },
+          "timeData" : {
+            "$ref" : "#/components/schemas/EventTimeData"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/BaseEventType"
+          }
+        },
+        "description" : "Base events are events like vacations that are not related to any business module."
+      },
+      "BaseEventType" : {
+        "type" : "string",
+        "enum" : [ "HOLIDAY", "SERVICE", "VACATION" ]
+      },
+      "BaseFeature" : {
+        "type" : "string",
+        "enum" : [ "CHAT_USERNAME", "SEARCH_PROCEDURES", "INBOX", "OPEN_DATA", "GDPR", "GDPR_ONLINE_PORTAL", "MUK_FACILITY_LINK", "BUNDID_PERSON_LINK" ]
+      },
+      "BlockingEventsOfCalendar" : {
+        "required" : [ "calendarId", "events" ],
+        "type" : "object",
+        "properties" : {
+          "calendarId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "events" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/EventWithTimeData"
+            }
+          }
+        }
+      },
+      "BlockingEventsOfResource" : {
+        "required" : [ "events", "resourceId" ],
+        "type" : "object",
+        "properties" : {
+          "events" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/EventWithTimeData"
+            }
+          },
+          "resourceId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "BookInventoryItemRequest" : {
+        "required" : [ "bookingCount" ],
+        "type" : "object",
+        "properties" : {
+          "bookingCount" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "description" : "The amount of stock of an Inventory Item that shall be booked.",
+            "format" : "int32",
+            "example" : 200
+          }
+        }
+      },
+      "BundIdUserAttributes" : {
+        "required" : [ "address", "firstName", "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "$ref" : "#/components/schemas/DomesticAddress"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "lastName" : {
+            "type" : "string"
+          }
+        },
+        "description" : "The BundId attributes of a user"
+      },
+      "BusinessCaseEventRequest" : {
+        "required" : [ "calendarIds", "timeData" ],
+        "type" : "object",
+        "properties" : {
+          "calendarIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "timeData" : {
+            "$ref" : "#/components/schemas/EventTimeData"
+          }
+        }
+      },
+      "BusinessModule" : {
+        "type" : "string",
+        "enum" : [ "INSPECTION", "SCHOOL_ENTRY", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY", "DENTAL", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "Calendar" : {
+        "required" : [ "id", "type" ],
+        "type" : "object",
+        "properties" : {
+          "globalCalendarName" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "resourceId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/CalendarType"
+          },
+          "userId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "CalendarType" : {
+        "type" : "string",
+        "enum" : [ "GLOBAL", "RESOURCE", "USER" ]
+      },
+      "CancelGdprProcedureRequest" : {
+        "required" : [ "internalNote", "version" ],
+        "type" : "object",
+        "properties" : {
+          "internalNote" : {
+            "type" : "string"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "CitizenAccessCodeUser" : {
+        "required" : [ "accessCode", "userId" ],
+        "type" : "object",
+        "properties" : {
+          "accessCode" : {
+            "maxLength" : 17,
+            "minLength" : 17,
+            "type" : "string",
+            "description" : "The access code for the citizen user",
+            "example" : "Wzhu89yP4F728jVTT"
+          },
+          "userId" : {
+            "type" : "string",
+            "description" : "Id of the citizen user",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          }
+        }
+      },
+      "CitizenUser" : {
+        "required" : [ "userId" ],
+        "type" : "object",
+        "properties" : {
+          "attributes" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "array",
+              "items" : {
+                "type" : "string"
+              }
+            }
+          },
+          "userId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "CitizenUserRole" : {
+        "type" : "string",
+        "enum" : [ "STANDARD_CITIZEN", "ACCESS_CODE_USER", "MUK_USER", "BUND_ID_USER" ]
+      },
+      "CitizenUsersGdprProcedure" : {
+        "required" : [ "createdAt", "hasDownloads", "id", "status", "type" ],
+        "type" : "object",
+        "properties" : {
+          "closedAt" : {
+            "type" : "string",
+            "description" : "The date and time of when this GDPR procedure was completed or cancelled.",
+            "format" : "date-time",
+            "example" : "2024-02-01T00:00:00.123456Z"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "description" : "The date and time of when the GDPR procedure was created.",
+            "format" : "date-time",
+            "example" : "2024-02-01T00:00:00.123456Z"
+          },
+          "hasDownloads" : {
+            "type" : "boolean",
+            "description" : "Whether this procedure has available downloads.",
+            "example" : true
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "The Id of the GDPR procedure.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "matterOfConcern" : {
+            "type" : "string",
+            "description" : "The matter of concern specified by the requesting user.",
+            "example" : "Please stop all procedures related to my personal information."
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/GdprProcedureStatus"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        },
+        "description" : "The core data of a GdprProcedure used in a response to a query by a CitizenUser"
+      },
+      "CloseGdprProcedureRequest" : {
+        "required" : [ "internalNote", "version" ],
+        "type" : "object",
+        "properties" : {
+          "internalNote" : {
+            "type" : "string"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "Contact" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ContactAddressReference" : {
+        "required" : [ "addressId", "usage" ],
+        "type" : "object",
+        "properties" : {
+          "addressId" : {
+            "type" : "integer",
+            "description" : "The reference Id of the address of a Contact.",
+            "format" : "int64",
+            "example" : 723
+          },
+          "usage" : {
+            "$ref" : "#/components/schemas/ContactAddressUsage"
+          }
+        }
+      },
+      "ContactAddressUsage" : {
+        "type" : "string",
+        "description" : "List of possible usages for an address.",
+        "enum" : [ "CONTACT_ADDRESS", "DIFFERENT_BILLING_ADDRESS" ]
+      },
+      "ContactCategory" : {
+        "type" : "string",
+        "description" : "The list of possible types under which an Institution in the Contact Management can be categorized.",
+        "enum" : [ "LABORATORY", "SCHOOL", "DOCTORS_OFFICE", "HEALTH_DEPARTMENT", "MISC", "DAYCARE" ]
+      },
+      "ContactHistoryEntry" : {
+        "required" : [ "changes", "contactId", "historyId", "modifiedAt", "modifiedBy", "type" ],
+        "type" : "object",
+        "properties" : {
+          "addressReference" : {
+            "$ref" : "#/components/schemas/ContactAddressReference"
+          },
+          "changes" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticContactAddressChange"
+            }, {
+              "$ref" : "#/components/schemas/InstitutionContactChange"
+            }, {
+              "$ref" : "#/components/schemas/PersonContactChange"
+            }, {
+              "$ref" : "#/components/schemas/PostboxContactAddressChange"
+            } ]
+          },
+          "contactId" : {
+            "type" : "string",
+            "description" : "Id of the Contact.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "historyId" : {
+            "type" : "integer",
+            "description" : "Id of the history revision step.",
+            "format" : "int64",
+            "example" : 723
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "description" : "The date and time of when the Contact was modified.",
+            "format" : "date-time",
+            "example" : "2024-02-01T00:00:00.123456Z"
+          },
+          "modifiedBy" : {
+            "type" : "string",
+            "description" : "The Id of the User who modified the Contact.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/HistoryEntryType"
+          }
+        }
+      },
+      "ContactSortKey" : {
+        "type" : "string",
+        "description" : "The list of possible parameters by which Contacts can be sorted.",
+        "enum" : [ "NAME", "TYPE", "RELEVANCE", "CATEGORY" ]
+      },
+      "ContactType" : {
+        "type" : "string",
+        "description" : "List of possible types of a Contact.",
+        "enum" : [ "PERSON", "INSTITUTION" ]
+      },
+      "CountryCode" : {
+        "type" : "string",
+        "description" : "List of country codes in ISO 3166-1 alpha-2 format. With custom extensions for stateless, non-standard countries, and unknown countries.",
+        "enum" : [ "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW", "XK", "UNKNOWN", "STATELESS" ]
+      },
+      "CreateCalendarTestEventsRequest" : {
+        "required" : [ "subDayEventCount", "wholeDayEventCount" ],
+        "type" : "object",
+        "properties" : {
+          "subDayEventCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "wholeDayEventCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "CreateCalendarTestEventsResponse" : {
+        "type" : "object",
+        "properties" : {
+          "calendarId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "CreateSetupAdminRequest" : {
+        "required" : [ "emailAddress", "username" ],
+        "type" : "object",
+        "properties" : {
+          "emailAddress" : {
+            "type" : "string"
+          },
+          "username" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CredentialType" : {
+        "type" : "string",
+        "enum" : [ "PIN", "DATE_OF_BIRTH" ]
+      },
+      "DataOrigin" : {
+        "type" : "string",
+        "description" : "A list of possible origins of Persons and Facility in the Central Files. EDIT will only be set automatically on changes. EXTERNAL is for entries that come, e.g., from the citizen portal. IMPORT is reserved for automatic imports. MANUAL shall be set for every creation or connection done by an employee.",
+        "enum" : [ "MANUAL", "EXTERNAL", "IMPORT", "EDIT" ]
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "DeleteFileStatesRequest" : {
+        "required" : [ "fileStateIds" ],
+        "type" : "object",
+        "properties" : {
+          "fileStateIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "description" : "A list of Ids of File States that shall be deleted.",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "DeleteGdprDownloadsRequest" : {
+        "required" : [ "downloadIds" ],
+        "type" : "object",
+        "properties" : {
+          "downloadIds" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "DetailedEvent" : {
+        "required" : [ "calendarIds", "id", "metaData", "timeData", "type" ],
+        "type" : "object",
+        "properties" : {
+          "calendarIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "lastModifiedByUserId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "metaData" : {
+            "$ref" : "#/components/schemas/EventMetaData"
+          },
+          "timeData" : {
+            "$ref" : "#/components/schemas/EventTimeData"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/EventType"
+          }
+        }
+      },
+      "DetailedEventWithoutCalendarId" : {
+        "required" : [ "id", "metaData", "timeData", "type" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "lastModifiedByUserId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "metaData" : {
+            "$ref" : "#/components/schemas/EventMetaData"
+          },
+          "timeData" : {
+            "$ref" : "#/components/schemas/EventTimeData"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/EventType"
+          }
+        }
+      },
+      "Device" : {
+        "required" : [ "isMobile" ],
+        "type" : "object",
+        "properties" : {
+          "browserName" : {
+            "type" : "string"
+          },
+          "deviceName" : {
+            "type" : "string"
+          },
+          "isMobile" : {
+            "type" : "boolean"
+          },
+          "osName" : {
+            "type" : "string"
+          },
+          "osVersion" : {
+            "type" : "string"
+          }
+        }
+      },
+      "DiffAddress" : {
+        "required" : [ "differingFields" ],
+        "type" : "object",
+        "properties" : {
+          "differingFields" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "fileState" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "reference" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          }
+        }
+      },
+      "DiffFacilityContactPerson" : {
+        "required" : [ "differingFields" ],
+        "type" : "object",
+        "properties" : {
+          "differingFields" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "fileState" : {
+            "$ref" : "#/components/schemas/FacilityContactPerson"
+          },
+          "reference" : {
+            "$ref" : "#/components/schemas/FacilityContactPerson"
+          }
+        }
+      },
+      "DiffFacilityDetails" : {
+        "required" : [ "differingFields" ],
+        "type" : "object",
+        "properties" : {
+          "differingFields" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "fileState" : {
+            "$ref" : "#/components/schemas/FacilityDetails"
+          },
+          "reference" : {
+            "$ref" : "#/components/schemas/FacilityDetails"
+          }
+        }
+      },
+      "DiffPersonDetails" : {
+        "required" : [ "differingFields" ],
+        "type" : "object",
+        "properties" : {
+          "differingFields" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "fileState" : {
+            "$ref" : "#/components/schemas/PersonDetails"
+          },
+          "reference" : {
+            "$ref" : "#/components/schemas/PersonDetails"
+          }
+        }
+      },
+      "District" : {
+        "required" : [ "districtCode", "districtName", "municipalityKey" ],
+        "type" : "object",
+        "properties" : {
+          "districtCode" : {
+            "type" : "string",
+            "description" : "The number of the district",
+            "example" : "0601"
+          },
+          "districtName" : {
+            "type" : "string",
+            "description" : "The name of the district",
+            "example" : "Berlin-Steglitz"
+          },
+          "municipalityKey" : {
+            "type" : "string",
+            "description" : "The Community Identification Number (Amtlicher Gemeindeschlüssel)",
+            "example" : "11000000"
+          }
+        }
+      },
+      "DomesticAddress" : {
+        "required" : [ "city", "country", "postalCode", "street" ],
+        "type" : "object",
+        "description" : "A usual domestic address.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "addressAddition" : {
+              "maxLength" : 100,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "A descriptive addition to the address.",
+              "example" : "2.OG links"
+            },
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "houseNumber" : {
+              "maxLength" : 11,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The house number of the address, including extensions.",
+              "example" : "1a"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "street" : {
+              "maxLength" : 55,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the street of the address, without the house number.",
+              "example" : "Beispielweg"
+            }
+          }
+        } ]
+      },
+      "DomesticContactAddressChange" : {
+        "required" : [ "addressAddition", "city", "country", "differentName", "houseNumber", "postalCode", "street" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractContactChange"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "addressAddition" : {
+              "$ref" : "#/components/schemas/HistoryChangeString"
+            },
+            "city" : {
+              "$ref" : "#/components/schemas/HistoryChangeString"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/HistoryChangeCountryCode"
+            },
+            "differentName" : {
+              "$ref" : "#/components/schemas/HistoryChangeString"
+            },
+            "houseNumber" : {
+              "$ref" : "#/components/schemas/HistoryChangeString"
+            },
+            "postalCode" : {
+              "$ref" : "#/components/schemas/HistoryChangeString"
+            },
+            "street" : {
+              "$ref" : "#/components/schemas/HistoryChangeString"
+            }
+          }
+        } ]
+      },
+      "EmployeeUserKeys" : {
+        "required" : [ "cryptoVersion", "encryptedPrivateKey", "keyIdentifier", "publicKey" ],
+        "type" : "object",
+        "properties" : {
+          "cryptoVersion" : {
+            "type" : "integer",
+            "description" : "The version of the crypto settings used.\nA new crypto version (increased by 1) will become available every time something is changed regarding the GA-Lotse crypto settings for the keys stored here.\nThis attribute tracks, which settings were in use, when the key pair was created",
+            "format" : "int32"
+          },
+          "encryptedPrivateKey" : {
+            "type" : "array",
+            "description" : "The encrypted private key",
+            "items" : {
+              "type" : "string",
+              "description" : "The encrypted private key",
+              "format" : "byte"
+            }
+          },
+          "keyIdentifier" : {
+            "type" : "string",
+            "description" : "Usually the sha256 hash of the corresponding public key.\nUsed to distinguish keys, i.e. to recognize if the currently active keys are the keys that have been used (in the past) to encrypt a given set of data\n"
+          },
+          "publicKey" : {
+            "type" : "array",
+            "description" : "The public key corresponding to the encrypted private key",
+            "items" : {
+              "type" : "string",
+              "description" : "The public key corresponding to the encrypted private key",
+              "format" : "byte"
+            }
+          }
+        }
+      },
+      "ErrorCode" : {
+        "type" : "string",
+        "enum" : [ "UNEXPECTED_ERROR", "BAD_REQUEST", "UNAUTHORIZED", "INSUFFICIENT_USER_RIGHTS", "NOT_FOUND", "CONFLICT", "CONSTRAINT_VIOLATION", "TIMEOUT", "DATA_INTEGRITY_VIOLATION", "ALREADY_EXISTS", "AGGREGATION_EXCEPTION", "INVALID_FILE", "NONCONFORM_PDF", "CORRUPT", "LOCKED", "XLSX_TOO_MANY_ROWS" ]
+      },
+      "ErrorResponseWithLocation" : {
+        "required" : [ "errorCode", "errorLocation" ],
+        "type" : "object",
+        "properties" : {
+          "errorCode" : {
+            "$ref" : "#/components/schemas/ErrorCode"
+          },
+          "errorLocation" : {
+            "type" : "string"
+          },
+          "message" : {
+            "type" : "string"
+          }
+        }
+      },
+      "EventMetaData" : {
+        "type" : "object",
+        "properties" : {
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "location" : {
+            "type" : "string"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "subject" : {
+            "type" : "string"
+          }
+        }
+      },
+      "EventTimeData" : {
+        "required" : [ "end", "start", "wholeDay" ],
+        "type" : "object",
+        "properties" : {
+          "end" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "start" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "wholeDay" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "EventType" : {
+        "type" : "string",
+        "enum" : [ "BUSINESS_CASE", "HOLIDAY", "SERVICE", "VACATION" ]
+      },
+      "EventWithTimeData" : {
+        "required" : [ "id", "timeData" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "timeData" : {
+            "$ref" : "#/components/schemas/EventTimeData"
+          }
+        }
+      },
+      "ExternalAddFacilityFileStateRequest" : {
+        "required" : [ "name" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          }
+        },
+        "description" : "Request used for adding facilities from external sources"
+      },
+      "ExternalAddPersonFileStateRequest" : {
+        "required" : [ "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "The date of birth of the Person.",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Person.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Person.",
+            "example" : "Doe"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name at birth of the Person.",
+            "example" : "Smith"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Person.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The place of birth (without country) of the Person.",
+            "example" : "Berlin"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a Person.",
+            "example" : "Prof. Dr."
+          }
+        },
+        "description" : "Request used for adding persons from external sources"
+      },
+      "FacilityContactPerson" : {
+        "required" : [ "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "emailAddress" : {
+            "maxLength" : 254,
+            "minLength" : 6,
+            "type" : "string",
+            "description" : "The email addresses of the Contact Person.",
+            "example" : "mail1@address.de"
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Contact Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Contact Person.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "maxLength" : 23,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The phone number of the Contact Person.",
+            "example" : "+491234567890"
+          },
+          "role" : {
+            "maxLength" : 255,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The role of the Contact Person in the Facility.",
+            "example" : "CEO"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of the Contact Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "FacilityContactPersonDiff" : {
+        "required" : [ "facilityContactPersonDtoDiffDto" ],
+        "type" : "object",
+        "properties" : {
+          "facilityContactPersonDtoDiffDto" : {
+            "$ref" : "#/components/schemas/DiffFacilityContactPerson"
+          }
+        }
+      },
+      "FacilityDetails" : {
+        "required" : [ "name" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 0,
+              "type" : "string"
+            }
+          }
+        },
+        "description" : "The data relating to a facility"
+      },
+      "FileDeletionApprovalRequestNotification" : {
+        "required" : [ "createdAt", "createdBy", "fileName", "id", "procedureId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractNotification"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "fileName" : {
+              "type" : "string"
+            },
+            "procedureId" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        } ]
+      },
+      "FindIcd10CodesRequest" : {
+        "required" : [ "codes" ],
+        "type" : "object",
+        "properties" : {
+          "codes" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        }
+      },
+      "FindIcd10CodesResponse" : {
+        "required" : [ "existingCodes" ],
+        "type" : "object",
+        "properties" : {
+          "existingCodes" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Icd10Code"
+            }
+          }
+        }
+      },
+      "GdprFacility" : {
+        "required" : [ "address", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "dataTransmitterPseudonymId" : {
+              "type" : "string",
+              "description" : "The 'DatenübermittlerPseudonymId' of the MUK user",
+              "example" : "du-986b2b54ab89cf4ed674ad8c3126b966b54d4872"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Facility.",
+              "example" : "mail@address.de"
+            },
+            "name" : {
+              "maxLength" : 300,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the Facility.",
+              "example" : "123 Example Facility"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The phone number of the Facility.",
+              "example" : "+491234567890"
+            }
+          }
+        } ]
+      },
+      "GdprIdentificationData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "GdprPerson" : {
+        "required" : [ "address", "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "bpk2" : {
+              "type" : "string",
+              "description" : "The bpk2 of the BundId user",
+              "example" : "VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0"
+            },
+            "dateOfBirth" : {
+              "type" : "string",
+              "description" : "The date of birth of the Person.",
+              "format" : "date",
+              "example" : "2000-01-01"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Person.",
+              "example" : "mail@address.de"
+            },
+            "firstName" : {
+              "maxLength" : 80,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The given name(s) of the Person.",
+              "example" : "John"
+            },
+            "lastName" : {
+              "maxLength" : 120,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The last name of the Person.",
+              "example" : "Doe"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 0,
+              "type" : "string",
+              "description" : "The phone number of the Person.",
+              "example" : "+491234567890"
+            },
+            "salutation" : {
+              "$ref" : "#/components/schemas/Salutation"
+            },
+            "title" : {
+              "maxLength" : 119,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The academic title of the Person.",
+              "example" : "Prof. Dr."
+            }
+          }
+        } ]
+      },
+      "GdprProcedureSortKey" : {
+        "type" : "string",
+        "enum" : [ "CREATED_AT" ]
+      },
+      "GdprProcedureStatus" : {
+        "type" : "string",
+        "description" : "A list of statuses a GDPR procedure can have.",
+        "enum" : [ "DRAFT", "OPEN", "IN_PROGRESS", "CLOSED", "ABORTED" ]
+      },
+      "GdprProcedureType" : {
+        "type" : "string",
+        "description" : "A list of types of GDPR procedures.",
+        "enum" : [ "RIGHT_OF_ACCESS", "RIGHT_TO_ERASURE", "RIGHT_TO_OBJECT", "RIGHT_TO_RECTIFICATION" ]
+      },
+      "Gender" : {
+        "type" : "string",
+        "description" : "The list of genders as specified in the German Personenstandsgesetz.",
+        "enum" : [ "NOT_SPECIFIED", "DIVERSE", "FEMALE", "MALE" ]
+      },
+      "GetActiveSessionsResponse" : {
+        "required" : [ "sessions" ],
+        "type" : "object",
+        "properties" : {
+          "sessions" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ActiveUserSession"
+            }
+          }
+        }
+      },
+      "GetAggregatedNotificationsResponse" : {
+        "required" : [ "errorResponses", "notifications", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "errorResponses" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ErrorResponseWithLocation"
+            }
+          },
+          "notifications" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/AbsenceNotification"
+              }, {
+                "$ref" : "#/components/schemas/FileDeletionApprovalRequestNotification"
+              }, {
+                "$ref" : "#/components/schemas/ProgressEntryDeletionApprovalRequestNotification"
+              }, {
+                "$ref" : "#/components/schemas/SimpleNotification"
+              }, {
+                "$ref" : "#/components/schemas/TaskDueAtReminderNotification"
+              } ]
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetAggregatedProcedureMetricsResponse" : {
+        "required" : [ "errorResponses", "procedureMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "errorResponses" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ErrorResponseWithLocation"
+            }
+          },
+          "procedureMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureMetric"
+            }
+          }
+        }
+      },
+      "GetAggregatedRecentProceduresResponse" : {
+        "required" : [ "errorResponses", "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "errorResponses" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ErrorResponseWithLocation"
+            }
+          },
+          "procedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          }
+        }
+      },
+      "GetAggregatedTasksResponse" : {
+        "required" : [ "count", "errorResponses", "resolvedUsers", "tasks" ],
+        "type" : "object",
+        "properties" : {
+          "count" : {
+            "type" : "integer",
+            "description" : "total number of  tasks for this query",
+            "format" : "int64"
+          },
+          "errorResponses" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ErrorResponseWithLocation"
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "tasks" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Task"
+            }
+          }
+        }
+      },
+      "GetBaseFeatureTogglesResponse" : {
+        "required" : [ "disabledOldFeatures", "enabledNewFeatures" ],
+        "type" : "object",
+        "properties" : {
+          "disabledOldFeatures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BaseFeature"
+            }
+          },
+          "enabledNewFeatures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BaseFeature"
+            }
+          }
+        }
+      },
+      "GetBlockingEventsOfCalendarsRequest" : {
+        "required" : [ "calendarIds", "timeRanges" ],
+        "type" : "object",
+        "properties" : {
+          "calendarIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "timeRanges" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TimeRange"
+            }
+          }
+        }
+      },
+      "GetBlockingEventsOfCalendarsResponse" : {
+        "required" : [ "calendarsWithBlockingEvents", "notFoundCalendarIds" ],
+        "type" : "object",
+        "properties" : {
+          "calendarsWithBlockingEvents" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BlockingEventsOfCalendar"
+            }
+          },
+          "notFoundCalendarIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetBlockingEventsOfResourcesRequest" : {
+        "required" : [ "resourceIds", "timeRangeEnd", "timeRangeStart" ],
+        "type" : "object",
+        "properties" : {
+          "resourceIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "timeRangeEnd" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "timeRangeStart" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "GetBlockingEventsOfResourcesResponse" : {
+        "required" : [ "notFoundResourceIds", "resourcesWithBlockingEvents" ],
+        "type" : "object",
+        "properties" : {
+          "notFoundResourceIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "resourcesWithBlockingEvents" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BlockingEventsOfResource"
+            }
+          }
+        }
+      },
+      "GetBusinessCaseEventResponse" : {
+        "required" : [ "errorResponses", "event" ],
+        "type" : "object",
+        "properties" : {
+          "errorResponses" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ErrorResponseWithLocation"
+            }
+          },
+          "event" : {
+            "$ref" : "#/components/schemas/DetailedEvent"
+          }
+        }
+      },
+      "GetCalendarsResponse" : {
+        "required" : [ "calendars" ],
+        "type" : "object",
+        "properties" : {
+          "calendars" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Calendar"
+            }
+          }
+        }
+      },
+      "GetCitizenPermissionsResponse" : {
+        "required" : [ "permissions" ],
+        "type" : "object",
+        "properties" : {
+          "permissions" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CitizenUserRole"
+            }
+          }
+        }
+      },
+      "GetCitizenSelfUserResponse" : {
+        "type" : "object",
+        "properties" : {
+          "selfBundIdUserNameDto" : {
+            "$ref" : "#/components/schemas/BundIdUserAttributes"
+          },
+          "selfMukUserNameDto" : {
+            "$ref" : "#/components/schemas/MukUserAttributes"
+          }
+        }
+      },
+      "GetCitizenSelfUsersGdprProceduresResponse" : {
+        "required" : [ "gdprProcedures" ],
+        "type" : "object",
+        "properties" : {
+          "gdprProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CitizenUsersGdprProcedure"
+            }
+          }
+        }
+      },
+      "GetConfigurationResponse" : {
+        "required" : [ "activeModules", "maxFileSize" ],
+        "type" : "object",
+        "properties" : {
+          "activeModules" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessModule"
+            }
+          },
+          "maxFileSize" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetContactHistoryResponse" : {
+        "required" : [ "entries", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "entries" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ContactHistoryEntry"
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetContactsRequest" : {
+        "required" : [ "ids" ],
+        "type" : "object",
+        "properties" : {
+          "ids" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "description" : "A list of IDs of Contacts.",
+            "example" : "['UUID_1','UUID_4','UUID_5']",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetContactsResponse" : {
+        "required" : [ "contactResponses", "notFoundIds" ],
+        "type" : "object",
+        "properties" : {
+          "contactResponses" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/InstitutionContact"
+              }, {
+                "$ref" : "#/components/schemas/PersonContact"
+              } ]
+            }
+          },
+          "notFoundIds" : {
+            "type" : "array",
+            "description" : "A list of IDs of requested Contacts, which have not been found in the database.",
+            "example" : "['UUID_1','UUID_4','UUID_5']",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetDepartmentInfoResponse" : {
+        "required" : [ "city", "country", "email", "homepage", "houseNumber", "location", "name", "phoneNumber", "postalCode", "street" ],
+        "type" : "object",
+        "properties" : {
+          "abbreviation" : {
+            "type" : "string",
+            "description" : "The abbreviation of the name of the department",
+            "example" : "LTG"
+          },
+          "city" : {
+            "type" : "string",
+            "description" : "The name of the city where the department is located",
+            "example" : "Berlin"
+          },
+          "country" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "email" : {
+            "type" : "string",
+            "description" : "The email address of the department",
+            "example" : "mail@address.de"
+          },
+          "homepage" : {
+            "type" : "string",
+            "description" : "The domain of the department's official homepage, excluding protocols",
+            "example" : "department-homepage.de"
+          },
+          "houseNumber" : {
+            "type" : "string",
+            "description" : "The house number at the department's address, including any extensions or suffixes",
+            "example" : "1b"
+          },
+          "location" : {
+            "$ref" : "#/components/schemas/Location"
+          },
+          "name" : {
+            "type" : "string",
+            "description" : "The name of the department",
+            "example" : "Gesundheitsamt Landkreis Testgebiet"
+          },
+          "phoneNumber" : {
+            "type" : "string",
+            "description" : "The primary contact telephone number for the department",
+            "example" : "+491234567890"
+          },
+          "postalCode" : {
+            "type" : "string",
+            "description" : "The postal code for the department’s address",
+            "example" : "12345"
+          },
+          "street" : {
+            "type" : "string",
+            "description" : "The street name for the department’s address, not including the house number",
+            "example" : "Beispielweg"
+          }
+        }
+      },
+      "GetEventsOfCalendarResponse" : {
+        "required" : [ "calendarId", "errorResponses", "events" ],
+        "type" : "object",
+        "properties" : {
+          "calendarId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "errorResponses" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ErrorResponseWithLocation"
+            }
+          },
+          "events" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedEventWithoutCalendarId"
+            }
+          }
+        }
+      },
+      "GetEventsResponse" : {
+        "required" : [ "elements", "hasNext" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/UserEvent"
+            }
+          },
+          "hasNext" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "GetEventsWithTimeDataRequest" : {
+        "required" : [ "eventIds" ],
+        "type" : "object",
+        "properties" : {
+          "eventIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetEventsWithTimeDataResponse" : {
+        "required" : [ "events", "notFoundEventIds" ],
+        "type" : "object",
+        "properties" : {
+          "events" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/EventWithTimeData"
+            }
+          },
+          "notFoundEventIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetFacilityDiffResponse" : {
+        "required" : [ "billingAddressDiff", "contactAddressDiff", "contactPersonsDiff", "facilityDetailsDiff", "referenceVersion" ],
+        "type" : "object",
+        "properties" : {
+          "billingAddressDiff" : {
+            "$ref" : "#/components/schemas/DiffAddress"
+          },
+          "contactAddressDiff" : {
+            "$ref" : "#/components/schemas/DiffAddress"
+          },
+          "contactPersonsDiff" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPersonDiff"
+            }
+          },
+          "facilityDetailsDiff" : {
+            "$ref" : "#/components/schemas/DiffFacilityDetails"
+          },
+          "referenceVersion" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "The version of the reference facility",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetFacilityFileStateResponse" : {
+        "required" : [ "contactPersons", "dataOrigin", "emailAddresses", "id", "name", "phoneNumbers", "referenceVersion" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Facility.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referenceFacility it is connected to.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          }
+        }
+      },
+      "GetFacilityFileStatesRequest" : {
+        "required" : [ "fileStateIds" ],
+        "type" : "object",
+        "properties" : {
+          "checkOutdated" : {
+            "type" : "boolean"
+          },
+          "fileStateIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "description" : "A list of Ids for requested Facility File States.",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetFacilityFileStatesResponse" : {
+        "required" : [ "facilityFileStates", "notFoundIds" ],
+        "type" : "object",
+        "properties" : {
+          "facilityFileStates" : {
+            "type" : "array",
+            "description" : "A list of requested File States of Facilities.",
+            "items" : {
+              "$ref" : "#/components/schemas/GetFacilityFileStateResponse"
+            }
+          },
+          "notFoundIds" : {
+            "type" : "array",
+            "description" : "A list containing the IDs of those requested facility file states which could not be found in the database.",
+            "example" : "['UUID_1','UUID_4','UUID_5']",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetFileStateIdsBulkRequest" : {
+        "required" : [ "fileStateIds" ],
+        "type" : "object",
+        "properties" : {
+          "fileStateIds" : {
+            "type" : "array",
+            "description" : "A list of UUIDs to find associated file state ids for",
+            "items" : {
+              "type" : "string",
+              "description" : "A list of UUIDs to find associated file state ids for",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetFileStateIdsBulkResponse" : {
+        "required" : [ "fileStateIds" ],
+        "type" : "object",
+        "properties" : {
+          "fileStateIds" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "array",
+              "description" : "A map of UUIDs to lists of the associated file state ids",
+              "items" : {
+                "type" : "string",
+                "description" : "A map of UUIDs to lists of the associated file state ids",
+                "format" : "uuid"
+              }
+            },
+            "description" : "A map of UUIDs to lists of the associated file state ids"
+          }
+        }
+      },
+      "GetFileStateIdsResponse" : {
+        "required" : [ "fileStateIds" ],
+        "type" : "object",
+        "properties" : {
+          "fileStateIds" : {
+            "type" : "array",
+            "description" : "A list of Ids of File States that are associated to the same Reference Data.",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetGdprDownloadsResponse" : {
+        "required" : [ "downloadIds" ],
+        "type" : "object",
+        "properties" : {
+          "downloadIds" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetGdprProcedureDetailsPageResponse" : {
+        "required" : [ "facilityMatches", "hasCentralFileDownload", "linkedCentralFileFacilities", "linkedCentralFilePersons", "personMatches", "procedure" ],
+        "type" : "object",
+        "properties" : {
+          "facilityMatches" : {
+            "type" : "array",
+            "description" : "Search result of likely related Reference Data for Facilities from the Central Files for this GDPR procedure.",
+            "items" : {
+              "$ref" : "#/components/schemas/GetReferenceFacilityResponse"
+            }
+          },
+          "hasCentralFileDownload" : {
+            "type" : "boolean"
+          },
+          "linkedCentralFileFacilities" : {
+            "type" : "array",
+            "description" : "Reference Data of Facilities from the Central File that has already been confirmed to be linked to this GDPR procedure.",
+            "items" : {
+              "$ref" : "#/components/schemas/GetReferenceFacilityResponse"
+            }
+          },
+          "linkedCentralFilePersons" : {
+            "type" : "array",
+            "description" : "Reference Data of Persons from the Central File that has already been confirmed to be linked to this GDPR procedure.",
+            "items" : {
+              "$ref" : "#/components/schemas/GetReferencePersonResponse"
+            }
+          },
+          "personMatches" : {
+            "type" : "array",
+            "description" : "Search result of likely related Reference Data for Persons from the Central Files for this GDPR procedure.",
+            "items" : {
+              "$ref" : "#/components/schemas/GetReferencePersonResponse"
+            }
+          },
+          "procedure" : {
+            "$ref" : "#/components/schemas/GetGdprProcedureResponse"
+          }
+        }
+      },
+      "GetGdprProcedureFileStateIdsResponse" : {
+        "required" : [ "facilityFileStateIds", "personFileStateIds" ],
+        "type" : "object",
+        "properties" : {
+          "facilityFileStateIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "personFileStateIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetGdprProcedureResponse" : {
+        "required" : [ "centralFileIds", "createdAt", "id", "identificationData", "status", "type", "version" ],
+        "type" : "object",
+        "properties" : {
+          "centralFileIds" : {
+            "type" : "array",
+            "description" : "The list of Ids of a set of Reference Data from the Central Files that shall be processed in this GDPR procedure.",
+            "example" : "[UUID_2, UUID_3]",
+            "items" : {
+              "type" : "string",
+              "description" : "The list of Ids of a set of Reference Data from the Central Files that shall be processed in this GDPR procedure.",
+              "format" : "uuid"
+            }
+          },
+          "closedAt" : {
+            "type" : "string",
+            "description" : "The date and time of when this GDPR procedure was completed or cancelled.",
+            "format" : "date-time",
+            "example" : "2024-02-01T00:00:00.123456Z"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "description" : "The date and time of when the GDPR procedure was created.",
+            "format" : "date-time",
+            "example" : "2024-02-01T00:00:00.123456Z"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "The Id of the GDPR procedure.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "identificationData" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GdprFacility"
+            }, {
+              "$ref" : "#/components/schemas/GdprPerson"
+            } ]
+          },
+          "internalNote" : {
+            "type" : "string",
+            "description" : "The internal note used to define the result of a procedure when closing or cancelling.",
+            "example" : "Could not find any datasets to correct, likely already deleted."
+          },
+          "matterOfConcern" : {
+            "type" : "string",
+            "description" : "The matter of concern for this GDPR procedure, only relevant for right to correction and right to objection.",
+            "example" : "Person requested to stop all related procedures."
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/GdprProcedureStatus"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          },
+          "version" : {
+            "type" : "integer",
+            "description" : "Version of the entity. Each time the entity is changed, it is incremented by one.",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetGdprProceduresResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GetGdprProcedureResponse"
+            }
+          },
+          "totalNumberOfElements" : {
+            "type" : "integer",
+            "description" : "The total number of GDPR procedures in the response.",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetGroupsResponse" : {
+        "required" : [ "groups" ],
+        "type" : "object",
+        "properties" : {
+          "groups" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/UserGroup"
+            }
+          }
+        }
+      },
+      "GetInventoryItemsResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InventoryItem"
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "The total number of Inventory Items in the response.",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetLabelsResponse" : {
+        "required" : [ "elements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Label"
+            }
+          }
+        }
+      },
+      "GetMergedContactsResponse" : {
+        "required" : [ "contactIds" ],
+        "type" : "object",
+        "properties" : {
+          "contactIds" : {
+            "type" : "array",
+            "description" : "List of contact IDs that have been merged into the requested contact",
+            "items" : {
+              "type" : "string",
+              "description" : "List of contact IDs that have been merged into the requested contact",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetPersonDiffResponse" : {
+        "required" : [ "billingAddressDiff", "contactAddressDiff", "personDetailsDiff", "referenceVersion" ],
+        "type" : "object",
+        "properties" : {
+          "billingAddressDiff" : {
+            "$ref" : "#/components/schemas/DiffAddress"
+          },
+          "contactAddressDiff" : {
+            "$ref" : "#/components/schemas/DiffAddress"
+          },
+          "personDetailsDiff" : {
+            "$ref" : "#/components/schemas/DiffPersonDetails"
+          },
+          "referenceVersion" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "The version of the reference person",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetPersonFileStateIdsByKeyAttributesRequest" : {
+        "required" : [ "searchAttributes" ],
+        "type" : "object",
+        "properties" : {
+          "searchAttributes" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/PersonKeyAttributes"
+            }
+          }
+        }
+      },
+      "GetPersonFileStateIdsByKeyAttributesResponse" : {
+        "required" : [ "fileStateIdsByPersons" ],
+        "type" : "object",
+        "properties" : {
+          "fileStateIdsByPersons" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "array",
+              "items" : {
+                "type" : "string",
+                "format" : "uuid"
+              }
+            }
+          }
+        }
+      },
+      "GetPersonFileStateResponse" : {
+        "required" : [ "dataOrigin", "dateOfBirth", "emailAddresses", "firstName", "gender", "id", "lastName", "phoneNumbers", "referenceVersion", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "The date of birth of the Person.",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Person.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Person.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Person.",
+            "example" : "Doe"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name at birth of the Person.",
+            "example" : "Smith"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referencePerson it is connected to. Set to 'null' if unchecked.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Person.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The place of birth (without country) of the Person.",
+            "example" : "Berlin"
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "GetPersonFileStatesRequest" : {
+        "required" : [ "fileStateIds" ],
+        "type" : "object",
+        "properties" : {
+          "checkOutdated" : {
+            "type" : "boolean"
+          },
+          "fileStateIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "description" : "A list of Ids for requested Person File States.",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "sortParameters" : {
+            "$ref" : "#/components/schemas/GetPersonFileStatesSortParameters"
+          }
+        }
+      },
+      "GetPersonFileStatesResponse" : {
+        "required" : [ "notFoundIds", "personFileStates" ],
+        "type" : "object",
+        "properties" : {
+          "notFoundIds" : {
+            "type" : "array",
+            "description" : "A list containing the IDs of those requested person file states which could not be found in the database during a bulk-get operation.",
+            "example" : "['UUID_1','UUID_4','UUID_5']",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "personFileStates" : {
+            "type" : "array",
+            "description" : "A list of person file states",
+            "items" : {
+              "$ref" : "#/components/schemas/GetPersonFileStateResponse"
+            }
+          }
+        }
+      },
+      "GetPersonFileStatesSortParameters" : {
+        "required" : [ "sortDirection", "sortKey" ],
+        "type" : "object",
+        "properties" : {
+          "pageNumber" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "pageSize" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "sortDirection" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          },
+          "sortKey" : {
+            "$ref" : "#/components/schemas/GetPersonsSortKey"
+          }
+        }
+      },
+      "GetPersonsSortKey" : {
+        "type" : "string",
+        "enum" : [ "FIRST_NAME", "LAST_NAME", "DATE_OF_BIRTH" ]
+      },
+      "GetProcedureConfigResponse" : {
+        "type" : "object",
+        "properties" : {
+          "supportedManualProgressEntryTypes" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ManualProgressEntryType"
+            }
+          }
+        }
+      },
+      "GetPublicEmployeeUserKeysResponse" : {
+        "required" : [ "publicUserKeys" ],
+        "type" : "object",
+        "properties" : {
+          "publicUserKeys" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/PublicEmployeeUserKey"
+            }
+          }
+        },
+        "description" : "Contains the details on the public keys from users which have the right to decrypt audit log files\n"
+      },
+      "GetReferenceFacilityResponse" : {
+        "required" : [ "contactPersons", "dataOrigin", "emailAddresses", "id", "name", "phoneNumbers", "version" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Reference Facility. This Id MUST NOT be persisted in any other database.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "version" : {
+            "type" : "integer",
+            "description" : "Version of the entity. Each time the entity is changed, it is incremented by one.",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetReferencePersonResponse" : {
+        "required" : [ "dataOrigin", "dateOfBirth", "emailAddresses", "firstName", "gender", "id", "lastName", "phoneNumbers", "salutation", "version" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "The date of birth of the Person.",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Person.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Person.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Person.",
+            "example" : "Doe"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name at birth of the Person.",
+            "example" : "Smith"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Person.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The place of birth (without country) of the Person.",
+            "example" : "Berlin"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a Person.",
+            "example" : "Prof. Dr."
+          },
+          "version" : {
+            "type" : "integer",
+            "description" : "Version of the entity. Each time the entity is changed, it is incremented by one.",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetRelevantCalendarsResponse" : {
+        "required" : [ "currentUserCalendar", "globalCalendars", "resolvedUsers", "userGroupCalendarInfos" ],
+        "type" : "object",
+        "properties" : {
+          "currentUserCalendar" : {
+            "$ref" : "#/components/schemas/UserCalendar"
+          },
+          "globalCalendars" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GlobalCalendar"
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "userGroupCalendarInfos" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/UserGroupCalendarInfo"
+            }
+          }
+        }
+      },
+      "GetResourceCalendarsRequest" : {
+        "required" : [ "resourceIds" ],
+        "type" : "object",
+        "properties" : {
+          "resourceIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetResourceCalendarsResponse" : {
+        "required" : [ "notFoundResourceIds", "resourceCalendars" ],
+        "type" : "object",
+        "properties" : {
+          "notFoundResourceIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "resourceCalendars" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ResourceCalendar"
+            }
+          }
+        }
+      },
+      "GetResourcesResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Resource"
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "The total number of Resources in the response.",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetTaskMetricsResponse" : {
+        "required" : [ "businessModule", "closedProcedureCount", "fastestProcedures", "procedureType", "slowestProcedures", "taskMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedProcedureCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "fastestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "slowestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "taskMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskMetric"
+            }
+          }
+        }
+      },
+      "GetTasksSortBy" : {
+        "type" : "string",
+        "enum" : [ "PRIORITY", "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "GetTasksSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetUserCalendarsRequest" : {
+        "required" : [ "userIds" ],
+        "type" : "object",
+        "properties" : {
+          "userIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetUserCalendarsResponse" : {
+        "required" : [ "notFoundUserIds", "userCalendars" ],
+        "type" : "object",
+        "properties" : {
+          "notFoundUserIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "userCalendars" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/UserCalendar"
+            }
+          }
+        }
+      },
+      "GetUserManagementPageResponse" : {
+        "required" : [ "groupMembers", "selfGroups", "selfUser" ],
+        "type" : "object",
+        "properties" : {
+          "groupMembers" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GroupMember"
+            }
+          },
+          "selfGroups" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/UserGroup"
+            }
+          },
+          "selfUser" : {
+            "$ref" : "#/components/schemas/User"
+          }
+        }
+      },
+      "GetUsersRequest" : {
+        "required" : [ "userIds" ],
+        "type" : "object",
+        "properties" : {
+          "ignoreUnknownId" : {
+            "type" : "boolean",
+            "description" : "A flag to ignore Ids of unknown Users in the response. Can be set to suppress errors if they are not important"
+          },
+          "userIds" : {
+            "type" : "array",
+            "description" : "A list of requested Ids of Users",
+            "example" : "['UUID_1','UUID_4','UUID_5']",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetUsersResponse" : {
+        "required" : [ "users" ],
+        "type" : "object",
+        "properties" : {
+          "users" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GlobalCalendar" : {
+        "required" : [ "calendarId", "globalCalendarName" ],
+        "type" : "object",
+        "properties" : {
+          "calendarId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "globalCalendarName" : {
+            "type" : "string"
+          }
+        }
+      },
+      "GroupMember" : {
+        "required" : [ "groupNames", "user" ],
+        "type" : "object",
+        "properties" : {
+          "groupNames" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "user" : {
+            "$ref" : "#/components/schemas/User"
+          }
+        }
+      },
+      "HistoryChangeContactCategory" : {
+        "required" : [ "isChanged" ],
+        "type" : "object",
+        "properties" : {
+          "isChanged" : {
+            "type" : "boolean",
+            "description" : "Specifies if the value has been changed or not.",
+            "example" : true
+          },
+          "newValue" : {
+            "$ref" : "#/components/schemas/ContactCategory"
+          }
+        }
+      },
+      "HistoryChangeCountryCode" : {
+        "required" : [ "isChanged" ],
+        "type" : "object",
+        "properties" : {
+          "isChanged" : {
+            "type" : "boolean",
+            "description" : "Specifies if the value has been changed or not.",
+            "example" : true
+          },
+          "newValue" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          }
+        }
+      },
+      "HistoryChangeGender" : {
+        "required" : [ "isChanged" ],
+        "type" : "object",
+        "properties" : {
+          "isChanged" : {
+            "type" : "boolean",
+            "description" : "Specifies if the value has been changed or not.",
+            "example" : true
+          },
+          "newValue" : {
+            "$ref" : "#/components/schemas/Gender"
+          }
+        }
+      },
+      "HistoryChangeListString" : {
+        "required" : [ "isChanged" ],
+        "type" : "object",
+        "properties" : {
+          "isChanged" : {
+            "type" : "boolean",
+            "description" : "Specifies if the value has been changed or not.",
+            "example" : true
+          },
+          "newValue" : {
+            "type" : "array",
+            "description" : "The new object/value if there had been a change.",
+            "items" : {
+              "type" : "string",
+              "description" : "The new object/value if there had been a change."
+            }
+          }
+        }
+      },
+      "HistoryChangeSalutation" : {
+        "required" : [ "isChanged" ],
+        "type" : "object",
+        "properties" : {
+          "isChanged" : {
+            "type" : "boolean",
+            "description" : "Specifies if the value has been changed or not.",
+            "example" : true
+          },
+          "newValue" : {
+            "$ref" : "#/components/schemas/Salutation"
+          }
+        }
+      },
+      "HistoryChangeString" : {
+        "required" : [ "isChanged" ],
+        "type" : "object",
+        "properties" : {
+          "isChanged" : {
+            "type" : "boolean",
+            "description" : "Specifies if the value has been changed or not.",
+            "example" : true
+          },
+          "newValue" : {
+            "type" : "string",
+            "description" : "The new object/value if there had been a change."
+          }
+        }
+      },
+      "HistoryChangeUUID" : {
+        "required" : [ "isChanged" ],
+        "type" : "object",
+        "properties" : {
+          "isChanged" : {
+            "type" : "boolean",
+            "description" : "Specifies if the value has been changed or not.",
+            "example" : true
+          },
+          "newValue" : {
+            "type" : "string",
+            "description" : "The new object/value if there had been a change.",
+            "format" : "uuid"
+          }
+        }
+      },
+      "HistoryEntryType" : {
+        "type" : "string",
+        "description" : "The list of possible types of changes in the history.",
+        "enum" : [ "ADD", "MOD", "DEL" ]
+      },
+      "HistoryStepAddress" : {
+        "required" : [ "changedFields", "modifiedAt", "modifiedBy", "type" ],
+        "type" : "object",
+        "properties" : {
+          "after" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "before" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "changedFields" : {
+            "type" : "array",
+            "description" : "A list of fields that has been changed in this revision step.",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "description" : "The date and time of when the object was modified.",
+            "format" : "date-time",
+            "example" : "2024-02-01T00:00:00.123456Z"
+          },
+          "modifiedBy" : {
+            "type" : "string",
+            "description" : "The Id of the User who modified the object.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "resolvedUser" : {
+            "$ref" : "#/components/schemas/User"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/HistoryEntryType"
+          }
+        }
+      },
+      "HistoryStepContact" : {
+        "required" : [ "changedFields", "modifiedAt", "modifiedBy", "type" ],
+        "type" : "object",
+        "properties" : {
+          "after" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/InstitutionContact"
+            }, {
+              "$ref" : "#/components/schemas/PersonContact"
+            } ]
+          },
+          "before" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/InstitutionContact"
+            }, {
+              "$ref" : "#/components/schemas/PersonContact"
+            } ]
+          },
+          "changedFields" : {
+            "type" : "array",
+            "description" : "A list of fields that has been changed in this revision step.",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "description" : "The date and time of when the object was modified.",
+            "format" : "date-time",
+            "example" : "2024-02-01T00:00:00.123456Z"
+          },
+          "modifiedBy" : {
+            "type" : "string",
+            "description" : "The Id of the User who modified the object.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "resolvedUser" : {
+            "$ref" : "#/components/schemas/User"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/HistoryEntryType"
+          }
+        }
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "Icd10Code" : {
+        "required" : [ "code", "isGroup", "title" ],
+        "type" : "object",
+        "properties" : {
+          "code" : {
+            "type" : "string",
+            "description" : "ICD-10 code or ICD-10 group code",
+            "example" : "A00"
+          },
+          "isGroup" : {
+            "type" : "boolean",
+            "description" : "If true, the returned code specifies an ICD-10 code group."
+          },
+          "title" : {
+            "type" : "string",
+            "description" : "ICD-10 code title",
+            "example" : "Cholera"
+          }
+        }
+      },
+      "ImportInstitutionContactResponse" : {
+        "required" : [ "matches", "totalNumberOfMatches", "vCard" ],
+        "type" : "object",
+        "properties" : {
+          "matches" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InstitutionContact"
+            }
+          },
+          "totalNumberOfMatches" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "The total number of matches in the response.",
+            "format" : "int64"
+          },
+          "vCard" : {
+            "$ref" : "#/components/schemas/VCardInstitutionContact"
+          }
+        }
+      },
+      "ImportPersonContactResponse" : {
+        "required" : [ "matches", "totalNumberOfMatches", "vCard" ],
+        "type" : "object",
+        "properties" : {
+          "matches" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/PersonContact"
+            }
+          },
+          "totalNumberOfMatches" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "The total number of matches in the response.",
+            "format" : "int64"
+          },
+          "vCard" : {
+            "$ref" : "#/components/schemas/VCardPersonContact"
+          }
+        }
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "InstitutionContact" : {
+        "required" : [ "emailAddresses", "id", "name", "phoneNumbers" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Contact"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "category" : {
+              "$ref" : "#/components/schemas/ContactCategory"
+            },
+            "contactAddress" : {
+              "type" : "object",
+              "description" : "The contact address of the Contact.",
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "differentBillingAddress" : {
+              "type" : "object",
+              "description" : "An optional deviating billing address of the Contact.",
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "emailAddresses" : {
+              "type" : "array",
+              "description" : "A list of email addresses of the Contact.",
+              "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+              "items" : {
+                "type" : "string"
+              }
+            },
+            "id" : {
+              "type" : "string",
+              "description" : "Id of the Contact.",
+              "format" : "uuid",
+              "example" : "UUID_1"
+            },
+            "mergedIntoId" : {
+              "type" : "string",
+              "description" : "Id of the Contact into which this Contact has been merged. Contact details are taken from this Id automatically, the Contact history remains with the old Id.",
+              "format" : "uuid",
+              "example" : "UUID_2"
+            },
+            "name" : {
+              "type" : "string",
+              "description" : "The name of the Institution.",
+              "example" : "123 Example Laboratory"
+            },
+            "phoneNumbers" : {
+              "type" : "array",
+              "description" : "A list of telephone numbers of the Contact.",
+              "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+              "items" : {
+                "type" : "string"
+              }
+            }
+          }
+        } ]
+      },
+      "InstitutionContactChange" : {
+        "required" : [ "category", "emailAddresses", "mergedFrom", "mergedInto", "name", "phoneNumbers" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractContactChange"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "category" : {
+              "$ref" : "#/components/schemas/HistoryChangeContactCategory"
+            },
+            "emailAddresses" : {
+              "$ref" : "#/components/schemas/HistoryChangeListString"
+            },
+            "mergedFrom" : {
+              "$ref" : "#/components/schemas/HistoryChangeUUID"
+            },
+            "mergedInto" : {
+              "$ref" : "#/components/schemas/HistoryChangeUUID"
+            },
+            "name" : {
+              "$ref" : "#/components/schemas/HistoryChangeString"
+            },
+            "phoneNumbers" : {
+              "$ref" : "#/components/schemas/HistoryChangeListString"
+            }
+          }
+        } ]
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "InvalidateSessionsRequest" : {
+        "required" : [ "sessions" ],
+        "type" : "object",
+        "properties" : {
+          "sessions" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "InventoryBookingStatus" : {
+        "type" : "string",
+        "description" : "A list of possible statuses of a booking.",
+        "enum" : [ "ACTIVE", "CANCELLED" ]
+      },
+      "InventoryBookingType" : {
+        "type" : "string",
+        "description" : "A list of possible types of a booking.",
+        "enum" : [ "BOOKING", "DELIVERY", "CORRECTION" ]
+      },
+      "InventoryItem" : {
+        "required" : [ "count", "id", "labels", "minCount", "name", "type", "version" ],
+        "type" : "object",
+        "properties" : {
+          "articleNumber" : {
+            "type" : "string",
+            "description" : "A descriptive number of the Inventory Item, e.g. the article or model number.",
+            "example" : "T-800"
+          },
+          "count" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "The amount of stock of the Inventory Item, which is currently available to be booked.",
+            "format" : "int32",
+            "example" : 500
+          },
+          "description" : {
+            "type" : "string",
+            "description" : "Free text field for descriptive information on the Inventory Item.",
+            "example" : "The vaccine is stored in a red container in the fridge of the storage room."
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Inventory Item.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "labels" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Label"
+            }
+          },
+          "minCount" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "When this amount of stock of the Inventory Item is reached, a graphic warning is displayed in the overview list.",
+            "format" : "int32",
+            "example" : 100
+          },
+          "name" : {
+            "type" : "string",
+            "description" : "The name of the Inventory Item.",
+            "example" : "Example Manufacturer's Vaccine"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InventoryItemType"
+          },
+          "version" : {
+            "type" : "integer",
+            "description" : "Version of the entity. Each time the entity is changed, it is incremented by one.",
+            "format" : "int64"
+          }
+        }
+      },
+      "InventoryItemBookingEntry" : {
+        "required" : [ "amount", "bookedAt", "bookingId", "inventoryId", "status", "type", "userId" ],
+        "type" : "object",
+        "properties" : {
+          "amount" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "The amount of stock of the Inventory Item, which is booked for this entry.",
+            "format" : "int32",
+            "example" : 200
+          },
+          "bookedAt" : {
+            "type" : "string",
+            "description" : "The time when the booking was ordered.",
+            "format" : "date-time"
+          },
+          "bookingId" : {
+            "type" : "integer",
+            "description" : "The Id of the booking. This Id is publicly referenced in the booking history.",
+            "format" : "int64",
+            "example" : 123
+          },
+          "inventoryId" : {
+            "type" : "string",
+            "description" : "The Id of the Inventory Item for which the amount of stock was booked.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "ownerKey" : {
+            "type" : "string",
+            "description" : "The Id with which a booking can be cancelled. This Id is private and shall be stored in the business module that did the booking.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/InventoryBookingStatus"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InventoryBookingType"
+          },
+          "userId" : {
+            "type" : "string",
+            "description" : "The Id of the User who booked the amount of stock of the Inventory Item.",
+            "format" : "uuid",
+            "example" : "UUID_6"
+          }
+        }
+      },
+      "InventoryItemBookingHistory" : {
+        "required" : [ "elements", "item", "resolvedUsers", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InventoryItemBookingEntry"
+            }
+          },
+          "item" : {
+            "$ref" : "#/components/schemas/InventoryItem"
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "totalNumberOfElements" : {
+            "type" : "integer",
+            "description" : "The total number booking entries of an Inventory Item in the response.",
+            "format" : "int64"
+          }
+        }
+      },
+      "InventoryItemType" : {
+        "type" : "string",
+        "description" : "The list of possible types under which Inventory Items can be categorized.",
+        "enum" : [ "VACCINE", "PROTECTIVE_EQUIPMENT", "TEST_KIT", "MISC" ]
+      },
+      "InventorySortKey" : {
+        "type" : "string",
+        "description" : "The list of possible parameters by which Inventory Items can be sorted.",
+        "enum" : [ "COUNT", "NAME", "TYPE", "RELEVANCE" ]
+      },
+      "Label" : {
+        "required" : [ "id", "name" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "description" : "The Id of the label.",
+            "format" : "uuid",
+            "example" : "UUID_7"
+          },
+          "name" : {
+            "type" : "string",
+            "description" : "The name of the label (e.g. the name of a business module to which certain Inventory Items or Resources may belong).",
+            "example" : "Travel Medicine"
+          }
+        },
+        "description" : "Labels are primarily used to further categorize Resources and Inventory, apart from their respective types."
+      },
+      "Location" : {
+        "required" : [ "latitude", "longitude" ],
+        "type" : "object",
+        "properties" : {
+          "latitude" : {
+            "type" : "number",
+            "description" : "Geographic coordinate that specifies the north–south angular location of a point on the surface of the Earth.",
+            "format" : "double",
+            "example" : 52.51627
+          },
+          "longitude" : {
+            "type" : "number",
+            "description" : "Geographic coordinate that specifies the east–west angular position of a point on the surface of the Earth.",
+            "format" : "double",
+            "example" : 13.377703
+          }
+        },
+        "description" : "Location defined by latitude and longitude."
+      },
+      "ManualProgressEntryType" : {
+        "type" : "string",
+        "enum" : [ "LETTER", "PHONE_CALL", "NOTE", "EMAIL", "IMAGE", "DOCUMENT" ]
+      },
+      "MarkNotificationsAsReadRequest" : {
+        "required" : [ "notificationIds" ],
+        "type" : "object",
+        "properties" : {
+          "notificationIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "MarkNotificationsAsReadResponse" : {
+        "required" : [ "errorResponses" ],
+        "type" : "object",
+        "properties" : {
+          "errorResponses" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ErrorResponseWithLocation"
+            }
+          }
+        }
+      },
+      "MukUserAttributes" : {
+        "required" : [ "address", "facilityName" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "$ref" : "#/components/schemas/DomesticAddress"
+          },
+          "facilityName" : {
+            "type" : "string"
+          }
+        },
+        "description" : "The MUK attributes of a user"
+      },
+      "PersonContact" : {
+        "required" : [ "emailAddresses", "id", "name", "phoneNumbers" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Contact"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "contactAddress" : {
+              "type" : "object",
+              "description" : "The contact address of the Contact.",
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "differentBillingAddress" : {
+              "type" : "object",
+              "description" : "An optional deviating billing address of the Contact.",
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "emailAddresses" : {
+              "type" : "array",
+              "description" : "A list of email addresses of the Contact.",
+              "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+              "items" : {
+                "type" : "string"
+              }
+            },
+            "externalChatUsername" : {
+              "type" : "string",
+              "description" : "The chat username of the gematik TI-Messenger (matrix chat).",
+              "example" : "@username:server"
+            },
+            "firstName" : {
+              "type" : "string",
+              "description" : "The given name(s) of the Person.",
+              "example" : "John"
+            },
+            "gender" : {
+              "$ref" : "#/components/schemas/Gender"
+            },
+            "id" : {
+              "type" : "string",
+              "description" : "Id of the Contact.",
+              "format" : "uuid",
+              "example" : "UUID_1"
+            },
+            "mergedIntoId" : {
+              "type" : "string",
+              "description" : "Id of the Contact into which this Contact has been merged. Contact details are taken from this Id automatically, the Contact history remains with the old Id.",
+              "format" : "uuid",
+              "example" : "UUID_2"
+            },
+            "name" : {
+              "type" : "string",
+              "description" : "The last name of the Person.",
+              "example" : "Doe"
+            },
+            "phoneNumbers" : {
+              "type" : "array",
+              "description" : "A list of telephone numbers of the Contact.",
+              "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+              "items" : {
+                "type" : "string"
+              }
+            },
+            "salutation" : {
+              "$ref" : "#/components/schemas/Salutation"
+            },
+            "title" : {
+              "type" : "string",
+              "description" : "The academic title of a Person.",
+              "example" : "Prof. Dr."
+            }
+          }
+        } ]
+      },
+      "PersonContactChange" : {
+        "required" : [ "emailAddresses", "externalChatUsername", "firstName", "gender", "mergedFrom", "mergedInto", "name", "phoneNumbers", "salutation", "title" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractContactChange"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "emailAddresses" : {
+              "$ref" : "#/components/schemas/HistoryChangeListString"
+            },
+            "externalChatUsername" : {
+              "$ref" : "#/components/schemas/HistoryChangeString"
+            },
+            "firstName" : {
+              "$ref" : "#/components/schemas/HistoryChangeString"
+            },
+            "gender" : {
+              "$ref" : "#/components/schemas/HistoryChangeGender"
+            },
+            "mergedFrom" : {
+              "$ref" : "#/components/schemas/HistoryChangeUUID"
+            },
+            "mergedInto" : {
+              "$ref" : "#/components/schemas/HistoryChangeUUID"
+            },
+            "name" : {
+              "$ref" : "#/components/schemas/HistoryChangeString"
+            },
+            "phoneNumbers" : {
+              "$ref" : "#/components/schemas/HistoryChangeListString"
+            },
+            "salutation" : {
+              "$ref" : "#/components/schemas/HistoryChangeSalutation"
+            },
+            "title" : {
+              "$ref" : "#/components/schemas/HistoryChangeString"
+            }
+          }
+        } ]
+      },
+      "PersonDetails" : {
+        "required" : [ "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "The date of birth of the Person.",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Person.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Person.",
+            "example" : "Doe"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name at birth of the Person.",
+            "example" : "Smith"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Person.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The place of birth (without country) of the Person.",
+            "example" : "Berlin"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a Person.",
+            "example" : "Prof. Dr."
+          }
+        },
+        "description" : "The personal data relating to a person"
+      },
+      "PersonFileState" : {
+        "required" : [ "dataOrigin", "dateOfBirth", "emailAddresses", "firstName", "gender", "id", "lastName", "phoneNumbers", "referenceVersion", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "The date of birth of the Person.",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Person.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Person.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Person.",
+            "example" : "Doe"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name at birth of the Person.",
+            "example" : "Smith"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Person.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The place of birth (without country) of the Person.",
+            "example" : "Berlin"
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "PersonKeyAttributes" : {
+        "required" : [ "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "lastName" : {
+            "type" : "string"
+          }
+        }
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "PopulationRequest" : {
+        "required" : [ "numberOfEntitiesToPopulate" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfEntitiesToPopulate" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "PostboxAddress" : {
+        "required" : [ "city", "country", "postalCode", "postbox" ],
+        "type" : "object",
+        "description" : "An address which is a postbox.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "postbox" : {
+              "maxLength" : 21,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The number (or name) of the postbox.",
+              "example" : "123"
+            }
+          }
+        } ]
+      },
+      "PostboxContactAddressChange" : {
+        "required" : [ "city", "country", "differentName", "postalCode", "postbox" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractContactChange"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "city" : {
+              "$ref" : "#/components/schemas/HistoryChangeString"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/HistoryChangeCountryCode"
+            },
+            "differentName" : {
+              "$ref" : "#/components/schemas/HistoryChangeString"
+            },
+            "postalCode" : {
+              "$ref" : "#/components/schemas/HistoryChangeString"
+            },
+            "postbox" : {
+              "$ref" : "#/components/schemas/HistoryChangeString"
+            }
+          }
+        } ]
+      },
+      "PrivateEmployeeUserKeyDto" : {
+        "required" : [ "cryptoVersion", "encryptedPrivateKey", "keyIdentifier" ],
+        "type" : "object",
+        "properties" : {
+          "cryptoVersion" : {
+            "type" : "integer",
+            "description" : "The version of the crypto settings used.\nA new crypto version (increased by 1) will become available every time something is changed regarding the GA-Lotse crypto settings for the keys stored here.\nThis attribute tracks, which settings were in use, when the key pair was created",
+            "format" : "int32"
+          },
+          "encryptedPrivateKey" : {
+            "type" : "array",
+            "description" : "The encrypted private key",
+            "items" : {
+              "type" : "string",
+              "description" : "The encrypted private key",
+              "format" : "byte"
+            }
+          },
+          "keyIdentifier" : {
+            "type" : "string",
+            "description" : "Usually the sha256 hash of the corresponding public key.\nUsed to distinguish keys, i.e. to recognize if the currently active keys are the keys that have been used (in the past) to encrypt a given set of data\n"
+          }
+        },
+        "description" : "Contains the details on the encrypted private key from a user, which is necessary for decrypting the symmetric key which is used for decrypting audit log files.\nCan be decrypted with the password of the corresponding user.\n"
+      },
+      "Procedure" : {
+        "required" : [ "archivingRelevanceSettings", "businessModule", "createdAt", "modifiedAt", "procedureId", "procedureStatus", "procedureType", "summary" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevanceSettings" : {
+            "$ref" : "#/components/schemas/ArchivingRelevanceSettings"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "exportedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "procedureStatus" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "pattern" : "[a-zA-Z0-9.].+",
+            "type" : "string"
+          }
+        }
+      },
+      "ProcedureMetric" : {
+        "required" : [ "abortedCount", "businessModule", "closedCount", "inProgressCount", "openOrDraftCount", "procedureType", "totalCount" ],
+        "type" : "object",
+        "properties" : {
+          "abortedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "inProgressCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "openOrDraftCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "totalCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ProcedureStatus" : {
+        "type" : "string",
+        "enum" : [ "DRAFT", "OPEN", "IN_PROGRESS", "CLOSED", "ABORTED" ]
+      },
+      "ProcedureType" : {
+        "type" : "string",
+        "enum" : [ "REGULAR_EXAMINATION", "CAN_CHILD", "ENTRY_LEVEL", "DRAFT_CITIZEN_OFFICE_IMPORT", "DRAFT_SCHOOL_IMPORT", "INSPECTION", "TM_VACCINATION_CONSULTATION", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY_ENTRY", "MEDICAL_REGISTRY_CITIZEN_DRAFT", "MEDICAL_REGISTRY_EMPLOYEE_DRAFT", "DENTAL_CHILD", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "ProcedureWithDuration" : {
+        "required" : [ "createdAt", "id" ],
+        "type" : "object",
+        "properties" : {
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "duration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ProgressEntryDeletionApprovalRequestNotification" : {
+        "required" : [ "createdAt", "createdBy", "id", "manualProgressEntryType", "procedureId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractNotification"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "manualProgressEntryType" : {
+              "type" : "string"
+            },
+            "procedureId" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        } ]
+      },
+      "PublicEmployeeUserKey" : {
+        "required" : [ "cryptoVersion", "keyIdentifier", "publicKey", "userId" ],
+        "type" : "object",
+        "properties" : {
+          "cryptoVersion" : {
+            "type" : "integer",
+            "description" : "The version of the crypto settings used.\nA new crypto version (increased by 1) will become available every time something is changed regarding the GA-Lotse crypto settings for the keys stored here.\nThis attribute tracks, which settings were in use, when the key pair was created",
+            "format" : "int32"
+          },
+          "keyIdentifier" : {
+            "type" : "string",
+            "description" : "Usually the sha256 hash of the corresponding public key.\nUsed to distinguish keys, i.e. to recognize if the currently active keys are the keys that have been used (in the past) to encrypt a given set of data\n"
+          },
+          "publicKey" : {
+            "type" : "array",
+            "description" : "The public key",
+            "items" : {
+              "type" : "string",
+              "description" : "The public key",
+              "format" : "byte"
+            }
+          },
+          "userId" : {
+            "type" : "string",
+            "description" : "The id of the user",
+            "format" : "uuid"
+          }
+        },
+        "description" : "Contains the details on the public key of a user, used for encrypting the symmetric key which is used for encrypting the audit log files\n"
+      },
+      "PutFacilityRequest" : {
+        "required" : [ "updatedFacility" ],
+        "type" : "object",
+        "properties" : {
+          "updatedFacility" : {
+            "$ref" : "#/components/schemas/FacilityDetails"
+          }
+        },
+        "description" : "Request used for performing a consistent update of file state and associated reference facility"
+      },
+      "Realm" : {
+        "type" : "string",
+        "enum" : [ "EMPLOYEES", "CITIZENS" ]
+      },
+      "Resource" : {
+        "required" : [ "id", "labels", "name", "type" ],
+        "type" : "object",
+        "properties" : {
+          "articleNumber" : {
+            "type" : "string",
+            "description" : "A descriptive number of the Resource, e.g. the article or model number.",
+            "example" : "T-800"
+          },
+          "description" : {
+            "type" : "string",
+            "description" : "Free text field for descriptive information on the Resource.",
+            "example" : "The car is parked in the right garage."
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "The Id of the Resource.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "labels" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Label"
+            }
+          },
+          "name" : {
+            "type" : "string",
+            "description" : "The name of the Resource.",
+            "example" : "White delivery truck"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/ResourceType"
+          }
+        }
+      },
+      "ResourceCalendar" : {
+        "required" : [ "calendarId", "resourceId" ],
+        "type" : "object",
+        "properties" : {
+          "calendarId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "resourceId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ResourceSortKey" : {
+        "type" : "string",
+        "description" : "The list of possible parameters by which Resources can be sorted.",
+        "enum" : [ "TYPE", "NAME", "RELEVANCE" ]
+      },
+      "ResourceType" : {
+        "type" : "string",
+        "description" : "The list of possible types under which Resources can be categorized.",
+        "enum" : [ "BICYCLE", "CAR", "ROOM", "CAMERA", "MEASURING_DEVICE", "MEASURING_KIT", "MISC", "TABLET", "LAPTOP" ]
+      },
+      "RestockInventoryItemRequest" : {
+        "required" : [ "restockingCount" ],
+        "type" : "object",
+        "properties" : {
+          "restockingCount" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "description" : "The amount of stock of the Inventory Item, which shall be added to the currently available amount.",
+            "format" : "int32",
+            "example" : 200
+          }
+        }
+      },
+      "Salutation" : {
+        "type" : "string",
+        "description" : "A list of categories for the salutation from which specific salutation phrases can be derived. The choice of salutation is free for every citizen and not dependent on gender.",
+        "example" : "NOT_SPECIFIED",
+        "enum" : [ "NOT_SPECIFIED", "NEUTRAL", "FEMALE", "MALE" ]
+      },
+      "SearchContactsResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/InstitutionContact"
+              }, {
+                "$ref" : "#/components/schemas/PersonContact"
+              } ]
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "The total number of Contacts in the response.",
+            "format" : "int64"
+          }
+        }
+      },
+      "SearchIcd10CodesResponse" : {
+        "required" : [ "codes" ],
+        "type" : "object",
+        "properties" : {
+          "codes" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Icd10Code"
+            }
+          }
+        }
+      },
+      "SearchReferenceFacilitiesResponse" : {
+        "required" : [ "facilities" ],
+        "type" : "object",
+        "properties" : {
+          "facilities" : {
+            "type" : "array",
+            "description" : "A list of Facilities.",
+            "items" : {
+              "$ref" : "#/components/schemas/GetReferenceFacilityResponse"
+            }
+          }
+        }
+      },
+      "SearchReferencePersonsResponse" : {
+        "required" : [ "persons" ],
+        "type" : "object",
+        "properties" : {
+          "persons" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GetReferencePersonResponse"
+            }
+          }
+        }
+      },
+      "SearchStreetResponse" : {
+        "required" : [ "cityDistricts" ],
+        "type" : "object",
+        "properties" : {
+          "cityDistricts" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/District"
+            }
+          }
+        }
+      },
+      "SelfUser" : {
+        "required" : [ "roles", "user" ],
+        "type" : "object",
+        "properties" : {
+          "roles" : {
+            "type" : "array",
+            "description" : "A list of assigned roles for this user",
+            "items" : {
+              "$ref" : "#/components/schemas/UserRole"
+            }
+          },
+          "user" : {
+            "$ref" : "#/components/schemas/User"
+          }
+        }
+      },
+      "SendEmailNotificationRequest" : {
+        "required" : [ "notificationMessage", "userId" ],
+        "type" : "object",
+        "properties" : {
+          "notificationMessage" : {
+            "type" : "string",
+            "description" : "The notification text that is embedded in the notification email template.",
+            "example" : "Löschanfrage"
+          },
+          "userId" : {
+            "type" : "string",
+            "description" : "The id of the user who is the addressee of the mail notification.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          }
+        }
+      },
+      "SendEmailRequest" : {
+        "required" : [ "subject", "text", "to" ],
+        "type" : "object",
+        "properties" : {
+          "from" : {
+            "maxLength" : 254,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The email address that shall be listed as the sender in the email",
+            "example" : "sender@mail-address.de"
+          },
+          "subject" : {
+            "type" : "string",
+            "description" : "The subject of the email",
+            "example" : "Important test email"
+          },
+          "text" : {
+            "type" : "string",
+            "description" : "The content of the email. Currently only plain text is possible",
+            "example" : "Dear John Doe, this a test. Best regards, Jane Doe"
+          },
+          "to" : {
+            "maxLength" : 254,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The email address of the recipient of the email",
+            "example" : "recipient@example.com"
+          }
+        }
+      },
+      "SetMatterOfConcernRequest" : {
+        "required" : [ "concern", "version" ],
+        "type" : "object",
+        "properties" : {
+          "concern" : {
+            "type" : "string",
+            "description" : "The matter of concern for the GDPR procedure."
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "SimpleNotification" : {
+        "required" : [ "createdAt", "id", "message", "title" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractNotification"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "message" : {
+              "type" : "string"
+            },
+            "title" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "SortDirection" : {
+        "type" : "string",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "StartGdprProcedureRequest" : {
+        "required" : [ "version" ],
+        "type" : "object",
+        "properties" : {
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "SyncFileStateRequest" : {
+        "required" : [ "version" ],
+        "type" : "object",
+        "properties" : {
+          "version" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "The version of the reference entity",
+            "format" : "int64"
+          }
+        }
+      },
+      "Task" : {
+        "required" : [ "businessModule", "createdAt", "isOverdue", "modifiedAt", "procedureId", "summary", "taskId", "taskStatus", "taskType", "version" ],
+        "type" : "object",
+        "properties" : {
+          "assignedById" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "assigneeId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "isOverdue" : {
+            "type" : "boolean"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "taskId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "taskStatus" : {
+            "$ref" : "#/components/schemas/TaskStatus"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "TaskDueAtReminderNotification" : {
+        "required" : [ "assignedById", "businessModule", "createdAt", "dueAt", "id", "procedureId", "taskType" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractNotification"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "assignedById" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "dueAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "procedureId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "taskType" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "TaskMetric" : {
+        "required" : [ "moreThanTwoOccurrencesCount", "noOccurrencesCount", "oneOccurrenceCount", "taskType", "twoOccurrencesCount" ],
+        "type" : "object",
+        "properties" : {
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "moreThanTwoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "noOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "oneOccurrenceCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "twoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TaskStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "TaskType" : {
+        "type" : "string",
+        "enum" : [ "BOOK_APPOINTMENT", "PERFORM_SCHOOL_ENTRY_EXAMINATION", "INSPECTION_PLANNING", "INSPECTION_EXECUTION", "INSPECTION_REPORT", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      },
+      "TestHelperLoginAsCitizenAccessCodeUserRequest" : {
+        "required" : [ "citizenUserId" ],
+        "type" : "object",
+        "properties" : {
+          "citizenUserId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "TestHelperLoginRequest" : {
+        "type" : "object",
+        "properties" : {
+          "password" : {
+            "type" : "string"
+          },
+          "realm" : {
+            "$ref" : "#/components/schemas/Realm"
+          },
+          "username" : {
+            "type" : "string"
+          }
+        }
+      },
+      "TimeRange" : {
+        "required" : [ "end", "start" ],
+        "type" : "object",
+        "properties" : {
+          "end" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "start" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "UpdateInstitutionContactRequest" : {
+        "required" : [ "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractUpdateContactRequest"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "category" : {
+              "$ref" : "#/components/schemas/ContactCategory"
+            },
+            "contactAddress" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "differentBillingAddress" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "emailAddresses" : {
+              "type" : "array",
+              "description" : "A list of email addresses of the Contact.",
+              "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+              "items" : {
+                "type" : "string"
+              }
+            },
+            "mergedFrom" : {
+              "type" : "string",
+              "description" : "The Id of another Contact which shall be merged into this one.",
+              "format" : "uuid",
+              "example" : "UUID_6"
+            },
+            "name" : {
+              "maxLength" : 300,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the Institution.",
+              "example" : "123 Example Laboratory"
+            },
+            "phoneNumbers" : {
+              "type" : "array",
+              "description" : "A list of telephone numbers of the Contact.",
+              "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+              "items" : {
+                "maxLength" : 23,
+                "minLength" : 1,
+                "type" : "string"
+              }
+            }
+          }
+        } ]
+      },
+      "UpdateInventoryItemCountRequest" : {
+        "required" : [ "count", "version" ],
+        "type" : "object",
+        "properties" : {
+          "count" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "The corrected amount of stock of the Inventory Item, which is currently available.",
+            "format" : "int32",
+            "example" : 400
+          },
+          "version" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "The version of the Inventory Item whose amount of stock shall be changed. This value has to coincide with the actual version of the Inventory Item to avoid race conditions.",
+            "format" : "int64"
+          }
+        }
+      },
+      "UpdateInventoryItemRequest" : {
+        "required" : [ "minCount", "name", "type" ],
+        "type" : "object",
+        "properties" : {
+          "articleNumber" : {
+            "type" : "string",
+            "description" : "A descriptive number of the Inventory Item, e.g. the article or model number.",
+            "example" : "T-800"
+          },
+          "description" : {
+            "type" : "string",
+            "description" : "Free text field for descriptive information on the Inventory Item.",
+            "example" : "The vaccine is stored in a red container in the fridge of the storage room."
+          },
+          "labelNames" : {
+            "type" : "array",
+            "description" : "A list of label names. Any provided name will be used to resolve existing labels from the database.",
+            "example" : "['Label1','Label2','Label3']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "minCount" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "When this amount of stock of the Inventory Item is reached, a graphic warning is displayed in the overview list.",
+            "format" : "int32",
+            "example" : 100
+          },
+          "name" : {
+            "type" : "string",
+            "description" : "The name of the Inventory Item.",
+            "example" : "Example Manufacturer\"s Vaccine"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InventoryItemType"
+          }
+        }
+      },
+      "UpdatePersonContactRequest" : {
+        "required" : [ "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractUpdateContactRequest"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "contactAddress" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "differentBillingAddress" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "emailAddresses" : {
+              "type" : "array",
+              "description" : "A list of email addresses of the Contact.",
+              "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+              "items" : {
+                "type" : "string"
+              }
+            },
+            "externalChatUsername" : {
+              "maxLength" : 255,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The chat username of the gematik TI-Messenger (matrix chat).",
+              "example" : "@username:server"
+            },
+            "firstName" : {
+              "maxLength" : 80,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The given name(s) of the Person.",
+              "example" : "John"
+            },
+            "gender" : {
+              "$ref" : "#/components/schemas/Gender"
+            },
+            "mergedFrom" : {
+              "type" : "string",
+              "description" : "The Id of another Contact which shall be merged into this one.",
+              "format" : "uuid",
+              "example" : "UUID_6"
+            },
+            "name" : {
+              "maxLength" : 120,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The last name of the Person.",
+              "example" : "Doe"
+            },
+            "phoneNumbers" : {
+              "type" : "array",
+              "description" : "A list of telephone numbers of the Contact.",
+              "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+              "items" : {
+                "maxLength" : 23,
+                "minLength" : 1,
+                "type" : "string"
+              }
+            },
+            "salutation" : {
+              "$ref" : "#/components/schemas/Salutation"
+            },
+            "title" : {
+              "maxLength" : 119,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The academic title of a Person.",
+              "example" : "Prof. Dr."
+            }
+          }
+        } ]
+      },
+      "UpdatePersonInBulkRequest" : {
+        "required" : [ "fileStateId", "updatedPerson" ],
+        "type" : "object",
+        "properties" : {
+          "fileStateId" : {
+            "type" : "string",
+            "description" : "Id of the person file state which shall be updated.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "updatedPerson" : {
+            "$ref" : "#/components/schemas/PersonDetails"
+          }
+        }
+      },
+      "UpdatePersonInBulkResult" : {
+        "required" : [ "newFileStateId", "previousFileStateId" ],
+        "type" : "object",
+        "properties" : {
+          "newFileStateId" : {
+            "type" : "string",
+            "description" : "The id of the corresponding file state which was created during the update operation and contains the new data",
+            "format" : "uuid",
+            "example" : "UUID_4"
+          },
+          "previousFileStateId" : {
+            "type" : "string",
+            "description" : "The id of a person file state for which the update operation was successful",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          }
+        }
+      },
+      "UpdatePersonRequest" : {
+        "required" : [ "updatedPerson" ],
+        "type" : "object",
+        "properties" : {
+          "updatedPerson" : {
+            "$ref" : "#/components/schemas/PersonDetails"
+          }
+        },
+        "description" : "Request used for performing a consistent update of a person file state and its associated reference person"
+      },
+      "UpdatePersonsRequest" : {
+        "required" : [ "updateRequests" ],
+        "type" : "object",
+        "properties" : {
+          "updateRequests" : {
+            "maxItems" : 10000,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/UpdatePersonInBulkRequest"
+            }
+          }
+        },
+        "description" : "Request used for performing the consistent updates of file states and their associated reference persons in a bulk operation\n"
+      },
+      "UpdatePersonsResponse" : {
+        "required" : [ "failedPersonIds", "results" ],
+        "type" : "object",
+        "properties" : {
+          "failedPersonIds" : {
+            "type" : "array",
+            "description" : "A list containing the IDs of those person file states for which the update failed during the bulk operation",
+            "example" : "['UUID_1','UUID_4','UUID_5']",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "results" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/UpdatePersonInBulkResult"
+            }
+          }
+        }
+      },
+      "UpdateReferenceFacilityRequest" : {
+        "required" : [ "facilityDetails", "version" ],
+        "type" : "object",
+        "properties" : {
+          "facilityDetails" : {
+            "$ref" : "#/components/schemas/FacilityDetails"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        },
+        "description" : "Request used to modify reference facility data provided the new state in\nfacilityDetails and the expected current version number.\n"
+      },
+      "UpdateReferencePersonRequest" : {
+        "required" : [ "personDetails", "version" ],
+        "type" : "object",
+        "properties" : {
+          "personDetails" : {
+            "$ref" : "#/components/schemas/PersonDetails"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        },
+        "description" : "Request used to modify reference person data provided the new state in personDetails\nand the expected current version number.\n"
+      },
+      "UpdateResourceRequest" : {
+        "required" : [ "name" ],
+        "type" : "object",
+        "properties" : {
+          "articleNumber" : {
+            "type" : "string",
+            "description" : "A descriptive number of the Resource, e.g. the article or model number.",
+            "example" : "T-800"
+          },
+          "description" : {
+            "type" : "string",
+            "description" : "Free text field for descriptive information on the Resource.",
+            "example" : "The car is parked in the right garage."
+          },
+          "labelNames" : {
+            "type" : "array",
+            "description" : "A list of label names. Any provided name will be used to resolve existing labels from the database.",
+            "example" : "['Label1','Label2','Label3']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "name" : {
+            "type" : "string",
+            "description" : "The name of the Resource.",
+            "example" : "White delivery truck"
+          }
+        }
+      },
+      "UpdateSelfUserRequest" : {
+        "type" : "object",
+        "properties" : {
+          "externalChatUsername" : {
+            "pattern" : "\\p{ASCII}{3,255}",
+            "type" : "string",
+            "description" : "The chat username of the gematik TI-Messenger (matrix chat)",
+            "example" : "@username:server"
+          },
+          "phoneNumber" : {
+            "pattern" : "[-+0-9() ]{1,23}",
+            "type" : "string",
+            "description" : "The phone number of a user",
+            "example" : "+491234567890"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a user",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "User" : {
+        "required" : [ "enabled", "firstName", "lastName", "userId", "username" ],
+        "type" : "object",
+        "properties" : {
+          "email" : {
+            "type" : "string",
+            "description" : "The email address of a user.",
+            "example" : "example@mail.de"
+          },
+          "enabled" : {
+            "type" : "boolean",
+            "description" : "True, if the user can login",
+            "example" : false
+          },
+          "externalChatUsername" : {
+            "type" : "string",
+            "description" : "The chat username of the gematik TI-Messenger (matrix chat).",
+            "example" : "@username:server"
+          },
+          "firstName" : {
+            "type" : "string",
+            "description" : "The given name(s) of a user.",
+            "example" : "John"
+          },
+          "lastName" : {
+            "type" : "string",
+            "description" : "The last name of a user.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "type" : "string",
+            "description" : "The phone number of a user.",
+            "example" : "+491234567890"
+          },
+          "userId" : {
+            "type" : "string",
+            "description" : "The Id of the user.",
+            "format" : "uuid",
+            "example" : "UUID_8"
+          },
+          "username" : {
+            "type" : "string",
+            "description" : "The username which is displayed in the application and can be used for the login.",
+            "example" : "testuser"
+          }
+        }
+      },
+      "UserCalendar" : {
+        "required" : [ "calendarId", "userId" ],
+        "type" : "object",
+        "properties" : {
+          "calendarId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "userId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "UserEvent" : {
+        "required" : [ "timestamp", "type" ],
+        "type" : "object",
+        "properties" : {
+          "ipAddress" : {
+            "type" : "string"
+          },
+          "timestamp" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/UserEventType"
+          }
+        }
+      },
+      "UserEventType" : {
+        "type" : "string",
+        "enum" : [ "LOGIN", "LOGIN_ERROR" ]
+      },
+      "UserGroup" : {
+        "required" : [ "name" ],
+        "type" : "object",
+        "properties" : {
+          "name" : {
+            "type" : "string",
+            "description" : "The name of the group"
+          }
+        }
+      },
+      "UserGroupCalendarInfo" : {
+        "required" : [ "groupName", "userCalendars" ],
+        "type" : "object",
+        "properties" : {
+          "groupName" : {
+            "type" : "string"
+          },
+          "userCalendars" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/UserCalendar"
+            }
+          }
+        }
+      },
+      "UserProfile" : {
+        "required" : [ "calendarEvents", "groups", "isSelf", "user" ],
+        "type" : "object",
+        "properties" : {
+          "calendarEvents" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedEventWithoutCalendarId"
+            }
+          },
+          "groups" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/UserGroup"
+            }
+          },
+          "isSelf" : {
+            "type" : "boolean",
+            "description" : "Shows if user profile belongs to the user which is currently active"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a user",
+            "example" : "Prof. Dr."
+          },
+          "user" : {
+            "$ref" : "#/components/schemas/User"
+          }
+        }
+      },
+      "UserRole" : {
+        "type" : "string",
+        "description" : "A filter for a role users can have",
+        "enum" : [ "INSPECTION_LEADER", "INSPECTION_LANDESAMT_LEADER", "SCHOOL_ENTRY_LEADER", "TRAVEL_MEDICINE_LEADER", "MEASLES_PROTECTION_LEADER", "STATISTICS_LEADER", "BASE_PERSONS_READ", "BASE_PERSONS_WRITE", "BASE_PERSONS_DELETE", "BASE_FACILITIES_READ", "BASE_FACILITIES_WRITE", "BASE_FACILITIES_DELETE", "BASE_RESOURCES_READ", "BASE_RESOURCES_WRITE", "BASE_INVENTORY_READ", "BASE_INVENTORY_USE", "BASE_INVENTORY_ADMINISTRATE", "BASE_LABELS_READ", "BASE_LABELS_WRITE", "BASE_CONTACTS_READ", "BASE_CONTACTS_WRITE", "BASE_GDPR_PROCEDURE_REVIEW", "BASE_GDPR_PROCEDURE_READ", "BASE_GDPR_PROCEDURE_WRITE", "BASE_MUK_FACILITY_LINK_WRITE", "BASE_BUNDID_PERSON_LINK_WRITE", "BASE_GLOBAL_CALENDARS_WRITE", "BASE_CALENDAR_BUSINESS_EVENTS_WRITE", "BASE_PROCEDURES_READ", "BASE_PROCEDURE_METRICS_READ", "BASE_TASKS_READ", "BASE_ACCESS_CODE_USER_ADMIN", "BASE_ACCESS_CODE_USER_VERIFY", "SCHOOL_ENTRY_ADMIN", "INSPECTION_NOTIFICATIONS_READ", "INSPECTION_PROCEDURE_EDIT", "INSPECTION_PROCEDURE_ASSIGN", "INSPECTION_OBJECTTYPES_READ", "INSPECTION_OBJECTTYPES_WRITE", "INSPECTION_CHECKLISTDEFINITIONS_READ", "INSPECTION_CHECKLISTDEFINITIONS_WRITE", "INSPECTION_CORECHECKLISTDEFINITIONS_EDIT", "INSPECTION_CENTRALREPOSITORY_READ", "INSPECTION_CENTRALREPOSITORY_WRITE", "INSPECTION_CENTRALREPOSITORY_DELETE", "INSPECTION_CENTRALREPOSITORY_WRITE_CORECHECKLISTS", "INSPECTION_IMPORT", "TRAVEL_MEDICINE_ADMIN", "MEASLES_PROTECTION_ADMIN", "CHAT_MANAGEMENT_WRITE", "STATISTICS_STATISTICS_READ", "STATISTICS_STATISTICS_WRITE", "STATISTICS_STATISTICS_ADMIN", "BASE_MAIL_SEND", "INBOX_PROCEDURE_WRITE", "PROCEDURE_ARCHIVE", "PROCEDURE_ARCHIVE_ADMIN", "AUDITLOG_FILE_SEND", "AUDITLOG_DECRYPT_AND_ACCESS", "AUDITLOG_AUTHORIZE_ACCESS", "AUDITLOG_PUBLIC_KEYS_READ", "STANDARD_EMPLOYEE", "STI_PROTECTION_USER", "STI_PROTECTION_MFA", "STI_PROTECTION_CONSULTANT", "STI_PROTECTION_PHYSICIAN", "STI_PROTECTION_ADMIN", "STI_PROTECTION_LEADER", "MEDICAL_REGISTRY_LEADER", "MEDICAL_REGISTRY_ADMIN", "DENTAL_LEADER", "DENTAL_ADMIN", "OPEN_DATA_ADMIN", "OPEN_DATA_LEADER", "MEDICAL_REGISTRY_IMPORT", "OFFICIAL_MEDICAL_SERVICE_LEADER", "OFFICIAL_MEDICAL_SERVICE_ADMIN", "BASE_GDPR_VALIDATION_TASK_CLEANUP" ]
+      },
+      "VCardAddress" : {
+        "required" : [ "addressAddition", "city", "country", "houseNumber", "postBox", "postalCode", "street" ],
+        "type" : "object",
+        "properties" : {
+          "addressAddition" : {
+            "type" : "string",
+            "description" : "A descriptive addition to the address from the vCard.",
+            "example" : "2.OG links"
+          },
+          "city" : {
+            "type" : "string",
+            "description" : "The city in which the address from the vCard is located.",
+            "example" : "Berlin"
+          },
+          "country" : {
+            "type" : "string",
+            "description" : "The country of the address from the vCard. Does not have to be a country code.",
+            "example" : "Deutschland"
+          },
+          "houseNumber" : {
+            "type" : "string",
+            "description" : "The house number of the address, extracted from the street address component in the structured address property",
+            "example" : "43-45"
+          },
+          "postBox" : {
+            "type" : "string",
+            "description" : "The postbox (number) of the address from the vCard.",
+            "example" : "123"
+          },
+          "postalCode" : {
+            "type" : "string",
+            "description" : "The postal code of the address from the vCard.",
+            "example" : "10115"
+          },
+          "street" : {
+            "type" : "string",
+            "description" : "The street name of the address, extracted from the street address component in the structured address property",
+            "example" : "Beispielweg"
+          }
+        }
+      },
+      "VCardInstitutionContact" : {
+        "required" : [ "addresses", "emailAddresses", "fullName", "phoneNumbers" ],
+        "type" : "object",
+        "properties" : {
+          "addresses" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/VCardAddress"
+            }
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the contact in the vCard.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "fullName" : {
+            "type" : "string",
+            "description" : "The full name of the contact. This field is taken from the unsorted 'FN'-field in the vCard.",
+            "example" : "Maier GmbH"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the contact in the vCard.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        }
+      },
+      "VCardPersonContact" : {
+        "required" : [ "addresses", "emailAddresses", "firstName", "fullName", "gender", "lastName", "phoneNumbers", "titles" ],
+        "type" : "object",
+        "properties" : {
+          "addresses" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/VCardAddress"
+            }
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the contact in the vCard.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "type" : "string",
+            "description" : "The first name(s) of the contact. This field is filled from the sorted 'N'-field of the vCard, if present.",
+            "example" : "John"
+          },
+          "fullName" : {
+            "type" : "string",
+            "description" : "The full name of the contact including titles, salutations, name prefixes, etc. This field is taken from the unsorted 'FN'-field in the vCard.",
+            "example" : "Mr. John Doe"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "type" : "string",
+            "description" : "The last name(s) of the contact. This field is filled from the sorted 'N'-field of the vCard, if present.",
+            "example" : "Doe"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the contact in the vCard.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "titles" : {
+            "type" : "array",
+            "description" : "A list of (academic) titles of the contact in the vCard.",
+            "example" : "['Prof.','Dr.']",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        }
+      },
+      "VerifyCitizenAccessCodeUserCredentialsRequest" : {
+        "required" : [ "rawSecret" ],
+        "type" : "object",
+        "properties" : {
+          "credentialType" : {
+            "$ref" : "#/components/schemas/CredentialType"
+          },
+          "rawSecret" : {
+            "type" : "string",
+            "description" : "The raw secret value for verification",
+            "example" : "654321"
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/backend/base/openApi.yaml b/backend/base/openApi.yaml
deleted file mode 100644
index 89896e3eb..000000000
--- a/backend/base/openApi.yaml
+++ /dev/null
@@ -1,9575 +0,0 @@
-# Copyright 2025 cronn GmbH
-# SPDX-License-Identifier: Apache-2.0
-
-openapi: 3.0.1
-info:
-  description: This is the api for the base module
-  title: Base Module Api
-  version: "0.1"
-servers:
-- url: http://localhost:8080
-paths:
-  /bundid-person-link:
-    post:
-      operationId: createBundIdPersonLink
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddBundIdPersonLinkRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Establish a link between a BundId user and a person
-      tags:
-      - BundIdPersonLink
-  /bundid-person-link/self/person:
-    get:
-      operationId: getReferencePersonLinkedToBundIdSelfUser
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetReferencePersonResponse"
-          description: OK
-      summary: Get the reference person linked to the BUNDID user which is currently
-        active
-      tags:
-      - BundIdPersonLink
-  /calendars:
-    get:
-      operationId: getCalendars
-      parameters:
-      - in: query
-        name: onlyGlobal
-        required: false
-        schema:
-          type: boolean
-          default: false
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetCalendarsResponse"
-          description: Returns all/global calendars
-      summary: List all calendars
-      tags:
-      - Calendar
-  /calendars/events/base_event:
-    post:
-      operationId: addBaseEvent
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/BaseEventRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/DetailedEvent"
-          description: "Returns the event with augmented attributes, eg. the id"
-      summary: Add an event to a calendar
-      tags:
-      - CalendarEvent
-  /calendars/events/base_event/{eventId}:
-    delete:
-      operationId: deleteBaseEvent
-      parameters:
-      - in: path
-        name: eventId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Returned when the event was deleted
-      summary: Delete an event
-      tags:
-      - CalendarEvent
-    get:
-      operationId: getBaseEvent
-      parameters:
-      - in: path
-        name: eventId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/DetailedEvent"
-          description: Returns the event
-      summary: Get an event
-      tags:
-      - CalendarEvent
-    put:
-      operationId: updateBaseEvent
-      parameters:
-      - in: path
-        name: eventId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/BaseEventRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/DetailedEvent"
-          description: Returns the updated event
-      summary: Update an existing event in a calendar
-      tags:
-      - CalendarEvent
-  /calendars/events/blocking/bulk-get:
-    post:
-      description: The search by date is including events with timeRangeEnd = event.start
-        and timeRangeStart = event.end
-      operationId: getBlockingEventsOfCalendars
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GetBlockingEventsOfCalendarsRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetBlockingEventsOfCalendarsResponse"
-          description: Returns the blocking events in the time range
-      summary: Get all blocking events in the calendars
-      tags:
-      - CalendarEvent
-  /calendars/events/blocking/resources/bulk-get:
-    post:
-      description: The search by date is including events with timeRangeEnd = event.start
-        and timeRangeStart = event.end
-      operationId: getBlockingEventsOfResourceCalendars
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GetBlockingEventsOfResourcesRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetBlockingEventsOfResourcesResponse"
-          description: Returns the blocking events in the time range
-      summary: Get all blocking events in the calendars of the requested resources
-      tags:
-      - CalendarEvent
-  /calendars/events/bulk-get:
-    post:
-      operationId: getEventsWithTimeData
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GetEventsWithTimeDataRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetEventsWithTimeDataResponse"
-          description: Returns the events and a list of event ids which could not
-            be found
-      summary: Get multiple events
-      tags:
-      - CalendarEvent
-  /calendars/events/business_module:
-    post:
-      operationId: addBusinessCaseEvent
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/BusinessCaseEventRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/DetailedEvent"
-          description: "Returns the event with augmented attributes, eg. the id"
-      summary: "Add an event to multiple calendars, global calendars not allowed"
-      tags:
-      - CalendarEvent
-  /calendars/events/business_module/{eventId}:
-    delete:
-      operationId: deleteBusinessCaseEvent
-      parameters:
-      - in: path
-        name: eventId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Returned when the event was deleted
-      summary: Delete an event
-      tags:
-      - CalendarEvent
-    get:
-      operationId: getBusinessCaseEvent
-      parameters:
-      - in: path
-        name: eventId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetBusinessCaseEventResponse"
-          description: Returns the event
-      summary: Get an event
-      tags:
-      - CalendarEvent
-    put:
-      operationId: updateBusinessCaseEvent
-      parameters:
-      - in: path
-        name: eventId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/BusinessCaseEventRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/DetailedEvent"
-          description: Returns the updated event
-      summary: Update an existing event
-      tags:
-      - CalendarEvent
-  /calendars/global:
-    post:
-      operationId: addGlobalCalendar
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddGlobalCalendarRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GlobalCalendar"
-          description: "Returns the Calendar with augmented attributes, eg. the id"
-      summary: Add a global calendar
-      tags:
-      - Calendar
-  /calendars/resource/bulk-get:
-    post:
-      operationId: getResourceCalendars
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GetResourceCalendarsRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetResourceCalendarsResponse"
-          description: Returns links of calendar and resource id and a list of resource
-            ids which could not be found
-      summary: Get multiple resource calendars
-      tags:
-      - Calendar
-  /calendars/resource/{resourceId}:
-    get:
-      operationId: getResourceCalendar
-      parameters:
-      - in: path
-        name: resourceId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/ResourceCalendar"
-          description: "Returns the Calendar with augmented attributes, eg. the id"
-      summary: Get a resource calendar
-      tags:
-      - Calendar
-  /calendars/user/bulk-get:
-    post:
-      operationId: getUserCalendars
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GetUserCalendarsRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetUserCalendarsResponse"
-          description: Returns links of calendar and user id and a list of user ids
-            which could not be found
-      summary: Get multiple user calendars
-      tags:
-      - Calendar
-  /calendars/user/relevant-calendars/self:
-    get:
-      operationId: getRelevantCalendarsForCurrentUser
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetRelevantCalendarsResponse"
-          description: Returns information about the calendar of the current user
-            as well as calendars of users in relevant groups and global calendars
-      summary: Get the calendars relevant for the current user
-      tags:
-      - Calendar
-  /calendars/user/self:
-    get:
-      operationId: getCurrentUserCalendar
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/UserCalendar"
-          description: "Returns the Calendar with augmented attributes, eg. the id"
-      summary: Get the user calendar of the current user
-      tags:
-      - Calendar
-  /calendars/{calendarId}/events:
-    get:
-      description: The search by date is including events with timeRangeEnd = event.start
-        and timeRangeStart = event.end
-      operationId: getEventsOfCalendar
-      parameters:
-      - in: path
-        name: calendarId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetEventsOfCalendarResponse"
-          description: Returns the events in the calendar
-      summary: Get all events in a calendar for a given time range
-      tags:
-      - CalendarEvent
-  /citizen-access-code-users/date-of-birth:
-    post:
-      operationId: addCitizenAccessCodeUserWithDateOfBirthCredential
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddCitizenAccessCodeUserWithDateOfBirthCredentialRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CitizenAccessCodeUser"
-          description: OK
-      summary: Create a new citizen access code user with a date of birth credential
-      tags:
-      - CitizenAccessCodeUser
-  /citizen-access-code-users/pin:
-    post:
-      operationId: addCitizenAccessCodeUserWithPinCredential
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddCitizenAccessCodeUserWithPinCredentialRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CitizenAccessCodeUser"
-          description: OK
-      summary: Create a new citizen access code user with a pin credential
-      tags:
-      - CitizenAccessCodeUser
-  /citizen-access-code-users/{id}:
-    get:
-      operationId: getCitizenAccessCodeUser
-      parameters:
-      - description: Id of the citizen user
-        example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CitizenAccessCodeUser"
-          description: OK
-      summary: Get a citizen access code user
-      tags:
-      - CitizenAccessCodeUser
-  /citizen-access-code-users/{id}/delete:
-    delete:
-      operationId: deleteCitizenAccessCodeUser
-      parameters:
-      - description: Id of the citizen user
-        example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Delete a citizen access code user
-      tags:
-      - CitizenAccessCodeUser
-  /citizen-access-code-users/{id}/verify:
-    post:
-      operationId: verifyCitizenAccessCodeUserCredentials
-      parameters:
-      - description: Id of the citizen user
-        example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/VerifyCitizenAccessCodeUserCredentialsRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Verify citizen access code user credentials
-      tags:
-      - CitizenAccessCodeUser
-  /citizen-users/self:
-    get:
-      operationId: getCitizenSelfUser
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetCitizenSelfUserResponse"
-          description: OK
-      summary: Get the name of the citizen user which is currently active
-      tags:
-      - CitizenUser
-  /citizen-users/self/permissions:
-    get:
-      operationId: getCitizenSelfUserPermissions
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetCitizenPermissionsResponse"
-          description: OK
-      summary: Get the permissions of the user which is currently active
-      tags:
-      - CitizenUser
-  /contacts:
-    get:
-      operationId: getContacts
-      parameters:
-      - description: The full name of the Contact (or parts of it) which shall be
-          searched for.
-        in: query
-        name: name
-        required: false
-        schema:
-          type: string
-      - description: "The street, as the main part of the address of a Contact, (or\
-          \ parts of it) which shall be searched for."
-        in: query
-        name: street
-        required: false
-        schema:
-          type: string
-      - description: A filter for the possible types of Contacts.
-        in: query
-        name: type
-        required: false
-        schema:
-          $ref: "#/components/schemas/ContactType"
-      - description: A filter for the possible categories of Institutions.
-        in: query
-        name: categories
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ContactCategory"
-          uniqueItems: true
-      - description: The parameter by which to sort.
-        in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/ContactSortKey"
-      - description: The direction by which to sort.
-        in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - description: Part of pagination. Specifies the page of the paginated items
-          that is returned in the response.
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - description: Part of pagination. Specifies the number of items which shall
-          be on a single page. Only this amount of items is returned in the response.
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/SearchContactsResponse"
-          description: OK
-      summary: |2
-         Search contacts. Filter results by the optional parameters 'name', 'type', 'category', 'firstName' or 'street'.
-         'firstName' only exists in Contacts of type Person, so no Institutions can be found if it is set.
-         In the same way, 'category' only exists in Contacts of type Institution, so no Person contacts can be found
-         if it is set.
-         Sort and page the results by default values or by optional parameters.
-      tags:
-      - Contact
-    post:
-      operationId: addContact
-      requestBody:
-        content:
-          application/json:
-            schema:
-              oneOf:
-              - $ref: "#/components/schemas/AddInstitutionContactRequest"
-              - $ref: "#/components/schemas/AddPersonContactRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/InstitutionContact"
-                - $ref: "#/components/schemas/PersonContact"
-          description: OK
-      summary: Add a contact
-      tags:
-      - Contact
-  /contacts/bulk-get:
-    post:
-      operationId: getBulkContacts
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GetContactsRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetContactsResponse"
-          description: OK
-      summary: Get contacts for provided ids in bulk.
-      tags:
-      - Contact
-  /contacts/parse-vcard/institutions:
-    post:
-      operationId: importInstitutionContact
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                file:
-                  type: string
-                  format: binary
-                  description: "A .vcf file (vCard) with details of the institution\
-                    \ contact, that shall be parsed."
-              required:
-              - file
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ImportInstitutionContactResponse"
-          description: OK
-      summary: Parse a vcf file (VCard) of an institution contact and get possible
-        matches
-      tags:
-      - Contact
-  /contacts/parse-vcard/persons:
-    post:
-      operationId: importPersonContact
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                file:
-                  type: string
-                  format: binary
-                  description: "A .vcf file (vCard) with details of the person contact,\
-                    \ that shall be parsed."
-              required:
-              - file
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ImportPersonContactResponse"
-          description: OK
-      summary: Parse a vcf file (VCard) of a person contact and get possible matches
-      tags:
-      - Contact
-  /contacts/{id}:
-    get:
-      operationId: getContact
-      parameters:
-      - description: The Id of the Contact.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/InstitutionContact"
-                - $ref: "#/components/schemas/PersonContact"
-          description: OK
-      summary: Get a contact
-      tags:
-      - Contact
-    put:
-      operationId: updateContact
-      parameters:
-      - description: The Id of the Contact.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              oneOf:
-              - $ref: "#/components/schemas/UpdateInstitutionContactRequest"
-              - $ref: "#/components/schemas/UpdatePersonContactRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/InstitutionContact"
-                - $ref: "#/components/schemas/PersonContact"
-          description: OK
-      summary: Update an existing contact. Passing another contact ID using 'mergedFrom'
-        will merge the specified contact into this one.
-      tags:
-      - Contact
-  /contacts/{id}/addresses/{addressId}/history/{historyId}:
-    get:
-      operationId: getContactAddressHistoryStep
-      parameters:
-      - description: The Id of the Contact.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - description: The Id of the address under consideration.
-        in: path
-        name: addressId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - description: The revision Id of the history step of the address of the Contact.
-        in: path
-        name: historyId
-        required: true
-        schema:
-          type: integer
-          format: int64
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/HistoryStepAddress"
-          description: OK
-      summary: Get address history step by revision id.
-      tags:
-      - Contact
-  /contacts/{id}/history:
-    get:
-      operationId: getContactHistory
-      parameters:
-      - description: The Id of the Contact.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - description: "A filter to only show history entries done by a certain User,\
-          \ whose Id is specified here."
-        in: query
-        name: userId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: A filter to only show history entries before a certain time.
-        in: query
-        name: before
-        required: false
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetContactHistoryResponse"
-          description: OK
-      summary: Get contact history
-      tags:
-      - Contact
-  /contacts/{id}/history/{historyId}:
-    get:
-      operationId: getContactHistoryStep
-      parameters:
-      - description: The Id of the Contact.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - description: The revision Id of the history step of the address of the Contact.
-        in: path
-        name: historyId
-        required: true
-        schema:
-          type: integer
-          format: int64
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/HistoryStepContact"
-          description: OK
-      summary: Get base contact history step by revision id.
-      tags:
-      - Contact
-  /contacts/{id}/merged-contacts:
-    get:
-      operationId: getMergedContacts
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetMergedContactsResponse"
-          description: OK
-      summary: Returns the IDs of contacts that were merged into the requested contact
-      tags:
-      - Contact
-  /department/info:
-    get:
-      operationId: getDepartmentInfo
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetDepartmentInfoResponse"
-          description: OK
-      summary: Get detailed information about the department running this application.
-      tags:
-      - Department
-  /department/logo:
-    get:
-      operationId: getDepartmentLogo
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get the logo of the department running this application.
-      tags:
-      - Department
-  /department/security-txt:
-    get:
-      operationId: getSecurityTxt
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: byte
-          description: OK
-      summary: Get the security.txt file of the department running this application.
-      tags:
-      - Department
-  /department/security-txt-public-key:
-    get:
-      operationId: getSecurityTxtPublicKey
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: byte
-          description: OK
-      summary: Get the security.txt public PGP key file of the department running
-        this application.
-      tags:
-      - Department
-  /facilities:
-    get:
-      operationId: searchReferenceFacilities
-      parameters:
-      - description: The name of the Facility (knowledge factor) which shall be searched
-          for.
-        in: query
-        name: name
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/SearchReferenceFacilitiesResponse"
-          description: OK
-      summary: |
-        Search reference facilities for the given knowledge factor 'name'.
-        Excludes facilities created from external sources.
-        Caution: The returned ids of the reference facilities must not be stored.
-      tags:
-      - Facility
-  /facilities/centralfilestates:
-    post:
-      operationId: addFacilityFileState
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddFacilityFileStateRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddFacilityFileStateResponse"
-          description: OK
-      summary: |
-        Add a new facility file state and associate it with a reference facility.
-        If no reference id is provided, an existing reference facility with matching facility data is selected or (if
-        it does not exist) created for this purpose.
-      tags:
-      - Facility
-  /facilities/centralfilestates/archive-deletion:
-    post:
-      operationId: deleteFacilityFileStateDuringArchive
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/DeleteFileStatesRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: |
-        Delete this file state as soon as possible.
-        This is used during an archival process, where the file states are moved to an archive and thereby deleted from the central file.
-        To delete file states under normal cleanup, use /mark-for-deletion instead.
-      tags:
-      - Facility
-  /facilities/centralfilestates/bulk-add:
-    post:
-      operationId: addFacilityFileStates
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddFacilityFileStatesRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddFacilityFileStatesResponse"
-          description: OK
-      summary: |
-        Add multiple facility file states in a bulk operation.
-        Each file state is linked to a reference facility whose name and mandatory
-        contact address fields match; other fields are not taken into account here. If
-        no such facility exists, a new one will be created.
-      tags:
-      - Facility
-  /facilities/centralfilestates/bulk-get:
-    post:
-      operationId: getFacilityFileStates
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GetFacilityFileStatesRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetFacilityFileStatesResponse"
-          description: OK
-      summary: Get multiple facilities
-      tags:
-      - Facility
-  /facilities/centralfilestates/external-source:
-    post:
-      operationId: addFacilityFromExternalSource
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ExternalAddFacilityFileStateRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddFacilityFileStateResponse"
-          description: OK
-      summary: |
-        Create a new facility file state as well as a new associated reference
-        facility, without any matching to existing data.
-        This endpoint requires a valid authentication from the citizen portal.
-        The created data are labelled as external and are thus regarded as temporary,
-        unconfirmed and untrustworthy. It must undergo a verification process performed
-        by a health office employee before it can be used for any official processes.
-        The only exception to this are GDPR-related procedures, where the data may be
-        used immediately.
-      tags:
-      - Facility
-  /facilities/centralfilestates/mark-for-deletion:
-    post:
-      operationId: markFacilityFileStateForDeletion
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/DeleteFileStatesRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: |
-        Mark this file state for deletion at a later time.
-        This can be used to clean up draft procedures or appointments and spam data.
-        The file state will be deleted after a grace period, to allow for recovery.
-      tags:
-      - Facility
-  /facilities/centralfilestates/{id}:
-    get:
-      operationId: getFacilityFileState
-      parameters:
-      - description: The Id of the File State of the Facility.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetFacilityFileStateResponse"
-          description: OK
-      summary: Get a facility
-      tags:
-      - Facility
-  /facilities/centralfilestates/{id}/diff:
-    get:
-      operationId: getFacilityDiff
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetFacilityDiffResponse"
-          description: OK
-      summary: |
-        Get the difference between the requested file state and its associated reference facility.
-      tags:
-      - Facility
-  /facilities/centralfilestates/{id}/linked-ids:
-    get:
-      operationId: getFacilityFileStateIdsWithSameReferenceFacility
-      parameters:
-      - description: The Id of the File State of the Facility.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetFileStateIdsResponse"
-          description: OK
-      summary: Get the Ids of all other facility file states associated with the reference
-        facility of the given file state
-      tags:
-      - Facility
-  /facilities/centralfilestates/{id}/reference-facility:
-    get:
-      operationId: getReferenceFacility
-      parameters:
-      - description: The Id of the File State of the Facility.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetReferenceFacilityResponse"
-          description: OK
-      summary: |
-        Get the data of the reference facility associated with a given facility file state.
-        Caution: The returned id of the reference facility must not be stored.
-      tags:
-      - Facility
-  /facilities/centralfilestates/{id}/sync-file-state:
-    post:
-      operationId: syncFacilityFileState
-      parameters:
-      - description: The id of the file state
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SyncFileStateRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddFacilityFileStateResponse"
-          description: OK
-      summary: |
-        Update a differing facility file state by taking over the data from the
-        associated reference facility
-      tags:
-      - Facility
-  /facilities/centralfilestates/{id}/update-file-state-and-reference:
-    post:
-      operationId: updateFacilityFileStateAndReference
-      parameters:
-      - description: The id of the file state
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PutFacilityRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddFacilityFileStateResponse"
-          description: OK
-      summary: |
-        Perform a consistent update of the existent facility file state and its
-        associated reference facility
-      tags:
-      - Facility
-  /facilities/reference/{id}/linked-ids:
-    get:
-      operationId: getFacilityFileStateIdsAssociatedWithReferenceFacility
-      parameters:
-      - description: The Id of the Reference Facility.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetFileStateIdsResponse"
-          description: OK
-      summary: Get the Ids of all facility file states associated with the given reference
-        facility
-      tags:
-      - Facility
-  /facilities/reference/{id}/update:
-    post:
-      operationId: updateReferenceFacility
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateReferenceFacilityRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddFacilityFileStateResponse"
-          description: OK
-      summary: |
-        Updates reference facility data identified by given id. Sets dataOrigin to DataOrigin.EDIT.
-        Returns a new file state with the resulting new state.
-      tags:
-      - Facility
-  /feature-toggles:
-    get:
-      operationId: getFeatureToggles
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetBaseFeatureTogglesResponse"
-          description: OK
-      tags:
-      - BaseFeatureToggles
-  /gdpr-procedures:
-    get:
-      operationId: getGdprProcedures
-      parameters:
-      - description: A filter for a type that GDPR procedures can have.
-        in: query
-        name: type
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprProcedureType"
-      - description: The parameter by which to sort.
-        in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprProcedureSortKey"
-      - description: The direction by which to sort.
-        in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - description: Part of pagination. Specifies the page of the paginated items
-          that is returned in the response.
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - description: Part of pagination. Specifies the number of items which shall
-          be on a single page. Only this amount of items is returned in the response.
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprProceduresResponse"
-          description: OK
-      summary: Get all GDPR procedures. Filter result by type. Sort and page the results
-        by createdAt.
-      tags:
-      - GdprProcedure
-    post:
-      operationId: addGdprProcedure
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddGdprProcedureRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprProcedureResponse"
-          description: OK
-      summary: Add a GDPR procedure
-      tags:
-      - GdprProcedure
-  /gdpr-procedures/citizen-portal:
-    post:
-      operationId: addGdprProcedureFromCitizenPortal
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddGdprProcedureFromCitizenPortalRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprProcedureResponse"
-          description: OK
-      summary: |
-        This endpoint allows authenticated MUK and BundID users to initiate a GDPR
-        procedure via the citizen portal initiate a GDPR procedure. A matter of
-        concern can be added to the request if desired.
-      tags:
-      - GdprProcedure
-  /gdpr-procedures/citizen-portal/self/linked-gdpr-procedures:
-    get:
-      operationId: getCitizenSelfUserLinkedGdprProcedures
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetCitizenSelfUsersGdprProceduresResponse"
-          description: OK
-      summary: Get the GDPR procedures linked with the citizen user which is currently
-        active
-      tags:
-      - GdprProcedure
-  /gdpr-procedures/{id}:
-    get:
-      operationId: getGdprProcedure
-      parameters:
-      - description: The Id of the GDPR procedure.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprProcedureResponse"
-          description: OK
-      summary: Get GDPR procedure by id
-      tags:
-      - GdprProcedure
-    post:
-      operationId: addCentralFileIdToGdprProcedure
-      parameters:
-      - description: The Id of the GDPR procedure.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddCentralFileIdToGdprProcedureRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprProcedureResponse"
-          description: OK
-      summary: Add central file id to GDPR procedure.
-      tags:
-      - GdprProcedure
-  /gdpr-procedures/{id}/cancel-procedure:
-    post:
-      operationId: cancelProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CancelGdprProcedureRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Cancel the GDPR procedure
-      tags:
-      - GdprProcedure
-  /gdpr-procedures/{id}/central-file-download-package:
-    get:
-      operationId: getCentralFileDownloadPackage
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get Gdpr Download Package of central files linked to given Gdpr Procedure
-        Id
-      tags:
-      - GdprProcedure
-  /gdpr-procedures/{id}/close-procedure:
-    post:
-      operationId: closeProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CloseGdprProcedureRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Close the GDPR procedure
-      tags:
-      - GdprProcedure
-  /gdpr-procedures/{id}/details-page:
-    get:
-      operationId: getGdprProcedureDetailsPage
-      parameters:
-      - description: The Id of the GDPR procedure.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprProcedureDetailsPageResponse"
-          description: OK
-      summary: Get GDPR procedure details page information. Used exclusively by the
-        frontend to display the GDPR Procedure.
-      tags:
-      - GdprProcedure
-  /gdpr-procedures/{id}/downloads:
-    delete:
-      operationId: deleteDownloads
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/DeleteGdprDownloadsRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Delete one or multiple downloads of GDPR-related document or data of
-        this GDPR procedure.
-      tags:
-      - GdprProcedure
-    get:
-      operationId: getDownloads
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprDownloadsResponse"
-          description: OK
-      summary: Get list of download ids of GDPR-related documents or data of this
-        GDPR procedure.
-      tags:
-      - GdprProcedure
-    post:
-      operationId: addDownloads
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddGdprDownloadsRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Add one or multiple downloads of GDPR-related document or data for
-        this GDPR procedure.
-      tags:
-      - GdprProcedure
-  /gdpr-procedures/{id}/fileStateIds:
-    get:
-      operationId: getFileStateIds
-      parameters:
-      - description: The Id of the GDPR procedure.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprProcedureFileStateIdsResponse"
-          description: OK
-      summary: Get file state ids of this gdpr procedure.
-      tags:
-      - GdprProcedure
-  /gdpr-procedures/{id}/matter-of-concern:
-    put:
-      operationId: setMatterOfConcern
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SetMatterOfConcernRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: "Changes the matter of concern of this GDPR procedure, this is only\
-        \ relevant for right to correction and right to objection."
-      tags:
-      - GdprProcedure
-  /gdpr-procedures/{id}/refresh-status:
-    post:
-      operationId: refreshStatus
-      parameters:
-      - description: The Id of the GDPR procedure.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprProcedureResponse"
-          description: OK
-      summary: Refresh status of GDPR procedure.
-      tags:
-      - GdprProcedure
-  /gdpr-procedures/{id}/report-document:
-    get:
-      operationId: getReportDocument
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Returns the relevant report as PDF for this GDPR Procedure.
-      tags:
-      - GdprProcedure
-  /gdpr-procedures/{id}/start-procedure:
-    post:
-      operationId: startProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/StartGdprProcedureRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Start the GDPR procedure
-      tags:
-      - GdprProcedure
-  /icd10-codes:
-    get:
-      operationId: searchIcd10Codes
-      parameters:
-      - description: "Search for a string within the ICD-10 codes, groups and their\
-          \ title. The search supports a fuzzy search mechanism."
-        in: query
-        name: searchString
-        required: false
-        schema:
-          type: string
-          default: ""
-          description: "Search for a string within the ICD-10 codes, groups and their\
-            \ title. The search supports a fuzzy search mechanism."
-      - in: query
-        name: codes
-        required: false
-        schema:
-          type: array
-          default: []
-          items:
-            type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/SearchIcd10CodesResponse"
-          description: OK
-      summary: Search in the ICD-10 catalogue.
-      tags:
-      - Icd10Code
-    post:
-      operationId: findAllIcd10Codes
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/FindIcd10CodesRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/FindIcd10CodesResponse"
-          description: OK
-      tags:
-      - Icd10Code
-  /inventoryItems:
-    get:
-      operationId: getInventoryItems
-      parameters:
-      - description: The name of the Inventory Item (or parts of it) which shall be
-          searched for.
-        in: query
-        name: name
-        required: false
-        schema:
-          type: string
-      - description: A filter for the possible types of an Inventory Item.
-        in: query
-        name: type
-        required: false
-        schema:
-          $ref: "#/components/schemas/InventoryItemType"
-      - description: A filter for labels that are used for Inventory Items. Only one
-          label can be specified at a time.
-        in: query
-        name: label
-        required: false
-        schema:
-          type: string
-      - description: The parameter by which to sort.
-        in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/InventorySortKey"
-      - description: The direction by which to sort.
-        in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - description: Part of pagination. Specifies the page of the paginated items
-          that is returned in the response.
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - description: Part of pagination. Specifies the number of items which shall
-          be on a single page. Only this amount of items is returned in the response.
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInventoryItemsResponse"
-          description: OK
-      summary: |2
-         Search inventory items. Filter results by the optional parameters 'name', 'type' and label. Sort and page the
-         results by default values or by optional parameters
-      tags:
-      - Inventory
-    post:
-      operationId: addInventoryItem
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddInventoryItemRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InventoryItem"
-          description: OK
-      summary: Add a new Inventory Item
-      tags:
-      - Inventory
-  /inventoryItems/{id}:
-    get:
-      operationId: getInventoryItem
-      parameters:
-      - description: Id of the Inventory Item.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InventoryItem"
-          description: OK
-      summary: Get an Inventory Item
-      tags:
-      - Inventory
-    put:
-      operationId: updateInventoryItem
-      parameters:
-      - description: Id of the Inventory Item.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateInventoryItemRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InventoryItem"
-          description: OK
-      summary: |2
-         Update an inventory item. Any provided label names will be used to resolve existing labels from the
-         database, use the same name where applicable
-      tags:
-      - Inventory
-  /inventoryItems/{id}/booking:
-    post:
-      operationId: bookInventoryItem
-      parameters:
-      - description: Id of the Inventory Item.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/BookInventoryItemRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InventoryItemBookingEntry"
-          description: OK
-      summary: |
-        Book a certain amount of stock for a given inventory item,
-        returns a booking entry with the relevant booking id on success.
-      tags:
-      - Inventory
-  /inventoryItems/{id}/booking/history:
-    get:
-      operationId: getInventoryBookingHistory
-      parameters:
-      - description: Id of the Inventory Item.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - description: Part of pagination. Specifies the page of the paginated booking
-          entries that is returned in the response.
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      - description: Part of pagination. Specifies the number of booking entries which
-          shall be on a single page. Only this amount of entries is returned in the
-          response.
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 25
-          maximum: 50
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InventoryItemBookingHistory"
-          description: OK
-      summary: Get the history of booking operations for a given inventory item
-      tags:
-      - Inventory
-  /inventoryItems/{id}/booking/{bookingId}:
-    get:
-      operationId: getInventoryItemBooking
-      parameters:
-      - description: Id of the Inventory Item.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - description: The public Id of the booking of the given Inventory Item.
-        in: path
-        name: bookingId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InventoryItemBookingEntry"
-          description: OK
-      summary: Get a booking entry
-      tags:
-      - Inventory
-  /inventoryItems/{id}/booking/{bookingId}/cancel:
-    post:
-      operationId: cancelInventoryItemBooking
-      parameters:
-      - description: Id of the Inventory Item.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - description: The public Id of the booking of the given Inventory Item.
-        in: path
-        name: bookingId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - description: The private Id that was returned when booking the Inventory Item.
-        in: query
-        name: ownerKey
-        required: false
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InventoryItemBookingEntry"
-          description: OK
-      summary: |
-        Cancel the booking request for the given inventory.
-        Does nothing if the booking was already cancelled.
-        This is only supported for entries of type BOOKING.
-      tags:
-      - Inventory
-  /inventoryItems/{id}/correction:
-    post:
-      operationId: updateInventoryItemCount
-      parameters:
-      - description: Id of the Inventory Item.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateInventoryItemCountRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: |
-        Update the item count by providing the current version and new count.
-        If the current version does not match, a conflict error is returned to avoid race conditions.
-      tags:
-      - Inventory
-  /inventoryItems/{id}/restocking:
-    post:
-      operationId: restockInventoryItem
-      parameters:
-      - description: Id of the Inventory Item.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/RestockInventoryItemRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InventoryItemBookingEntry"
-          description: OK
-      summary: Add a certain amount of stock for a given inventory item
-      tags:
-      - Inventory
-  /labels:
-    get:
-      operationId: getLabels
-      parameters:
-      - description: The name of the label which shall be searched for.
-        in: query
-        name: name
-        required: false
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetLabelsResponse"
-          description: OK
-      summary: Search labels. Filter results by the optional parameter 'name'. Results
-        are sorted in ascending order
-      tags:
-      - Label
-    put:
-      operationId: addLabel
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddLabelRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Label"
-          description: OK
-      summary: "Idempotently add a label, returning existing label if one with the\
-        \ same name exists"
-      tags:
-      - Label
-  /labels/{id}:
-    get:
-      operationId: getLabel
-      parameters:
-      - description: The Id of the label.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Label"
-          description: OK
-      summary: Get a label
-      tags:
-      - Label
-  /mail:
-    post:
-      operationId: sendEmail
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SendEmailRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Send an email to a single recipient.
-      tags:
-      - Mail
-  /mail/notification:
-    post:
-      operationId: sendEmailNotification
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SendEmailNotificationRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Send an email notification via template.
-      tags:
-      - Mail
-  /muk-facility-link:
-    post:
-      operationId: createMukFacilityLink
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddMukFacilityLinkRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Establish a link between a MUK user and a facility
-      tags:
-      - MukFacilityLink
-  /muk-facility-link/self/facility:
-    get:
-      operationId: getReferenceFacilityLinkedToMukSelfUser
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetReferenceFacilityResponse"
-          description: OK
-      summary: Get the reference facility linked to the MUK user which is currently
-        active
-      tags:
-      - MukFacilityLink
-  /notification-aggregation:
-    get:
-      operationId: getNotifications
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAggregatedNotificationsResponse"
-          description: The current users notifications
-      summary: Get notifications for current user
-      tags:
-      - NotificationAggregation
-    patch:
-      operationId: markNotificationsAsRead
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/MarkNotificationsAsReadRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/MarkNotificationsAsReadResponse"
-          description: The error responses if business modules fail
-      summary: Mark notifications for the current user as read
-      tags:
-      - NotificationAggregation
-  /notification-aggregation/unread:
-    get:
-      operationId: getUnreadNotifications
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAggregatedNotificationsResponse"
-          description: The current users unread notifications
-      summary: Get unread notifications for current user
-      tags:
-      - NotificationAggregation
-  /persons:
-    get:
-      operationId: searchReferencePersons
-      parameters:
-      - description: The first name of the Person (1 of 3 knowledge factors) which
-          shall be searched for.
-        in: query
-        name: firstName
-        required: true
-        schema:
-          type: string
-      - description: The last name of the Person (1 of 3 knowledge factors) which
-          shall be searched for.
-        in: query
-        name: lastName
-        required: true
-        schema:
-          type: string
-      - description: The date of birth of the Person (1 of 3 knowledge factors) which
-          shall be searched for.
-        in: query
-        name: dateOfBirth
-        required: true
-        schema:
-          type: string
-          format: date
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/SearchReferencePersonsResponse"
-          description: OK
-      summary: |
-        Search reference persons for the given knowledge factors 'firstName', 'lastName' and 'dateOfBirth'.
-        Excludes persons created from external sources.
-        Caution: The returned ids of the reference persons must not be stored.
-      tags:
-      - Person
-  /persons/centralfilestates:
-    post:
-      operationId: addPersonFileState
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddPersonFileStateRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/PersonFileState"
-          description: OK
-      summary: |
-        Add a new person file state and associate it with a reference person.
-        If no reference id is provided, an existing reference person with matching personal data is selected or (if
-        it does not exist) created for this purpose.
-      tags:
-      - Person
-  /persons/centralfilestates/archive-deletion:
-    post:
-      operationId: deletePersonFileStateDuringArchive
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/DeleteFileStatesRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: |
-        Delete this file state as soon as possible.
-        This is used during an archival process, where the file states are moved to an archive and thereby deleted from the central file.
-        To delete file states under normal cleanup, use /mark-for-deletion instead.
-      tags:
-      - Person
-  /persons/centralfilestates/bulk-add:
-    post:
-      operationId: addPersonFileStates
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddPersonFileStatesRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddPersonFileStatesResponse"
-          description: OK
-      summary: |
-        Add multiple persons and associate each with a reference person.
-        If no reference person matches the mandatory parameters of the new file state, a new reference person is created.
-        Non-mandatory parameters are ignored when searching for matching reference persons.
-      tags:
-      - Person
-  /persons/centralfilestates/bulk-get:
-    post:
-      operationId: getPersonFileStates
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GetPersonFileStatesRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetPersonFileStatesResponse"
-          description: OK
-      summary: Get multiple persons
-      tags:
-      - Person
-  /persons/centralfilestates/bulk-search:
-    post:
-      operationId: getPersonFileStateIdsByReferencePersonKeyAttributes
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GetPersonFileStateIdsByKeyAttributesRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetPersonFileStateIdsByKeyAttributesResponse"
-          description: OK
-      summary: |
-        Search multiple reference persons by the given key attributes
-        and return all file state ids associated with these reference persons.
-      tags:
-      - Person
-  /persons/centralfilestates/bulk-update:
-    post:
-      operationId: updatePersonFileStatesAndReferences
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdatePersonsRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/UpdatePersonsResponse"
-          description: OK
-      summary: |
-        Perform a consistent update of person file states and their associated
-        reference persons in a bulk operation.
-      tags:
-      - Person
-  /persons/centralfilestates/external-source:
-    post:
-      operationId: addPersonFromExternalSource
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ExternalAddPersonFileStateRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/PersonFileState"
-          description: OK
-      summary: |
-        Create a new person file state as well as a new associated reference person,
-        without any matching to existing data.
-        This endpoint requires a valid authentication from the citizen portal.
-        The created data are labelled as external and are thus regarded as temporary,
-        unconfirmed and untrustworthy. It must undergo a verification process performed
-        by a health office employee before it can be used for any official processes.
-        The only exception to this are GDPR-related procedures, where the data may be
-        used immediately.
-      tags:
-      - Person
-  /persons/centralfilestates/mark-for-deletion:
-    post:
-      operationId: markPersonFileStateForDeletion
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/DeleteFileStatesRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: |
-        Mark this file state for deletion at a later time.
-        This can be used to clean up draft procedures or appointments and spam data.
-        The file state will be deleted after a grace period, to allow for recovery.
-      tags:
-      - Person
-  /persons/centralfilestates/{id}:
-    get:
-      operationId: getPersonFileState
-      parameters:
-      - description: The Id of the File State of the Person.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetPersonFileStateResponse"
-          description: OK
-      summary: Get a person
-      tags:
-      - Person
-  /persons/centralfilestates/{id}/diff:
-    get:
-      operationId: getPersonDiff
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetPersonDiffResponse"
-          description: OK
-      summary: |
-        Get the difference between the requested file state and its associated reference person.
-      tags:
-      - Person
-  /persons/centralfilestates/{id}/linked-ids:
-    get:
-      operationId: getPersonFileStateIdsAssociatedWithFileState
-      parameters:
-      - description: The Id of the File State of the Person.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetFileStateIdsResponse"
-          description: OK
-      summary: Get the Ids of all other person file states associated with the reference
-        person of the given file state
-      tags:
-      - Person
-  /persons/centralfilestates/{id}/reference-person:
-    get:
-      operationId: getReferencePerson
-      parameters:
-      - description: The Id of the File State of the Person.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetReferencePersonResponse"
-          description: OK
-      summary: |
-        Get the data of the reference person associated with a given person file state
-        Caution: The returned ids of the reference person must not be stored.
-      tags:
-      - Person
-  /persons/centralfilestates/{id}/sync-file-state:
-    post:
-      operationId: syncFileState
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SyncFileStateRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/PersonFileState"
-          description: OK
-      summary: |
-        Update a differing person file state by taking over the personal data from the
-        associated reference person
-      tags:
-      - Person
-  /persons/centralfilestates/{id}/update-file-state-and-reference:
-    post:
-      operationId: updatePersonFileStateAndReference
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdatePersonRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/PersonFileState"
-          description: OK
-      summary: |
-        Perform a consistent update of the existent person file state and its
-        associated reference person
-      tags:
-      - Person
-  /persons/reference/{id}/linked-ids:
-    get:
-      operationId: getPersonFileStateIdsAssociatedWithReferencePerson
-      parameters:
-      - description: The Id of the Reference Data of the Person.
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetFileStateIdsResponse"
-          description: OK
-      summary: Get the Ids of all person file states associated with the given reference
-        person
-      tags:
-      - Person
-  /persons/reference/{id}/update:
-    post:
-      operationId: updateReferencePerson
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateReferencePersonRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/PersonFileState"
-          description: OK
-      summary: |
-        Updates reference person data identified by given id. Sets dataOrigin to DataOrigin.EDIT.
-        Returns a new file state with the resulting new state.
-      tags:
-      - Person
-  /procedure-config:
-    get:
-      operationId: getProcedureConfig
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureConfigResponse"
-          description: OK
-      summary: Get lib procedure configuration
-      tags:
-      - ProcedureConfig
-  /procedure-metrics:
-    get:
-      operationId: aggregateProcedureMetrics
-      parameters:
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetAggregatedProcedureMetricsResponse"
-          description: the metrics of procedures
-      summary: Get procedure metrics for procedures created in the given time range
-      tags:
-      - ProcedureAggregation
-  /public/config:
-    get:
-      operationId: getConfig
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetConfigurationResponse"
-          description: OK
-      summary: Get general system configuration which is needed by the frontend
-      tags:
-      - PublicConfig
-  /recent-procedures:
-    get:
-      operationId: aggregateRecentProcedures
-      parameters:
-      - in: query
-        name: userId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: businessModule
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessModule"
-          uniqueItems: true
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetAggregatedRecentProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for user
-      tags:
-      - ProcedureAggregation
-  /recent-procedures/self:
-    get:
-      operationId: aggregateSelfRecentProcedures
-      parameters:
-      - in: query
-        name: businessModule
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessModule"
-          uniqueItems: true
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetAggregatedRecentProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for the current user
-      tags:
-      - ProcedureAggregation
-  /resources:
-    get:
-      operationId: getResources
-      parameters:
-      - description: The name of the Resource (or parts of it) which shall be searched
-          for.
-        in: query
-        name: name
-        required: false
-        schema:
-          type: string
-      - description: A filter for the possible types of a Resource.
-        in: query
-        name: type
-        required: false
-        schema:
-          $ref: "#/components/schemas/ResourceType"
-      - description: A filter for labels that are used for Resources. Only one label
-          can be specified at a time.
-        in: query
-        name: label
-        required: false
-        schema:
-          type: string
-      - description: The parameter by which to sort.
-        in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/ResourceSortKey"
-      - description: The direction by which to sort.
-        in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - description: Part of pagination. Specifies the page of the paginated items
-          that is returned in the response.
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - description: Part of pagination. Specifies the number of items which shall
-          be on a single page. Only this amount of items is returned in the response.
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetResourcesResponse"
-          description: OK
-      summary: |2
-         Search resources. Filter results by the optional parameters 'name', 'type' and 'label'. Sort and page the
-         results by default values or by optional parameters
-      tags:
-      - Resource
-    post:
-      operationId: addResource
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddResourceRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Resource"
-          description: OK
-      summary: Add a new resource
-      tags:
-      - Resource
-  /resources/{id}:
-    get:
-      operationId: getResource
-      parameters:
-      - description: Id of the Resource
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Resource"
-          description: OK
-      summary: Get a resource
-      tags:
-      - Resource
-    patch:
-      operationId: updateResource
-      parameters:
-      - description: Id of the Resource
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateResourceRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Resource"
-          description: OK
-      summary: |2
-         Update a resource. Any provided label names will be used to resolve existing labels from the database,
-         use the same name where applicable
-      tags:
-      - Resource
-  /streets:
-    get:
-      operationId: searchStreet
-      parameters:
-      - description: The name of the street of the address for which the search shall
-          be done
-        example: Beispielweg
-        in: query
-        name: streetName
-        required: true
-        schema:
-          type: string
-          description: The name of the street of the address for which the search
-            shall be done
-          example: Beispielweg
-      - description: The house number of the address for which the search shall be
-          done
-        example: 1A
-        in: query
-        name: houseNumber
-        required: false
-        schema:
-          type: string
-          description: The house number of the address for which the search shall
-            be done
-          example: 1A
-          pattern: "^(\\d+)([a-zA-Z]*)$|"
-      - description: The postal code of the address for which the search shall be
-          done
-        example: 123456
-        in: query
-        name: postalCode
-        required: true
-        schema:
-          type: string
-      - description: The country code in ISO 3166-1 alpha-2 format of the address
-          for which the search shall be done
-        in: query
-        name: country
-        required: true
-        schema:
-          $ref: "#/components/schemas/CountryCode"
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/SearchStreetResponse"
-          description: OK
-      summary: "Search street data by streetName, houseNumber, postalCode and country."
-      tags:
-      - Street
-  /streets/autocomplete:
-    get:
-      operationId: autocompleteStreet
-      parameters:
-      - description: The case-insensitive street name prefix to autocomplete
-        example: Breite ga
-        in: query
-        name: streetNamePrefix
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AutocompleteStreetResponse"
-          description: OK
-      summary: Returns all street names for the given prefix
-      tags:
-      - Street
-  /task-metrics:
-    get:
-      operationId: getTaskMetrics
-      parameters:
-      - in: query
-        name: procedureType
-        required: true
-        schema:
-          $ref: "#/components/schemas/ProcedureType"
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: businessModuleName
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetTaskMetricsResponse"
-          description: the metrics of a specific procedure type
-      summary: Get task metrics for a procedure type of a business module for procedures
-        created in the given time range
-      tags:
-      - TaskMetrics
-  /tasks:
-    get:
-      description: |
-        ### GET operation for aggregated tasks
-        assigneeId or assignedById is required as input parameter. However, they are mutually exclusive.
-      operationId: aggregateTasks
-      parameters:
-      - description: Id of the assignee of the task
-        in: query
-        name: assigneeId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: Id of the user who assigned the task to someone
-        in: query
-        name: assignedById
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      - description: Filter on business module
-        in: query
-        name: businessModule
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessModule"
-          uniqueItems: true
-      - description: Filter on task type
-        in: query
-        name: taskType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskType"
-          uniqueItems: true
-      - description: Filter on task status
-        in: query
-        name: taskStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskStatus"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - PRIORITY: First tasks with a dueDate are listed and sorted by DueDate. Afterwards tasks without a dueDate are listed and sorted by createdAt
-          - CREATED_AT: Sorting by createdAt attribute
-          - MODIFIED_AT: Sorting by modifiedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetTasksSortBy"
-      - description: |
-          Sorting order. Possible options  "ASC" for ascending and "DESC" for descending
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetTasksSortOrder"
-      - description: Limit of returned tasks
-        in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: offset
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetAggregatedTasksResponse"
-          description: the users tasks
-      summary: Get aggregated tasks
-      tags:
-      - TaskAggregation
-  /tasks/dashboard:
-    get:
-      operationId: aggregateTasksForDashboard
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetAggregatedTasksResponse"
-          description: the users tasks
-      summary: Get aggregated tasks for the dashboard
-      tags:
-      - TaskAggregation
-  /test-helper/archiving-job:
-    post:
-      operationId: runArchivingJob
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/audit-log-storage:
-    delete:
-      operationId: clearAuditLogStorageDirectory
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/auditlog-notification-job:
-    post:
-      operationId: runAuditlogNotificationJob
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/business-modules/{businessModuleToDisable}:
-    delete:
-      operationId: disableBusinessModule
-      parameters:
-      - in: path
-        name: businessModuleToDisable
-        required: true
-        schema:
-          $ref: "#/components/schemas/BusinessModule"
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/create-calendar-test-events:
-    post:
-      operationId: createCalendarTestEvents
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateCalendarTestEventsRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CreateCalendarTestEventsResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/disable-new-features/{featureToDisable}:
-    post:
-      operationId: disableNewFeature
-      parameters:
-      - in: path
-        name: featureToDisable
-        required: true
-        schema:
-          $ref: "#/components/schemas/BaseFeature"
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/enabled-new-features/{featureToEnable}:
-    post:
-      operationId: enableNewFeature
-      parameters:
-      - in: path
-        name: featureToEnable
-        required: true
-        schema:
-          $ref: "#/components/schemas/BaseFeature"
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/idp-user/{nameId}:
-    get:
-      operationId: getIdpUser
-      parameters:
-      - in: path
-        name: nameId
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CitizenUser"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/keycloak/reset:
-    post:
-      operationId: resetKeycloak
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/keycloak/sessions:
-    delete:
-      operationId: invalidateAllKeycloakSessions
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/keycloak/user/create-temporary:
-    post:
-      operationId: createTemporaryUser
-      parameters:
-      - in: query
-        name: group
-        required: false
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/User"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/keycloak/user/{userName}:
-    delete:
-      operationId: deleteKeycloakUser
-      parameters:
-      - in: path
-        name: userName
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/login:
-    post:
-      operationId: login
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperLoginRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AccessToken"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/login-citizen-access-code-user:
-    post:
-      operationId: loginAsCitizenAccessCodeUser
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperLoginAsCitizenAccessCodeUserRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AccessToken"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population/contacts:
-    post:
-      operationId: populateContacts
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PopulationRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/SearchContactsResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population/contacts/health-departments:
-    post:
-      operationId: populateHealthDepartmentContacts
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PopulationRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/SearchContactsResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population/contacts/schools:
-    post:
-      operationId: populateSchoolContacts
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PopulationRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/SearchContactsResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population/inventory:
-    post:
-      operationId: populateInventory
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PopulationRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInventoryItemsResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population/resources:
-    post:
-      operationId: populateResources
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PopulationRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetResourcesResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/setup-admin:
-    post:
-      operationId: createSetupAdmin
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateSetupAdminRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/setup-admin/{userName}:
-    delete:
-      operationId: deleteSetupAdmin
-      parameters:
-      - in: path
-        name: userName
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /users:
-    get:
-      operationId: getUsers
-      parameters:
-      - description: A filter for a role users can have
-        in: query
-        name: role
-        required: false
-        schema:
-          $ref: "#/components/schemas/UserRole"
-      - description: "The start of the first name, last name, username or email of\
-          \ a User which shall be searched for."
-        in: query
-        name: searchTerm
-        required: false
-        schema:
-          type: string
-          description: "The start of the first name, last name, username or email\
-            \ of a User which shall be searched for."
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetUsersResponse"
-          description: OK
-      summary: Search users. Filter results by the parameters 'role' and 'search term'.
-        At least one of these filter parameters must be provided
-      tags:
-      - User
-  /users/bulk-get:
-    post:
-      operationId: getUsersBulk
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GetUsersRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetUsersResponse"
-          description: OK
-      summary: Get multiple users
-      tags:
-      - User
-  /users/groupMembers:
-    get:
-      operationId: getUsersByGroup
-      parameters:
-      - description: The name of the group whose users shall be returned
-        example: group
-        in: query
-        name: groupName
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetUsersResponse"
-          description: OK
-      summary: Get users by groupName. Returns max. 100 entries.
-      tags:
-      - User
-  /users/keys/public:
-    get:
-      operationId: getPublicEmployeeUserKeys
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetPublicEmployeeUserKeysResponse"
-          description: OK
-      summary: |
-        Get the public keys from all employee users which have the right to decrypt
-        log files from the audit log
-      tags:
-      - User
-  /users/self:
-    get:
-      operationId: getSelfUser
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/User"
-          description: OK
-      summary: Get the user which is currently active
-      tags:
-      - User
-    put:
-      operationId: updateSelfUser
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateSelfUserRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/User"
-          description: OK
-      summary: Update the user which is currently active
-      tags:
-      - User
-  /users/self/active-sessions:
-    get:
-      operationId: getSelfActiveSessions
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetActiveSessionsResponse"
-          description: OK
-      summary: Get all known active sessions for the currently active user
-      tags:
-      - User
-  /users/self/active-sessions/invalidate:
-    post:
-      operationId: invalidateActiveSessions
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InvalidateSessionsRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Invalidates the provided sessions of the currently active user
-      tags:
-      - User
-  /users/self/events:
-    get:
-      operationId: getSelfEvents
-      parameters:
-      - description: Filter by event type.
-        in: query
-        name: type
-        required: false
-        schema:
-          $ref: "#/components/schemas/UserEventType"
-      - description: Part of pagination. Specifies the offset of the first element
-          in the response.
-        in: query
-        name: offset
-        required: true
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - description: Part of pagination. Specifies the number of items which shall
-          be retrieved. Only this amount of items is returned in the response.
-        in: query
-        name: limit
-        required: true
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetEventsResponse"
-          description: OK
-      summary: Get logged events like login and login error of the currently active
-        user
-      tags:
-      - User
-  /users/self/groups:
-    get:
-      operationId: getSelfGroups
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGroupsResponse"
-          description: OK
-      summary: Get the groups of the currently active user
-      tags:
-      - User
-  /users/self/keys:
-    delete:
-      operationId: deleteEmployeeUserKeys
-      responses:
-        "200":
-          description: OK
-      summary: Delete the key pair (used for audit log access) from the user which
-        is currently active
-      tags:
-      - User
-    post:
-      operationId: addEmployeeSelfUserKeys
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/EmployeeUserKeys"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/EmployeeUserKeys"
-          description: OK
-      summary: Upload private and public key for an employee user (i.e. for audit
-        log access)
-      tags:
-      - User
-  /users/self/keys/private:
-    get:
-      operationId: getEmployeePrivateUserKey
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/PrivateEmployeeUserKeyDto"
-          description: OK
-      summary: Get the private keys (necessary for decrypting audit log files) from
-        the employee user who is currently active
-      tags:
-      - User
-  /users/self/leaders:
-    get:
-      operationId: getSelfLeaders
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetUsersResponse"
-          description: OK
-      summary: Get the team leaders of the currently active user
-      tags:
-      - User
-  /users/self/with-access:
-    get:
-      operationId: getSelfUserAndAccess
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/SelfUser"
-          description: OK
-      summary: "Get the user which is currently active, including all roles assigned\
-        \ to this user"
-      tags:
-      - User
-  /users/suggest:
-    post:
-      operationId: suggestUser
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddUserRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/User"
-          description: OK
-      summary: Suggest a new user for the employee portal
-      tags:
-      - User
-  /users/user-management-page:
-    get:
-      operationId: getUserManagementPage
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetUserManagementPageResponse"
-          description: OK
-      summary: "Get resources for the user management page. Includes the self user,\
-        \ self user groups, and members of those groups."
-      tags:
-      - User
-  /users/{id}:
-    get:
-      operationId: getUser
-      parameters:
-      - description: The id of the user
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/User"
-          description: OK
-      summary: Get a user
-      tags:
-      - User
-  /users/{id}/profile:
-    get:
-      operationId: getUserProfile
-      parameters:
-      - description: The id of the user
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/UserProfile"
-          description: OK
-      summary: "Get the profile of a user, includes additional information"
-      tags:
-      - User
-components:
-  schemas:
-    AbsenceNotification:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractNotification"
-      - type: object
-        properties:
-          absenceEnd:
-            type: string
-            format: date-time
-          absenceStart:
-            type: string
-            format: date-time
-          absentUserId:
-            type: string
-            format: uuid
-      required:
-      - absenceEnd
-      - absenceStart
-      - absentUserId
-      - createdAt
-      - id
-    AbstractAddContactRequest:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    AbstractContactChange:
-      type: object
-      discriminator:
-        mapping:
-          DomesticContactAddressChange: "#/components/schemas/DomesticContactAddressChange"
-          InstitutionContactChange: "#/components/schemas/InstitutionContactChange"
-          PersonContactChange: "#/components/schemas/PersonContactChange"
-          PostboxContactAddressChange: "#/components/schemas/PostboxContactAddressChange"
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    AbstractNotification:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        createdAt:
-          type: string
-          format: date-time
-        id:
-          type: string
-          format: uuid
-        readAt:
-          type: string
-          format: date-time
-      required:
-      - '@type'
-      - createdAt
-      - id
-    AbstractUpdateContactRequest:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    AccessToken:
-      type: object
-      properties:
-        expiresAt:
-          type: string
-          format: date-time
-        jwt:
-          type: string
-    ActiveUserSession:
-      type: object
-      properties:
-        device:
-          $ref: "#/components/schemas/Device"
-        ip:
-          type: string
-        isCurrent:
-          type: boolean
-        lastActiveTime:
-          type: string
-          format: date-time
-        sessionId:
-          type: string
-          format: uuid
-        startTime:
-          type: string
-          format: date-time
-      required:
-      - device
-      - ip
-      - isCurrent
-      - lastActiveTime
-      - sessionId
-      - startTime
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    AddBundIdPersonLinkRequest:
-      type: object
-      description: Request used for establishing a link between a BundId user and
-        a reference person
-      properties:
-        bpk2:
-          type: string
-          description: The bPK2 of the bundId user
-          example: VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0
-        referencePersonId:
-          type: string
-          format: uuid
-          description: The (external) id of the reference person
-          example: be9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-      required:
-      - bpk2
-      - referencePersonId
-    AddCentralFileIdToGdprProcedureRequest:
-      type: object
-      properties:
-        centralFileIds:
-          type: array
-          description: The Ids belonging to the Reference Data from the Central Files
-            that shall be processed in this GDPR procedure.
-          example: "[be9831d4-dc25-48d8-9bfe-4c0b54bfb2c1, a37b5d6f-d72b-4e8a-b1b3-8a4c7f0e6b92]"
-          items:
-            type: string
-            format: uuid
-            description: The Ids belonging to the Reference Data from the Central
-              Files that shall be processed in this GDPR procedure.
-        version:
-          type: integer
-          format: int64
-          description: "Version of the entity. Each time the entity is changed, it\
-            \ is incremented by one."
-      required:
-      - centralFileIds
-      - version
-    AddCitizenAccessCodeUserWithDateOfBirthCredentialRequest:
-      type: object
-      properties:
-        personFileStateId:
-          type: string
-          format: uuid
-          description: Id of the person file state
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-      required:
-      - personFileStateId
-    AddCitizenAccessCodeUserWithPinCredentialRequest:
-      type: object
-      properties:
-        pin:
-          type: string
-          description: The PIN for anonymous authorization.
-          example: "654321"
-          pattern: "\\d{6}"
-      required:
-      - pin
-    AddFacilityFileStateRequest:
-      type: object
-      description: Request used for adding facilities from non-external sources
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        referenceFacilityId:
-          type: string
-          format: uuid
-          description: "Id of a referenceFacility. If this Id is provided, a new File\
-            \ State with the input attributes is created for that referenceFacility,\
-            \ regardless of any matching logic."
-          example: be9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-      required:
-      - dataOrigin
-      - name
-    AddFacilityFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        id:
-          type: string
-          format: uuid
-          description: The Id of the Facility.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-      required:
-      - contactPersons
-      - dataOrigin
-      - emailAddresses
-      - id
-      - name
-      - phoneNumbers
-      - referenceVersion
-    AddFacilityFileStatesRequest:
-      type: object
-      description: A list of Facilities that shall be added to the Central Files.
-      properties:
-        facilities:
-          type: array
-          items:
-            $ref: "#/components/schemas/AddFacilityFileStateRequest"
-          maxItems: 10000
-          minItems: 1
-      required:
-      - facilities
-    AddFacilityFileStatesResponse:
-      type: object
-      properties:
-        facilityFileStateIds:
-          type: array
-          description: A list containing the file state IDs of the added facilities
-          items:
-            type: string
-            format: uuid
-      required:
-      - facilityFileStateIds
-    AddGdprDownloadsRequest:
-      type: object
-      properties:
-        downloadIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      required:
-      - downloadIds
-    AddGdprProcedureFromCitizenPortalRequest:
-      type: object
-      description: Request used for initiating GDPR procedures from the citizen portal
-      properties:
-        matterOfConcern:
-          type: string
-          description: The matter of concern for the GDPR procedure (relevant only
-            for the right to rectification and right to object
-          maxLength: 10000
-          minLength: 0
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - type
-    AddGdprProcedureRequest:
-      type: object
-      properties:
-        identificationData:
-          oneOf:
-          - $ref: "#/components/schemas/GdprFacility"
-          - $ref: "#/components/schemas/GdprPerson"
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - identificationData
-      - type
-    AddGlobalCalendarRequest:
-      type: object
-      properties:
-        globalCalendarName:
-          type: string
-      required:
-      - globalCalendarName
-    AddInstitutionContactRequest:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractAddContactRequest"
-      - type: object
-        properties:
-          category:
-            $ref: "#/components/schemas/ContactCategory"
-          contactAddress:
-            type: object
-            description: The contact address of the Contact.
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          differentBillingAddress:
-            type: object
-            description: An optional deviating billing address of the Contact.
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          emailAddresses:
-            type: array
-            description: A list of email addresses of the Contact.
-            example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-            items:
-              type: string
-          name:
-            type: string
-            description: The name of the Institution.
-            example: 123 Example Laboratory
-            maxLength: 300
-            minLength: 1
-          phoneNumbers:
-            type: array
-            description: A list of telephone numbers of the Contact.
-            example: "['+4912345678901','+4912345678902','+4912345678903']"
-            items:
-              type: string
-              maxLength: 23
-              minLength: 1
-      required:
-      - contactAddress
-      - name
-    AddInventoryItemRequest:
-      type: object
-      properties:
-        articleNumber:
-          type: string
-          description: "A descriptive number of the Inventory Item, e.g. the article\
-            \ or model number."
-          example: T-800
-        count:
-          type: integer
-          format: int32
-          description: "The initial amount of stock of the Inventory Item, which shall\
-            \ be available for bookings."
-          example: 500
-          minimum: 0
-        description:
-          type: string
-          description: Free text field for descriptive information on the Inventory
-            Item.
-          example: The vaccine is stored in a red container in the fridge of the storage
-            room.
-        labelNames:
-          type: array
-          description: A list of label names. Any provided name will be used to resolve
-            existing labels from the database.
-          example: "['Label1','Label2','Label3']"
-          items:
-            type: string
-        minCount:
-          type: integer
-          format: int32
-          description: "When this amount of stock of the Inventory Item is reached,\
-            \ a graphic warning is displayed in the overview list."
-          example: 100
-          minimum: 0
-        name:
-          type: string
-          description: The name of the Inventory Item.
-          example: Example Manufacturer's Vaccine
-        type:
-          $ref: "#/components/schemas/InventoryItemType"
-      required:
-      - count
-      - minCount
-      - name
-      - type
-    AddLabelRequest:
-      type: object
-      properties:
-        name:
-          type: string
-          description: The name of a label (e.g. the name of a business module to
-            which certain Inventory Items or Resources may belong).
-          example: Travel Medicine
-      required:
-      - name
-    AddMukFacilityLinkRequest:
-      type: object
-      description: Request used for establishing a link between a MUK user and a reference
-        facility
-      properties:
-        dataTransmitterPseudonymId:
-          type: string
-          description: The 'DatenübermittlerPseudonymId' of the MUK user
-          example: du-986b2b54ab89cf4ed674ad8c3126b966b54d4872
-        referenceFacilityId:
-          type: string
-          format: uuid
-          description: The (external) id of the reference facility
-          example: be9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-      required:
-      - dataTransmitterPseudonymId
-      - referenceFacilityId
-    AddPersonContactRequest:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractAddContactRequest"
-      - type: object
-        properties:
-          contactAddress:
-            type: object
-            description: The contact address of the Contact.
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          differentBillingAddress:
-            type: object
-            description: An optional deviating billing address of the Contact.
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          emailAddresses:
-            type: array
-            description: A list of email addresses of the Contact.
-            example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-            items:
-              type: string
-          externalChatUsername:
-            type: string
-            description: The chat username of the gematik TI-Messenger (matrix chat).
-            example: '@username:server'
-            maxLength: 255
-            minLength: 1
-          firstName:
-            type: string
-            description: The given name(s) of the Person.
-            example: John
-            maxLength: 80
-            minLength: 1
-          gender:
-            $ref: "#/components/schemas/Gender"
-          name:
-            type: string
-            description: The last name of the Person.
-            example: Doe
-            maxLength: 120
-            minLength: 1
-          phoneNumbers:
-            type: array
-            description: A list of telephone numbers of the Contact.
-            example: "['+4912345678901','+4912345678902','+4912345678903']"
-            items:
-              type: string
-              maxLength: 23
-              minLength: 1
-          salutation:
-            $ref: "#/components/schemas/Salutation"
-          title:
-            type: string
-            description: The academic title of a Person.
-            example: Prof. Dr.
-            maxLength: 119
-            minLength: 1
-      required:
-      - name
-    AddPersonFileStateRequest:
-      type: object
-      description: Request used for adding persons from non-external sources
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        dateOfBirth:
-          type: string
-          format: date
-          description: The date of birth of the Person.
-          example: 2000-01-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Person.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: The given name(s) of the Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: The last name of the Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          description: The last name at birth of the Person.
-          example: Smith
-          maxLength: 40
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Person.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          description: The place of birth (without country) of the Person.
-          example: Berlin
-          maxLength: 50
-          minLength: 1
-        referencePersonId:
-          type: string
-          format: uuid
-          description: "Id of a referencePerson. If this Id is provided, a new File\
-            \ State with the input attributes is created for that referencePerson,\
-            \ regardless of any matching logic."
-          example: be9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - dataOrigin
-      - dateOfBirth
-      - firstName
-      - lastName
-    AddPersonFileStatesRequest:
-      type: object
-      description: A list of Persons that shall be added to the Central Files.
-      properties:
-        persons:
-          type: array
-          items:
-            $ref: "#/components/schemas/AddPersonFileStateRequest"
-          maxItems: 10000
-          minItems: 1
-      required:
-      - persons
-    AddPersonFileStatesResponse:
-      type: object
-      properties:
-        personFileStateIds:
-          type: array
-          description: A list containing the file state IDs of the added persons
-          items:
-            type: string
-            format: uuid
-      required:
-      - personFileStateIds
-    AddResourceRequest:
-      type: object
-      properties:
-        articleNumber:
-          type: string
-          description: "A descriptive number of the Resource, e.g. the article or\
-            \ model number."
-          example: T-800
-        description:
-          type: string
-          description: Free text field for descriptive information on the Resource.
-          example: The car is parked in the right garage.
-        labelNames:
-          type: array
-          description: A list of label names. Any provided name will be used to resolve
-            existing labels from the database.
-          example: "['Label1','Label2','Label3']"
-          items:
-            type: string
-        name:
-          type: string
-          description: The name of the Resource.
-          example: White delivery truck
-        type:
-          $ref: "#/components/schemas/ResourceType"
-      required:
-      - name
-      - type
-    AddUserRequest:
-      type: object
-      description: |
-        Suggest a user with the given properties.
-        The authorization server uses the validators shown in this link:
-        https://github.com/keycloak/keycloak/tree/adca2c67673232a6502cac976a10611254cbc51c/services/src/main/java/org/keycloak/userprofile/validator
-      properties:
-        email:
-          type: string
-          description: The email address of a user
-          example: example@mail.de
-        externalChatUsername:
-          type: string
-          description: The chat username of the gematik TI-Messenger (matrix chat)
-          example: '@username:server'
-          pattern: "\\p{ASCII}{3,255}"
-        firstName:
-          type: string
-          description: The given name(s) of a user
-          example: John
-          maxLength: 255
-          minLength: 2
-        groups:
-          type: array
-          description: A list of groups the user shall be part of
-          example: "['group1','group2','group3']"
-          items:
-            type: string
-            description: A list of groups the user shall be part of
-            example: "['group1','group2','group3']"
-        lastName:
-          type: string
-          description: The last name of a user
-          example: Doe
-          maxLength: 255
-          minLength: 2
-        phoneNumber:
-          type: string
-          description: The phone number of a user
-          example: "+491234567890"
-          pattern: "[-+0-9() ]{1,23}"
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a user
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 0
-        username:
-          type: string
-          description: The username which is displayed in the application and can
-            be used for the login
-          example: testuser
-          maxLength: 255
-          minLength: 3
-      required:
-      - firstName
-      - groups
-      - lastName
-      - username
-    Address:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    ArchivingRelevance:
-      type: string
-      enum:
-      - DEFAULT
-      - RELEVANT
-      - IRRELEVANT
-    ArchivingRelevanceSettings:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        defaultArchivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-      required:
-      - archivingRelevance
-      - defaultArchivingRelevance
-    AutocompleteStreetResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          description: A list of street names which are results of the autocompletion
-          example: "['Hauptpfad','Hauptstraße','Hauptweg']"
-          items:
-            type: string
-            description: A list of street names which are results of the autocompletion
-            example: "['Hauptpfad','Hauptstraße','Hauptweg']"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          description: The number of streets in the response
-      required:
-      - elements
-      - totalNumberOfElements
-    BaseEventRequest:
-      type: object
-      description: Base events are events like vacations that are not related to any
-        business module.
-      properties:
-        calendarId:
-          type: string
-          format: uuid
-        subject:
-          type: string
-        timeData:
-          $ref: "#/components/schemas/EventTimeData"
-        type:
-          $ref: "#/components/schemas/BaseEventType"
-      required:
-      - calendarId
-      - timeData
-      - type
-    BaseEventType:
-      type: string
-      enum:
-      - HOLIDAY
-      - SERVICE
-      - VACATION
-    BaseFeature:
-      type: string
-      enum:
-      - CHAT_USERNAME
-      - SEARCH_PROCEDURES
-      - INBOX
-      - OPEN_DATA
-      - GDPR
-      - GDPR_ONLINE_PORTAL
-      - MUK_FACILITY_LINK
-      - BUNDID_PERSON_LINK
-    BlockingEventsOfCalendar:
-      type: object
-      properties:
-        calendarId:
-          type: string
-          format: uuid
-        events:
-          type: array
-          items:
-            $ref: "#/components/schemas/EventWithTimeData"
-      required:
-      - calendarId
-      - events
-    BlockingEventsOfResource:
-      type: object
-      properties:
-        events:
-          type: array
-          items:
-            $ref: "#/components/schemas/EventWithTimeData"
-        resourceId:
-          type: string
-          format: uuid
-      required:
-      - events
-      - resourceId
-    BookInventoryItemRequest:
-      type: object
-      properties:
-        bookingCount:
-          type: integer
-          format: int32
-          description: The amount of stock of an Inventory Item that shall be booked.
-          example: 200
-          minimum: 1
-      required:
-      - bookingCount
-    BundIdUserAttributes:
-      type: object
-      description: The BundId attributes of a user
-      properties:
-        address:
-          $ref: "#/components/schemas/DomesticAddress"
-        firstName:
-          type: string
-        lastName:
-          type: string
-      required:
-      - address
-      - firstName
-      - lastName
-    BusinessCaseEventRequest:
-      type: object
-      properties:
-        calendarIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-        timeData:
-          $ref: "#/components/schemas/EventTimeData"
-      required:
-      - calendarIds
-      - timeData
-    BusinessModule:
-      type: string
-      enum:
-      - INSPECTION
-      - SCHOOL_ENTRY
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY
-      - DENTAL
-      - OFFICIAL_MEDICAL_SERVICE
-    Calendar:
-      type: object
-      properties:
-        globalCalendarName:
-          type: string
-        id:
-          type: string
-          format: uuid
-        resourceId:
-          type: string
-          format: uuid
-        type:
-          $ref: "#/components/schemas/CalendarType"
-        userId:
-          type: string
-          format: uuid
-      required:
-      - id
-      - type
-    CalendarType:
-      type: string
-      enum:
-      - GLOBAL
-      - RESOURCE
-      - USER
-    CancelGdprProcedureRequest:
-      type: object
-      properties:
-        internalNote:
-          type: string
-        version:
-          type: integer
-          format: int64
-      required:
-      - internalNote
-      - version
-    CitizenAccessCodeUser:
-      type: object
-      properties:
-        accessCode:
-          type: string
-          description: The access code for the citizen user
-          example: Wzhu89yP4F728jVTT
-          maxLength: 17
-          minLength: 17
-        userId:
-          type: string
-          format: uuid
-          description: Id of the citizen user
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-      required:
-      - accessCode
-      - userId
-    CitizenUser:
-      type: object
-      properties:
-        attributes:
-          type: object
-          additionalProperties:
-            type: array
-            items:
-              type: string
-        userId:
-          type: string
-          format: uuid
-      required:
-      - userId
-    CitizenUserRole:
-      type: string
-      enum:
-      - STANDARD_CITIZEN
-      - ACCESS_CODE_USER
-      - MUK_USER
-      - BUND_ID_USER
-    CitizenUsersGdprProcedure:
-      type: object
-      description: The core data of a GdprProcedure used in a response to a query
-        by a CitizenUser
-      properties:
-        closedAt:
-          type: string
-          format: date-time
-          description: The date and time of when this GDPR procedure was completed
-            or cancelled.
-          example: 2024-02-01T00:00:00.123456Z
-        createdAt:
-          type: string
-          format: date-time
-          description: The date and time of when the GDPR procedure was created.
-          example: 2024-02-01T00:00:00.123456Z
-        hasDownloads:
-          type: boolean
-          description: Whether this procedure has available downloads.
-          example: true
-        id:
-          type: string
-          format: uuid
-          description: The Id of the GDPR procedure.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        matterOfConcern:
-          type: string
-          description: The matter of concern specified by the requesting user.
-          example: Please stop all procedures related to my personal information.
-        status:
-          $ref: "#/components/schemas/GdprProcedureStatus"
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - createdAt
-      - hasDownloads
-      - id
-      - status
-      - type
-    CloseGdprProcedureRequest:
-      type: object
-      properties:
-        internalNote:
-          type: string
-        version:
-          type: integer
-          format: int64
-      required:
-      - internalNote
-      - version
-    Contact:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    ContactAddressReference:
-      type: object
-      properties:
-        addressId:
-          type: integer
-          format: int64
-          description: The reference Id of the address of a Contact.
-          example: 723
-        usage:
-          $ref: "#/components/schemas/ContactAddressUsage"
-      required:
-      - addressId
-      - usage
-    ContactAddressUsage:
-      type: string
-      description: List of possible usages for an address.
-      enum:
-      - CONTACT_ADDRESS
-      - DIFFERENT_BILLING_ADDRESS
-    ContactCategory:
-      type: string
-      description: The list of possible types under which an Institution in the Contact
-        Management can be categorized.
-      enum:
-      - LABORATORY
-      - SCHOOL
-      - DOCTORS_OFFICE
-      - HEALTH_DEPARTMENT
-      - MISC
-      - DAYCARE
-    ContactHistoryEntry:
-      type: object
-      properties:
-        addressReference:
-          $ref: "#/components/schemas/ContactAddressReference"
-        changes:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticContactAddressChange"
-          - $ref: "#/components/schemas/InstitutionContactChange"
-          - $ref: "#/components/schemas/PersonContactChange"
-          - $ref: "#/components/schemas/PostboxContactAddressChange"
-        contactId:
-          type: string
-          format: uuid
-          description: Id of the Contact.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        historyId:
-          type: integer
-          format: int64
-          description: Id of the history revision step.
-          example: 723
-        modifiedAt:
-          type: string
-          format: date-time
-          description: The date and time of when the Contact was modified.
-          example: 2024-02-01T00:00:00.123456Z
-        modifiedBy:
-          type: string
-          format: uuid
-          description: The Id of the User who modified the Contact.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        type:
-          $ref: "#/components/schemas/HistoryEntryType"
-      required:
-      - changes
-      - contactId
-      - historyId
-      - modifiedAt
-      - modifiedBy
-      - type
-    ContactSortKey:
-      type: string
-      description: The list of possible parameters by which Contacts can be sorted.
-      enum:
-      - NAME
-      - TYPE
-      - RELEVANCE
-      - CATEGORY
-    ContactType:
-      type: string
-      description: List of possible types of a Contact.
-      enum:
-      - PERSON
-      - INSTITUTION
-    CountryCode:
-      type: string
-      description: "List of country codes in ISO 3166-1 alpha-2 format. With custom\
-        \ extensions for stateless, non-standard countries, and unknown countries."
-      enum:
-      - AD
-      - AE
-      - AF
-      - AG
-      - AI
-      - AL
-      - AM
-      - AO
-      - AQ
-      - AR
-      - AS
-      - AT
-      - AU
-      - AW
-      - AX
-      - AZ
-      - BA
-      - BB
-      - BD
-      - BE
-      - BF
-      - BG
-      - BH
-      - BI
-      - BJ
-      - BL
-      - BM
-      - BN
-      - BO
-      - BQ
-      - BR
-      - BS
-      - BT
-      - BV
-      - BW
-      - BY
-      - BZ
-      - CA
-      - CC
-      - CD
-      - CF
-      - CG
-      - CH
-      - CI
-      - CK
-      - CL
-      - CM
-      - CN
-      - CO
-      - CR
-      - CU
-      - CV
-      - CW
-      - CX
-      - CY
-      - CZ
-      - DE
-      - DJ
-      - DK
-      - DM
-      - DO
-      - DZ
-      - EC
-      - EE
-      - EG
-      - EH
-      - ER
-      - ES
-      - ET
-      - FI
-      - FJ
-      - FK
-      - FM
-      - FO
-      - FR
-      - GA
-      - GB
-      - GD
-      - GE
-      - GF
-      - GG
-      - GH
-      - GI
-      - GL
-      - GM
-      - GN
-      - GP
-      - GQ
-      - GR
-      - GS
-      - GT
-      - GU
-      - GW
-      - GY
-      - HK
-      - HM
-      - HN
-      - HR
-      - HT
-      - HU
-      - ID
-      - IE
-      - IL
-      - IM
-      - IN
-      - IO
-      - IQ
-      - IR
-      - IS
-      - IT
-      - JE
-      - JM
-      - JO
-      - JP
-      - KE
-      - KG
-      - KH
-      - KI
-      - KM
-      - KN
-      - KP
-      - KR
-      - KW
-      - KY
-      - KZ
-      - LA
-      - LB
-      - LC
-      - LI
-      - LK
-      - LR
-      - LS
-      - LT
-      - LU
-      - LV
-      - LY
-      - MA
-      - MC
-      - MD
-      - ME
-      - MF
-      - MG
-      - MH
-      - MK
-      - ML
-      - MM
-      - MN
-      - MO
-      - MP
-      - MQ
-      - MR
-      - MS
-      - MT
-      - MU
-      - MV
-      - MW
-      - MX
-      - MY
-      - MZ
-      - NA
-      - NC
-      - NE
-      - NF
-      - NG
-      - NI
-      - NL
-      - "NO"
-      - NP
-      - NR
-      - NU
-      - NZ
-      - OM
-      - PA
-      - PE
-      - PF
-      - PG
-      - PH
-      - PK
-      - PL
-      - PM
-      - PN
-      - PR
-      - PS
-      - PT
-      - PW
-      - PY
-      - QA
-      - RE
-      - RO
-      - RS
-      - RU
-      - RW
-      - SA
-      - SB
-      - SC
-      - SD
-      - SE
-      - SG
-      - SH
-      - SI
-      - SJ
-      - SK
-      - SL
-      - SM
-      - SN
-      - SO
-      - SR
-      - SS
-      - ST
-      - SV
-      - SX
-      - SY
-      - SZ
-      - TC
-      - TD
-      - TF
-      - TG
-      - TH
-      - TJ
-      - TK
-      - TL
-      - TM
-      - TN
-      - TO
-      - TR
-      - TT
-      - TV
-      - TW
-      - TZ
-      - UA
-      - UG
-      - UM
-      - US
-      - UY
-      - UZ
-      - VA
-      - VC
-      - VE
-      - VG
-      - VI
-      - VN
-      - VU
-      - WF
-      - WS
-      - YE
-      - YT
-      - ZA
-      - ZM
-      - ZW
-      - XK
-      - UNKNOWN
-      - STATELESS
-    CreateCalendarTestEventsRequest:
-      type: object
-      properties:
-        subDayEventCount:
-          type: integer
-          format: int32
-        wholeDayEventCount:
-          type: integer
-          format: int32
-      required:
-      - subDayEventCount
-      - wholeDayEventCount
-    CreateCalendarTestEventsResponse:
-      type: object
-      properties:
-        calendarId:
-          type: string
-          format: uuid
-    CreateSetupAdminRequest:
-      type: object
-      properties:
-        emailAddress:
-          type: string
-        username:
-          type: string
-      required:
-      - emailAddress
-      - username
-    CredentialType:
-      type: string
-      enum:
-      - PIN
-      - DATE_OF_BIRTH
-    DataOrigin:
-      type: string
-      description: "A list of possible origins of Persons and Facility in the Central\
-        \ Files. EDIT will only be set automatically on changes. EXTERNAL is for entries\
-        \ that come, e.g., from the citizen portal. IMPORT is reserved for automatic\
-        \ imports. MANUAL shall be set for every creation or connection done by an\
-        \ employee."
-      enum:
-      - MANUAL
-      - EXTERNAL
-      - IMPORT
-      - EDIT
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    DeleteFileStatesRequest:
-      type: object
-      properties:
-        fileStateIds:
-          type: array
-          description: A list of Ids of File States that shall be deleted.
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-          uniqueItems: true
-      required:
-      - fileStateIds
-    DeleteGdprDownloadsRequest:
-      type: object
-      properties:
-        downloadIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      required:
-      - downloadIds
-    DetailedEvent:
-      type: object
-      properties:
-        calendarIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-        id:
-          type: string
-          format: uuid
-        lastModifiedByUserId:
-          type: string
-          format: uuid
-        metaData:
-          $ref: "#/components/schemas/EventMetaData"
-        timeData:
-          $ref: "#/components/schemas/EventTimeData"
-        type:
-          $ref: "#/components/schemas/EventType"
-      required:
-      - calendarIds
-      - id
-      - metaData
-      - timeData
-      - type
-    DetailedEventWithoutCalendarId:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        lastModifiedByUserId:
-          type: string
-          format: uuid
-        metaData:
-          $ref: "#/components/schemas/EventMetaData"
-        timeData:
-          $ref: "#/components/schemas/EventTimeData"
-        type:
-          $ref: "#/components/schemas/EventType"
-      required:
-      - id
-      - metaData
-      - timeData
-      - type
-    Device:
-      type: object
-      properties:
-        browserName:
-          type: string
-        deviceName:
-          type: string
-        isMobile:
-          type: boolean
-        osName:
-          type: string
-        osVersion:
-          type: string
-      required:
-      - isMobile
-    DiffAddress:
-      type: object
-      properties:
-        differingFields:
-          type: array
-          items:
-            type: string
-        fileState:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        reference:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-      required:
-      - differingFields
-    DiffFacilityContactPerson:
-      type: object
-      properties:
-        differingFields:
-          type: array
-          items:
-            type: string
-        fileState:
-          $ref: "#/components/schemas/FacilityContactPerson"
-        reference:
-          $ref: "#/components/schemas/FacilityContactPerson"
-      required:
-      - differingFields
-    DiffFacilityDetails:
-      type: object
-      properties:
-        differingFields:
-          type: array
-          items:
-            type: string
-        fileState:
-          $ref: "#/components/schemas/FacilityDetails"
-        reference:
-          $ref: "#/components/schemas/FacilityDetails"
-      required:
-      - differingFields
-    DiffPersonDetails:
-      type: object
-      properties:
-        differingFields:
-          type: array
-          items:
-            type: string
-        fileState:
-          $ref: "#/components/schemas/PersonDetails"
-        reference:
-          $ref: "#/components/schemas/PersonDetails"
-      required:
-      - differingFields
-    District:
-      type: object
-      properties:
-        districtCode:
-          type: string
-          description: The number of the district
-          example: "0601"
-        districtName:
-          type: string
-          description: The name of the district
-          example: Berlin-Steglitz
-        municipalityKey:
-          type: string
-          description: The Community Identification Number (Amtlicher Gemeindeschlüssel)
-          example: "11000000"
-      required:
-      - districtCode
-      - districtName
-      - municipalityKey
-    DomesticAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          addressAddition:
-            type: string
-            description: A descriptive addition to the address.
-            example: 2.OG links
-            maxLength: 100
-            minLength: 1
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          houseNumber:
-            type: string
-            description: "The house number of the address, including extensions."
-            example: 1a
-            maxLength: 11
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          street:
-            type: string
-            description: "The name of the street of the address, without the house\
-              \ number."
-            example: Beispielweg
-            maxLength: 55
-            minLength: 1
-      description: A usual domestic address.
-      required:
-      - city
-      - country
-      - postalCode
-      - street
-    DomesticContactAddressChange:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractContactChange"
-      - type: object
-        properties:
-          addressAddition:
-            $ref: "#/components/schemas/HistoryChangeString"
-          city:
-            $ref: "#/components/schemas/HistoryChangeString"
-          country:
-            $ref: "#/components/schemas/HistoryChangeCountryCode"
-          differentName:
-            $ref: "#/components/schemas/HistoryChangeString"
-          houseNumber:
-            $ref: "#/components/schemas/HistoryChangeString"
-          postalCode:
-            $ref: "#/components/schemas/HistoryChangeString"
-          street:
-            $ref: "#/components/schemas/HistoryChangeString"
-      required:
-      - addressAddition
-      - city
-      - country
-      - differentName
-      - houseNumber
-      - postalCode
-      - street
-    EmployeeUserKeys:
-      type: object
-      properties:
-        cryptoVersion:
-          type: integer
-          format: int32
-          description: |-
-            The version of the crypto settings used.
-            A new crypto version (increased by 1) will become available every time something is changed regarding the GA-Lotse crypto settings for the keys stored here.
-            This attribute tracks, which settings were in use, when the key pair was created
-        encryptedPrivateKey:
-          type: array
-          description: The encrypted private key
-          items:
-            type: string
-            format: byte
-            description: The encrypted private key
-        keyIdentifier:
-          type: string
-          description: |
-            Usually the sha256 hash of the corresponding public key.
-            Used to distinguish keys, i.e. to recognize if the currently active keys are the keys that have been used (in the past) to encrypt a given set of data
-        publicKey:
-          type: array
-          description: The public key corresponding to the encrypted private key
-          items:
-            type: string
-            format: byte
-            description: The public key corresponding to the encrypted private key
-      required:
-      - cryptoVersion
-      - encryptedPrivateKey
-      - keyIdentifier
-      - publicKey
-    ErrorCode:
-      type: string
-      enum:
-      - UNEXPECTED_ERROR
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - INSUFFICIENT_USER_RIGHTS
-      - NOT_FOUND
-      - CONFLICT
-      - CONSTRAINT_VIOLATION
-      - TIMEOUT
-      - DATA_INTEGRITY_VIOLATION
-      - ALREADY_EXISTS
-      - AGGREGATION_EXCEPTION
-      - INVALID_FILE
-      - NONCONFORM_PDF
-      - CORRUPT
-      - LOCKED
-      - XLSX_TOO_MANY_ROWS
-    ErrorResponseWithLocation:
-      type: object
-      properties:
-        errorCode:
-          $ref: "#/components/schemas/ErrorCode"
-        errorLocation:
-          type: string
-        message:
-          type: string
-      required:
-      - errorCode
-      - errorLocation
-    EventMetaData:
-      type: object
-      properties:
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        description:
-          type: string
-        location:
-          type: string
-        procedureId:
-          type: string
-          format: uuid
-        subject:
-          type: string
-    EventTimeData:
-      type: object
-      properties:
-        end:
-          type: string
-          format: date-time
-        start:
-          type: string
-          format: date-time
-        wholeDay:
-          type: boolean
-      required:
-      - end
-      - start
-      - wholeDay
-    EventType:
-      type: string
-      enum:
-      - BUSINESS_CASE
-      - HOLIDAY
-      - SERVICE
-      - VACATION
-    EventWithTimeData:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        timeData:
-          $ref: "#/components/schemas/EventTimeData"
-      required:
-      - id
-      - timeData
-    ExternalAddFacilityFileStateRequest:
-      type: object
-      description: Request used for adding facilities from external sources
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-      required:
-      - name
-    ExternalAddPersonFileStateRequest:
-      type: object
-      description: Request used for adding persons from external sources
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dateOfBirth:
-          type: string
-          format: date
-          description: The date of birth of the Person.
-          example: 2000-01-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Person.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: The given name(s) of the Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: The last name of the Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          description: The last name at birth of the Person.
-          example: Smith
-          maxLength: 40
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Person.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          description: The place of birth (without country) of the Person.
-          example: Berlin
-          maxLength: 50
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - dateOfBirth
-      - firstName
-      - lastName
-    FacilityContactPerson:
-      type: object
-      properties:
-        emailAddress:
-          type: string
-          description: The email addresses of the Contact Person.
-          example: mail1@address.de
-          maxLength: 254
-          minLength: 6
-        firstName:
-          type: string
-          description: The given name(s) of the Contact Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: The last name of the Contact Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        phoneNumber:
-          type: string
-          description: The phone number of the Contact Person.
-          example: "+491234567890"
-          maxLength: 23
-          minLength: 1
-        role:
-          type: string
-          description: The role of the Contact Person in the Facility.
-          example: CEO
-          maxLength: 255
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of the Contact Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - lastName
-    FacilityContactPersonDiff:
-      type: object
-      properties:
-        facilityContactPersonDtoDiffDto:
-          $ref: "#/components/schemas/DiffFacilityContactPerson"
-      required:
-      - facilityContactPersonDtoDiffDto
-    FacilityDetails:
-      type: object
-      description: The data relating to a facility
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 0
-      required:
-      - name
-    FileDeletionApprovalRequestNotification:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractNotification"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          fileName:
-            type: string
-          procedureId:
-            type: string
-            format: uuid
-      required:
-      - createdAt
-      - createdBy
-      - fileName
-      - id
-      - procedureId
-    FindIcd10CodesRequest:
-      type: object
-      properties:
-        codes:
-          type: array
-          items:
-            type: string
-      required:
-      - codes
-    FindIcd10CodesResponse:
-      type: object
-      properties:
-        existingCodes:
-          type: array
-          items:
-            $ref: "#/components/schemas/Icd10Code"
-      required:
-      - existingCodes
-    GdprFacility:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          dataTransmitterPseudonymId:
-            type: string
-            description: The 'DatenübermittlerPseudonymId' of the MUK user
-            example: du-986b2b54ab89cf4ed674ad8c3126b966b54d4872
-          emailAddress:
-            type: string
-            description: The email addresses of the Facility.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          name:
-            type: string
-            description: The name of the Facility.
-            example: 123 Example Facility
-            maxLength: 300
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Facility.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 1
-      required:
-      - address
-      - name
-    GdprIdentificationData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    GdprPerson:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          bpk2:
-            type: string
-            description: The bpk2 of the BundId user
-            example: VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0
-          dateOfBirth:
-            type: string
-            format: date
-            description: The date of birth of the Person.
-            example: 2000-01-01
-          emailAddress:
-            type: string
-            description: The email addresses of the Person.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          firstName:
-            type: string
-            description: The given name(s) of the Person.
-            example: John
-            maxLength: 80
-            minLength: 1
-          lastName:
-            type: string
-            description: The last name of the Person.
-            example: Doe
-            maxLength: 120
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Person.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 0
-          salutation:
-            $ref: "#/components/schemas/Salutation"
-          title:
-            type: string
-            description: The academic title of the Person.
-            example: Prof. Dr.
-            maxLength: 119
-            minLength: 1
-      required:
-      - address
-      - dateOfBirth
-      - firstName
-      - lastName
-    GdprProcedureSortKey:
-      type: string
-      enum:
-      - CREATED_AT
-    GdprProcedureStatus:
-      type: string
-      description: A list of statuses a GDPR procedure can have.
-      enum:
-      - DRAFT
-      - OPEN
-      - IN_PROGRESS
-      - CLOSED
-      - ABORTED
-    GdprProcedureType:
-      type: string
-      description: A list of types of GDPR procedures.
-      enum:
-      - RIGHT_OF_ACCESS
-      - RIGHT_TO_ERASURE
-      - RIGHT_TO_OBJECT
-      - RIGHT_TO_RECTIFICATION
-    Gender:
-      type: string
-      description: The list of genders as specified in the German Personenstandsgesetz.
-      enum:
-      - NOT_SPECIFIED
-      - DIVERSE
-      - FEMALE
-      - MALE
-    GetActiveSessionsResponse:
-      type: object
-      properties:
-        sessions:
-          type: array
-          items:
-            $ref: "#/components/schemas/ActiveUserSession"
-      required:
-      - sessions
-    GetAggregatedNotificationsResponse:
-      type: object
-      properties:
-        errorResponses:
-          type: array
-          items:
-            $ref: "#/components/schemas/ErrorResponseWithLocation"
-        notifications:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/AbsenceNotification"
-            - $ref: "#/components/schemas/FileDeletionApprovalRequestNotification"
-            - $ref: "#/components/schemas/ProgressEntryDeletionApprovalRequestNotification"
-            - $ref: "#/components/schemas/SimpleNotification"
-            - $ref: "#/components/schemas/TaskDueAtReminderNotification"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - errorResponses
-      - notifications
-      - resolvedUsers
-    GetAggregatedProcedureMetricsResponse:
-      type: object
-      properties:
-        errorResponses:
-          type: array
-          items:
-            $ref: "#/components/schemas/ErrorResponseWithLocation"
-        procedureMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureMetric"
-      required:
-      - errorResponses
-      - procedureMetrics
-    GetAggregatedRecentProceduresResponse:
-      type: object
-      properties:
-        errorResponses:
-          type: array
-          items:
-            $ref: "#/components/schemas/ErrorResponseWithLocation"
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-      required:
-      - errorResponses
-      - procedures
-    GetAggregatedTasksResponse:
-      type: object
-      properties:
-        count:
-          type: integer
-          format: int64
-          description: total number of  tasks for this query
-        errorResponses:
-          type: array
-          items:
-            $ref: "#/components/schemas/ErrorResponseWithLocation"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-        tasks:
-          type: array
-          items:
-            $ref: "#/components/schemas/Task"
-          maxItems: 200
-          minItems: 0
-      required:
-      - count
-      - errorResponses
-      - resolvedUsers
-      - tasks
-    GetBaseFeatureTogglesResponse:
-      type: object
-      properties:
-        disabledOldFeatures:
-          type: array
-          items:
-            $ref: "#/components/schemas/BaseFeature"
-          uniqueItems: true
-        enabledNewFeatures:
-          type: array
-          items:
-            $ref: "#/components/schemas/BaseFeature"
-          uniqueItems: true
-      required:
-      - disabledOldFeatures
-      - enabledNewFeatures
-    GetBlockingEventsOfCalendarsRequest:
-      type: object
-      properties:
-        calendarIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-        timeRanges:
-          type: array
-          items:
-            $ref: "#/components/schemas/TimeRange"
-          maxItems: 2147483647
-          minItems: 1
-      required:
-      - calendarIds
-      - timeRanges
-    GetBlockingEventsOfCalendarsResponse:
-      type: object
-      properties:
-        calendarsWithBlockingEvents:
-          type: array
-          items:
-            $ref: "#/components/schemas/BlockingEventsOfCalendar"
-        notFoundCalendarIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - calendarsWithBlockingEvents
-      - notFoundCalendarIds
-    GetBlockingEventsOfResourcesRequest:
-      type: object
-      properties:
-        resourceIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-        timeRangeEnd:
-          type: string
-          format: date-time
-        timeRangeStart:
-          type: string
-          format: date-time
-      required:
-      - resourceIds
-      - timeRangeEnd
-      - timeRangeStart
-    GetBlockingEventsOfResourcesResponse:
-      type: object
-      properties:
-        notFoundResourceIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-        resourcesWithBlockingEvents:
-          type: array
-          items:
-            $ref: "#/components/schemas/BlockingEventsOfResource"
-      required:
-      - notFoundResourceIds
-      - resourcesWithBlockingEvents
-    GetBusinessCaseEventResponse:
-      type: object
-      properties:
-        errorResponses:
-          type: array
-          items:
-            $ref: "#/components/schemas/ErrorResponseWithLocation"
-        event:
-          $ref: "#/components/schemas/DetailedEvent"
-      required:
-      - errorResponses
-      - event
-    GetCalendarsResponse:
-      type: object
-      properties:
-        calendars:
-          type: array
-          items:
-            $ref: "#/components/schemas/Calendar"
-      required:
-      - calendars
-    GetCitizenPermissionsResponse:
-      type: object
-      properties:
-        permissions:
-          type: array
-          items:
-            $ref: "#/components/schemas/CitizenUserRole"
-      required:
-      - permissions
-    GetCitizenSelfUserResponse:
-      type: object
-      properties:
-        selfBundIdUserNameDto:
-          $ref: "#/components/schemas/BundIdUserAttributes"
-        selfMukUserNameDto:
-          $ref: "#/components/schemas/MukUserAttributes"
-    GetCitizenSelfUsersGdprProceduresResponse:
-      type: object
-      properties:
-        gdprProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/CitizenUsersGdprProcedure"
-      required:
-      - gdprProcedures
-    GetConfigurationResponse:
-      type: object
-      properties:
-        activeModules:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessModule"
-        maxFileSize:
-          type: integer
-          format: int64
-      required:
-      - activeModules
-      - maxFileSize
-    GetContactHistoryResponse:
-      type: object
-      properties:
-        entries:
-          type: array
-          items:
-            $ref: "#/components/schemas/ContactHistoryEntry"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - entries
-      - resolvedUsers
-    GetContactsRequest:
-      type: object
-      properties:
-        ids:
-          type: array
-          description: A list of IDs of Contacts.
-          example: "['ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1','df384786-9f85-4404-a9fd-33391da2d2b4','8b93ac7d-a059-437a-9834-e12d1346d088']"
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-      required:
-      - ids
-    GetContactsResponse:
-      type: object
-      properties:
-        contactResponses:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/InstitutionContact"
-            - $ref: "#/components/schemas/PersonContact"
-        notFoundIds:
-          type: array
-          description: "A list of IDs of requested Contacts, which have not been found\
-            \ in the database."
-          example: "['ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1','df384786-9f85-4404-a9fd-33391da2d2b4','8b93ac7d-a059-437a-9834-e12d1346d088']"
-          items:
-            type: string
-            format: uuid
-      required:
-      - contactResponses
-      - notFoundIds
-    GetDepartmentInfoResponse:
-      type: object
-      properties:
-        abbreviation:
-          type: string
-          description: The abbreviation of the name of the department
-          example: LTG
-        city:
-          type: string
-          description: The name of the city where the department is located
-          example: Berlin
-        country:
-          $ref: "#/components/schemas/CountryCode"
-        email:
-          type: string
-          description: The email address of the department
-          example: mail@address.de
-        homepage:
-          type: string
-          description: "The domain of the department's official homepage, excluding\
-            \ protocols"
-          example: department-homepage.de
-        houseNumber:
-          type: string
-          description: "The house number at the department's address, including any\
-            \ extensions or suffixes"
-          example: 1b
-        location:
-          $ref: "#/components/schemas/Location"
-        name:
-          type: string
-          description: The name of the department
-          example: Gesundheitsamt Landkreis Testgebiet
-        phoneNumber:
-          type: string
-          description: The primary contact telephone number for the department
-          example: "+491234567890"
-        postalCode:
-          type: string
-          description: The postal code for the department’s address
-          example: "12345"
-        street:
-          type: string
-          description: "The street name for the department’s address, not including\
-            \ the house number"
-          example: Beispielweg
-      required:
-      - city
-      - country
-      - email
-      - homepage
-      - houseNumber
-      - location
-      - name
-      - phoneNumber
-      - postalCode
-      - street
-    GetEventsOfCalendarResponse:
-      type: object
-      properties:
-        calendarId:
-          type: string
-          format: uuid
-        errorResponses:
-          type: array
-          items:
-            $ref: "#/components/schemas/ErrorResponseWithLocation"
-        events:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedEventWithoutCalendarId"
-      required:
-      - calendarId
-      - errorResponses
-      - events
-    GetEventsResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/UserEvent"
-        hasNext:
-          type: boolean
-      required:
-      - elements
-      - hasNext
-    GetEventsWithTimeDataRequest:
-      type: object
-      properties:
-        eventIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-      required:
-      - eventIds
-    GetEventsWithTimeDataResponse:
-      type: object
-      properties:
-        events:
-          type: array
-          items:
-            $ref: "#/components/schemas/EventWithTimeData"
-        notFoundEventIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - events
-      - notFoundEventIds
-    GetFacilityDiffResponse:
-      type: object
-      properties:
-        billingAddressDiff:
-          $ref: "#/components/schemas/DiffAddress"
-        contactAddressDiff:
-          $ref: "#/components/schemas/DiffAddress"
-        contactPersonsDiff:
-          type: array
-          items:
-            $ref: "#/components/schemas/FacilityContactPersonDiff"
-        facilityDetailsDiff:
-          $ref: "#/components/schemas/DiffFacilityDetails"
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of the reference facility
-          minimum: 0
-      required:
-      - billingAddressDiff
-      - contactAddressDiff
-      - contactPersonsDiff
-      - facilityDetailsDiff
-      - referenceVersion
-    GetFacilityFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        id:
-          type: string
-          format: uuid
-          description: Id of the Facility.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referenceFacility
-            it is connected to.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-      required:
-      - contactPersons
-      - dataOrigin
-      - emailAddresses
-      - id
-      - name
-      - phoneNumbers
-      - referenceVersion
-    GetFacilityFileStatesRequest:
-      type: object
-      properties:
-        checkOutdated:
-          type: boolean
-        fileStateIds:
-          type: array
-          description: A list of Ids for requested Facility File States.
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-      required:
-      - fileStateIds
-    GetFacilityFileStatesResponse:
-      type: object
-      properties:
-        facilityFileStates:
-          type: array
-          description: A list of requested File States of Facilities.
-          items:
-            $ref: "#/components/schemas/GetFacilityFileStateResponse"
-        notFoundIds:
-          type: array
-          description: A list containing the IDs of those requested facility file
-            states which could not be found in the database.
-          example: "['ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1','df384786-9f85-4404-a9fd-33391da2d2b4','8b93ac7d-a059-437a-9834-e12d1346d088']"
-          items:
-            type: string
-            format: uuid
-      required:
-      - facilityFileStates
-      - notFoundIds
-    GetFileStateIdsResponse:
-      type: object
-      properties:
-        fileStateIds:
-          type: array
-          description: A list of Ids of File States that are associated to the same
-            Reference Data.
-          items:
-            type: string
-            format: uuid
-      required:
-      - fileStateIds
-    GetGdprDownloadsResponse:
-      type: object
-      properties:
-        downloadIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      required:
-      - downloadIds
-    GetGdprProcedureDetailsPageResponse:
-      type: object
-      properties:
-        facilityMatches:
-          type: array
-          description: Search result of likely related Reference Data for Facilities
-            from the Central Files for this GDPR procedure.
-          items:
-            $ref: "#/components/schemas/GetReferenceFacilityResponse"
-        hasCentralFileDownload:
-          type: boolean
-        linkedCentralFileFacilities:
-          type: array
-          description: Reference Data of Facilities from the Central File that has
-            already been confirmed to be linked to this GDPR procedure.
-          items:
-            $ref: "#/components/schemas/GetReferenceFacilityResponse"
-        linkedCentralFilePersons:
-          type: array
-          description: Reference Data of Persons from the Central File that has already
-            been confirmed to be linked to this GDPR procedure.
-          items:
-            $ref: "#/components/schemas/GetReferencePersonResponse"
-        personMatches:
-          type: array
-          description: Search result of likely related Reference Data for Persons
-            from the Central Files for this GDPR procedure.
-          items:
-            $ref: "#/components/schemas/GetReferencePersonResponse"
-        procedure:
-          $ref: "#/components/schemas/GetGdprProcedureResponse"
-      required:
-      - facilityMatches
-      - hasCentralFileDownload
-      - linkedCentralFileFacilities
-      - linkedCentralFilePersons
-      - personMatches
-      - procedure
-    GetGdprProcedureFileStateIdsResponse:
-      type: object
-      properties:
-        facilityFileStateIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-        personFileStateIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - facilityFileStateIds
-      - personFileStateIds
-    GetGdprProcedureResponse:
-      type: object
-      properties:
-        centralFileIds:
-          type: array
-          description: The list of Ids of a set of Reference Data from the Central
-            Files that shall be processed in this GDPR procedure.
-          example: "[be9831d4-dc25-48d8-9bfe-4c0b54bfb2c1, a37b5d6f-d72b-4e8a-b1b3-8a4c7f0e6b92]"
-          items:
-            type: string
-            format: uuid
-            description: The list of Ids of a set of Reference Data from the Central
-              Files that shall be processed in this GDPR procedure.
-        closedAt:
-          type: string
-          format: date-time
-          description: The date and time of when this GDPR procedure was completed
-            or cancelled.
-          example: 2024-02-01T00:00:00.123456Z
-        createdAt:
-          type: string
-          format: date-time
-          description: The date and time of when the GDPR procedure was created.
-          example: 2024-02-01T00:00:00.123456Z
-        id:
-          type: string
-          format: uuid
-          description: The Id of the GDPR procedure.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        identificationData:
-          oneOf:
-          - $ref: "#/components/schemas/GdprFacility"
-          - $ref: "#/components/schemas/GdprPerson"
-        internalNote:
-          type: string
-          description: The internal note used to define the result of a procedure
-            when closing or cancelling.
-          example: "Could not find any datasets to correct, likely already deleted."
-        matterOfConcern:
-          type: string
-          description: "The matter of concern for this GDPR procedure, only relevant\
-            \ for right to correction and right to objection."
-          example: Person requested to stop all related procedures.
-        status:
-          $ref: "#/components/schemas/GdprProcedureStatus"
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-        version:
-          type: integer
-          format: int64
-          description: "Version of the entity. Each time the entity is changed, it\
-            \ is incremented by one."
-      required:
-      - centralFileIds
-      - createdAt
-      - id
-      - identificationData
-      - status
-      - type
-      - version
-    GetGdprProceduresResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/GetGdprProcedureResponse"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          description: The total number of GDPR procedures in the response.
-      required:
-      - elements
-      - totalNumberOfElements
-    GetGroupsResponse:
-      type: object
-      properties:
-        groups:
-          type: array
-          items:
-            $ref: "#/components/schemas/UserGroup"
-      required:
-      - groups
-    GetInventoryItemsResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/InventoryItem"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          description: The total number of Inventory Items in the response.
-          minimum: 0
-      required:
-      - elements
-      - totalNumberOfElements
-    GetLabelsResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/Label"
-      required:
-      - elements
-    GetMergedContactsResponse:
-      type: object
-      properties:
-        contactIds:
-          type: array
-          description: List of contact IDs that have been merged into the requested
-            contact
-          items:
-            type: string
-            format: uuid
-            description: List of contact IDs that have been merged into the requested
-              contact
-      required:
-      - contactIds
-    GetPersonDiffResponse:
-      type: object
-      properties:
-        billingAddressDiff:
-          $ref: "#/components/schemas/DiffAddress"
-        contactAddressDiff:
-          $ref: "#/components/schemas/DiffAddress"
-        personDetailsDiff:
-          $ref: "#/components/schemas/DiffPersonDetails"
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of the reference person
-          minimum: 0
-      required:
-      - billingAddressDiff
-      - contactAddressDiff
-      - personDetailsDiff
-      - referenceVersion
-    GetPersonFileStateIdsByKeyAttributesRequest:
-      type: object
-      properties:
-        searchAttributes:
-          type: array
-          items:
-            $ref: "#/components/schemas/PersonKeyAttributes"
-          uniqueItems: true
-      required:
-      - searchAttributes
-    GetPersonFileStateIdsByKeyAttributesResponse:
-      type: object
-      properties:
-        fileStateIdsByPersons:
-          type: object
-          additionalProperties:
-            type: array
-            items:
-              type: string
-              format: uuid
-      required:
-      - fileStateIdsByPersons
-    GetPersonFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        dateOfBirth:
-          type: string
-          format: date
-          description: The date of birth of the Person.
-          example: 2000-01-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Person.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: The given name(s) of the Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        id:
-          type: string
-          format: uuid
-          description: Id of the Person.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        lastName:
-          type: string
-          description: The last name of the Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          description: The last name at birth of the Person.
-          example: Smith
-          maxLength: 40
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referencePerson
-            it is connected to. Set to 'null' if unchecked.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Person.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          description: The place of birth (without country) of the Person.
-          example: Berlin
-          maxLength: 50
-          minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - dataOrigin
-      - dateOfBirth
-      - emailAddresses
-      - firstName
-      - gender
-      - id
-      - lastName
-      - phoneNumbers
-      - referenceVersion
-      - salutation
-    GetPersonFileStatesRequest:
-      type: object
-      properties:
-        checkOutdated:
-          type: boolean
-        fileStateIds:
-          type: array
-          description: A list of Ids for requested Person File States.
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-        sortParameters:
-          $ref: "#/components/schemas/GetPersonFileStatesSortParameters"
-      required:
-      - fileStateIds
-    GetPersonFileStatesResponse:
-      type: object
-      properties:
-        notFoundIds:
-          type: array
-          description: A list containing the IDs of those requested person file states
-            which could not be found in the database during a bulk-get operation.
-          example: "['ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1','df384786-9f85-4404-a9fd-33391da2d2b4','8b93ac7d-a059-437a-9834-e12d1346d088']"
-          items:
-            type: string
-            format: uuid
-        personFileStates:
-          type: array
-          description: A list of person file states
-          items:
-            $ref: "#/components/schemas/GetPersonFileStateResponse"
-      required:
-      - notFoundIds
-      - personFileStates
-    GetPersonFileStatesSortParameters:
-      type: object
-      properties:
-        pageNumber:
-          type: integer
-          format: int32
-          minimum: 0
-        pageSize:
-          type: integer
-          format: int32
-          minimum: 1
-        sortDirection:
-          $ref: "#/components/schemas/SortDirection"
-        sortKey:
-          $ref: "#/components/schemas/GetPersonsSortKey"
-      required:
-      - sortDirection
-      - sortKey
-    GetPersonsSortKey:
-      type: string
-      enum:
-      - FIRST_NAME
-      - LAST_NAME
-      - DATE_OF_BIRTH
-    GetProcedureConfigResponse:
-      type: object
-      properties:
-        supportedManualProgressEntryTypes:
-          type: array
-          items:
-            $ref: "#/components/schemas/ManualProgressEntryType"
-          uniqueItems: true
-    GetPublicEmployeeUserKeysResponse:
-      type: object
-      description: |
-        Contains the details on the public keys from users which have the right to decrypt audit log files
-      properties:
-        publicUserKeys:
-          type: array
-          items:
-            $ref: "#/components/schemas/PublicEmployeeUserKey"
-      required:
-      - publicUserKeys
-    GetReferenceFacilityResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        id:
-          type: string
-          format: uuid
-          description: Id of the Reference Facility. This Id MUST NOT be persisted
-            in any other database.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        version:
-          type: integer
-          format: int64
-          description: "Version of the entity. Each time the entity is changed, it\
-            \ is incremented by one."
-      required:
-      - contactPersons
-      - dataOrigin
-      - emailAddresses
-      - id
-      - name
-      - phoneNumbers
-      - version
-    GetReferencePersonResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        dateOfBirth:
-          type: string
-          format: date
-          description: The date of birth of the Person.
-          example: 2000-01-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Person.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: The given name(s) of the Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        id:
-          type: string
-          format: uuid
-          description: Id of the Person.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        lastName:
-          type: string
-          description: The last name of the Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          description: The last name at birth of the Person.
-          example: Smith
-          maxLength: 40
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Person.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          description: The place of birth (without country) of the Person.
-          example: Berlin
-          maxLength: 50
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-        version:
-          type: integer
-          format: int64
-          description: "Version of the entity. Each time the entity is changed, it\
-            \ is incremented by one."
-      required:
-      - dataOrigin
-      - dateOfBirth
-      - emailAddresses
-      - firstName
-      - gender
-      - id
-      - lastName
-      - phoneNumbers
-      - salutation
-      - version
-    GetRelevantCalendarsResponse:
-      type: object
-      properties:
-        currentUserCalendar:
-          $ref: "#/components/schemas/UserCalendar"
-        globalCalendars:
-          type: array
-          items:
-            $ref: "#/components/schemas/GlobalCalendar"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-        userGroupCalendarInfos:
-          type: array
-          items:
-            $ref: "#/components/schemas/UserGroupCalendarInfo"
-      required:
-      - currentUserCalendar
-      - globalCalendars
-      - resolvedUsers
-      - userGroupCalendarInfos
-    GetResourceCalendarsRequest:
-      type: object
-      properties:
-        resourceIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-      required:
-      - resourceIds
-    GetResourceCalendarsResponse:
-      type: object
-      properties:
-        notFoundResourceIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-        resourceCalendars:
-          type: array
-          items:
-            $ref: "#/components/schemas/ResourceCalendar"
-      required:
-      - notFoundResourceIds
-      - resourceCalendars
-    GetResourcesResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/Resource"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          description: The total number of Resources in the response.
-          minimum: 0
-      required:
-      - elements
-      - totalNumberOfElements
-    GetTaskMetricsResponse:
-      type: object
-      properties:
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedProcedureCount:
-          type: integer
-          format: int64
-        fastestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        slowestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        taskMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskMetric"
-      required:
-      - businessModule
-      - closedProcedureCount
-      - fastestProcedures
-      - procedureType
-      - slowestProcedures
-      - taskMetrics
-    GetTasksSortBy:
-      type: string
-      enum:
-      - PRIORITY
-      - CREATED_AT
-      - MODIFIED_AT
-    GetTasksSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetUserCalendarsRequest:
-      type: object
-      properties:
-        userIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-      required:
-      - userIds
-    GetUserCalendarsResponse:
-      type: object
-      properties:
-        notFoundUserIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-        userCalendars:
-          type: array
-          items:
-            $ref: "#/components/schemas/UserCalendar"
-      required:
-      - notFoundUserIds
-      - userCalendars
-    GetUserManagementPageResponse:
-      type: object
-      properties:
-        groupMembers:
-          type: array
-          items:
-            $ref: "#/components/schemas/GroupMember"
-        selfGroups:
-          type: array
-          items:
-            $ref: "#/components/schemas/UserGroup"
-        selfUser:
-          $ref: "#/components/schemas/User"
-      required:
-      - groupMembers
-      - selfGroups
-      - selfUser
-    GetUsersRequest:
-      type: object
-      properties:
-        ignoreUnknownId:
-          type: boolean
-          description: A flag to ignore Ids of unknown Users in the response. Can
-            be set to suppress errors if they are not important
-        userIds:
-          type: array
-          description: A list of requested Ids of Users
-          example: "['ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1','df384786-9f85-4404-a9fd-33391da2d2b4','8b93ac7d-a059-437a-9834-e12d1346d088']"
-          items:
-            type: string
-            format: uuid
-      required:
-      - userIds
-    GetUsersResponse:
-      type: object
-      properties:
-        users:
-          type: array
-          items:
-            $ref: "#/components/schemas/User"
-      required:
-      - users
-    GlobalCalendar:
-      type: object
-      properties:
-        calendarId:
-          type: string
-          format: uuid
-        globalCalendarName:
-          type: string
-      required:
-      - calendarId
-      - globalCalendarName
-    GroupMember:
-      type: object
-      properties:
-        groupNames:
-          type: array
-          items:
-            type: string
-        user:
-          $ref: "#/components/schemas/User"
-      required:
-      - groupNames
-      - user
-    HistoryChangeContactCategory:
-      type: object
-      properties:
-        isChanged:
-          type: boolean
-          description: Specifies if the value has been changed or not.
-          example: true
-        newValue:
-          $ref: "#/components/schemas/ContactCategory"
-      required:
-      - isChanged
-    HistoryChangeCountryCode:
-      type: object
-      properties:
-        isChanged:
-          type: boolean
-          description: Specifies if the value has been changed or not.
-          example: true
-        newValue:
-          $ref: "#/components/schemas/CountryCode"
-      required:
-      - isChanged
-    HistoryChangeGender:
-      type: object
-      properties:
-        isChanged:
-          type: boolean
-          description: Specifies if the value has been changed or not.
-          example: true
-        newValue:
-          $ref: "#/components/schemas/Gender"
-      required:
-      - isChanged
-    HistoryChangeListString:
-      type: object
-      properties:
-        isChanged:
-          type: boolean
-          description: Specifies if the value has been changed or not.
-          example: true
-        newValue:
-          type: array
-          description: The new object/value if there had been a change.
-          items:
-            type: string
-            description: The new object/value if there had been a change.
-      required:
-      - isChanged
-    HistoryChangeSalutation:
-      type: object
-      properties:
-        isChanged:
-          type: boolean
-          description: Specifies if the value has been changed or not.
-          example: true
-        newValue:
-          $ref: "#/components/schemas/Salutation"
-      required:
-      - isChanged
-    HistoryChangeString:
-      type: object
-      properties:
-        isChanged:
-          type: boolean
-          description: Specifies if the value has been changed or not.
-          example: true
-        newValue:
-          type: string
-          description: The new object/value if there had been a change.
-      required:
-      - isChanged
-    HistoryChangeUUID:
-      type: object
-      properties:
-        isChanged:
-          type: boolean
-          description: Specifies if the value has been changed or not.
-          example: true
-        newValue:
-          type: string
-          format: uuid
-          description: The new object/value if there had been a change.
-      required:
-      - isChanged
-    HistoryEntryType:
-      type: string
-      description: The list of possible types of changes in the history.
-      enum:
-      - ADD
-      - MOD
-      - DEL
-    HistoryStepAddress:
-      type: object
-      properties:
-        after:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        before:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        changedFields:
-          type: array
-          description: A list of fields that has been changed in this revision step.
-          items:
-            type: string
-        modifiedAt:
-          type: string
-          format: date-time
-          description: The date and time of when the object was modified.
-          example: 2024-02-01T00:00:00.123456Z
-        modifiedBy:
-          type: string
-          format: uuid
-          description: The Id of the User who modified the object.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        resolvedUser:
-          $ref: "#/components/schemas/User"
-        type:
-          $ref: "#/components/schemas/HistoryEntryType"
-      required:
-      - changedFields
-      - modifiedAt
-      - modifiedBy
-      - type
-    HistoryStepContact:
-      type: object
-      properties:
-        after:
-          oneOf:
-          - $ref: "#/components/schemas/InstitutionContact"
-          - $ref: "#/components/schemas/PersonContact"
-        before:
-          oneOf:
-          - $ref: "#/components/schemas/InstitutionContact"
-          - $ref: "#/components/schemas/PersonContact"
-        changedFields:
-          type: array
-          description: A list of fields that has been changed in this revision step.
-          items:
-            type: string
-        modifiedAt:
-          type: string
-          format: date-time
-          description: The date and time of when the object was modified.
-          example: 2024-02-01T00:00:00.123456Z
-        modifiedBy:
-          type: string
-          format: uuid
-          description: The Id of the User who modified the object.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        resolvedUser:
-          $ref: "#/components/schemas/User"
-        type:
-          $ref: "#/components/schemas/HistoryEntryType"
-      required:
-      - changedFields
-      - modifiedAt
-      - modifiedBy
-      - type
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    Icd10Code:
-      type: object
-      properties:
-        code:
-          type: string
-          description: ICD-10 code or ICD-10 group code
-          example: A00
-        isGroup:
-          type: boolean
-          description: "If true, the returned code specifies an ICD-10 code group."
-        title:
-          type: string
-          description: ICD-10 code title
-          example: Cholera
-      required:
-      - code
-      - isGroup
-      - title
-    ImportInstitutionContactResponse:
-      type: object
-      properties:
-        matches:
-          type: array
-          items:
-            $ref: "#/components/schemas/InstitutionContact"
-        totalNumberOfMatches:
-          type: integer
-          format: int64
-          description: The total number of matches in the response.
-          minimum: 0
-        vCard:
-          $ref: "#/components/schemas/VCardInstitutionContact"
-      required:
-      - matches
-      - totalNumberOfMatches
-      - vCard
-    ImportPersonContactResponse:
-      type: object
-      properties:
-        matches:
-          type: array
-          items:
-            $ref: "#/components/schemas/PersonContact"
-        totalNumberOfMatches:
-          type: integer
-          format: int64
-          description: The total number of matches in the response.
-          minimum: 0
-        vCard:
-          $ref: "#/components/schemas/VCardPersonContact"
-      required:
-      - matches
-      - totalNumberOfMatches
-      - vCard
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    InstitutionContact:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Contact"
-      - type: object
-        properties:
-          category:
-            $ref: "#/components/schemas/ContactCategory"
-          contactAddress:
-            type: object
-            description: The contact address of the Contact.
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          differentBillingAddress:
-            type: object
-            description: An optional deviating billing address of the Contact.
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          emailAddresses:
-            type: array
-            description: A list of email addresses of the Contact.
-            example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-            items:
-              type: string
-          id:
-            type: string
-            format: uuid
-            description: Id of the Contact.
-            example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-          mergedIntoId:
-            type: string
-            format: uuid
-            description: "Id of the Contact into which this Contact has been merged.\
-              \ Contact details are taken from this Id automatically, the Contact\
-              \ history remains with the old Id."
-            example: be9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-          name:
-            type: string
-            description: The name of the Institution.
-            example: 123 Example Laboratory
-          phoneNumbers:
-            type: array
-            description: A list of telephone numbers of the Contact.
-            example: "['+4912345678901','+4912345678902','+4912345678903']"
-            items:
-              type: string
-      required:
-      - emailAddresses
-      - id
-      - name
-      - phoneNumbers
-    InstitutionContactChange:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractContactChange"
-      - type: object
-        properties:
-          category:
-            $ref: "#/components/schemas/HistoryChangeContactCategory"
-          emailAddresses:
-            $ref: "#/components/schemas/HistoryChangeListString"
-          mergedFrom:
-            $ref: "#/components/schemas/HistoryChangeUUID"
-          mergedInto:
-            $ref: "#/components/schemas/HistoryChangeUUID"
-          name:
-            $ref: "#/components/schemas/HistoryChangeString"
-          phoneNumbers:
-            $ref: "#/components/schemas/HistoryChangeListString"
-      required:
-      - category
-      - emailAddresses
-      - mergedFrom
-      - mergedInto
-      - name
-      - phoneNumbers
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    InvalidateSessionsRequest:
-      type: object
-      properties:
-        sessions:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - sessions
-    InventoryBookingStatus:
-      type: string
-      description: A list of possible statuses of a booking.
-      enum:
-      - ACTIVE
-      - CANCELLED
-    InventoryBookingType:
-      type: string
-      description: A list of possible types of a booking.
-      enum:
-      - BOOKING
-      - DELIVERY
-      - CORRECTION
-    InventoryItem:
-      type: object
-      properties:
-        articleNumber:
-          type: string
-          description: "A descriptive number of the Inventory Item, e.g. the article\
-            \ or model number."
-          example: T-800
-        count:
-          type: integer
-          format: int32
-          description: "The amount of stock of the Inventory Item, which is currently\
-            \ available to be booked."
-          example: 500
-          minimum: 0
-        description:
-          type: string
-          description: Free text field for descriptive information on the Inventory
-            Item.
-          example: The vaccine is stored in a red container in the fridge of the storage
-            room.
-        id:
-          type: string
-          format: uuid
-          description: Id of the Inventory Item.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        labels:
-          type: array
-          items:
-            $ref: "#/components/schemas/Label"
-        minCount:
-          type: integer
-          format: int32
-          description: "When this amount of stock of the Inventory Item is reached,\
-            \ a graphic warning is displayed in the overview list."
-          example: 100
-          minimum: 0
-        name:
-          type: string
-          description: The name of the Inventory Item.
-          example: Example Manufacturer's Vaccine
-        type:
-          $ref: "#/components/schemas/InventoryItemType"
-        version:
-          type: integer
-          format: int64
-          description: "Version of the entity. Each time the entity is changed, it\
-            \ is incremented by one."
-      required:
-      - count
-      - id
-      - labels
-      - minCount
-      - name
-      - type
-      - version
-    InventoryItemBookingEntry:
-      type: object
-      properties:
-        amount:
-          type: integer
-          format: int32
-          description: "The amount of stock of the Inventory Item, which is booked\
-            \ for this entry."
-          example: 200
-          minimum: 0
-        bookedAt:
-          type: string
-          format: date-time
-          description: The time when the booking was ordered.
-        bookingId:
-          type: integer
-          format: int64
-          description: The Id of the booking. This Id is publicly referenced in the
-            booking history.
-          example: 123
-        inventoryId:
-          type: string
-          format: uuid
-          description: The Id of the Inventory Item for which the amount of stock
-            was booked.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        ownerKey:
-          type: string
-          format: uuid
-          description: The Id with which a booking can be cancelled. This Id is private
-            and shall be stored in the business module that did the booking.
-          example: be9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        status:
-          $ref: "#/components/schemas/InventoryBookingStatus"
-        type:
-          $ref: "#/components/schemas/InventoryBookingType"
-        userId:
-          type: string
-          format: uuid
-          description: The Id of the User who booked the amount of stock of the Inventory
-            Item.
-          example: ce9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-      required:
-      - amount
-      - bookedAt
-      - bookingId
-      - inventoryId
-      - status
-      - type
-      - userId
-    InventoryItemBookingHistory:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/InventoryItemBookingEntry"
-        item:
-          $ref: "#/components/schemas/InventoryItem"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          description: The total number booking entries of an Inventory Item in the
-            response.
-      required:
-      - elements
-      - item
-      - resolvedUsers
-      - totalNumberOfElements
-    InventoryItemType:
-      type: string
-      description: The list of possible types under which Inventory Items can be categorized.
-      enum:
-      - VACCINE
-      - PROTECTIVE_EQUIPMENT
-      - TEST_KIT
-      - MISC
-    InventorySortKey:
-      type: string
-      description: The list of possible parameters by which Inventory Items can be
-        sorted.
-      enum:
-      - COUNT
-      - NAME
-      - TYPE
-      - RELEVANCE
-    Label:
-      type: object
-      description: "Labels are primarily used to further categorize Resources and\
-        \ Inventory, apart from their respective types."
-      properties:
-        id:
-          type: string
-          format: uuid
-          description: The Id of the label.
-          example: de9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        name:
-          type: string
-          description: The name of the label (e.g. the name of a business module to
-            which certain Inventory Items or Resources may belong).
-          example: Travel Medicine
-      required:
-      - id
-      - name
-    Location:
-      type: object
-      description: Location defined by latitude and longitude.
-      properties:
-        latitude:
-          type: number
-          format: double
-          description: Geographic coordinate that specifies the north–south angular
-            location of a point on the surface of the Earth.
-          example: 52.51627
-        longitude:
-          type: number
-          format: double
-          description: Geographic coordinate that specifies the east–west angular
-            position of a point on the surface of the Earth.
-          example: 13.377703
-      required:
-      - latitude
-      - longitude
-    ManualProgressEntryType:
-      type: string
-      enum:
-      - LETTER
-      - PHONE_CALL
-      - NOTE
-      - EMAIL
-      - IMAGE
-      - DOCUMENT
-    MarkNotificationsAsReadRequest:
-      type: object
-      properties:
-        notificationIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-      required:
-      - notificationIds
-    MarkNotificationsAsReadResponse:
-      type: object
-      properties:
-        errorResponses:
-          type: array
-          items:
-            $ref: "#/components/schemas/ErrorResponseWithLocation"
-      required:
-      - errorResponses
-    MukUserAttributes:
-      type: object
-      description: The MUK attributes of a user
-      properties:
-        address:
-          $ref: "#/components/schemas/DomesticAddress"
-        facilityName:
-          type: string
-      required:
-      - address
-      - facilityName
-    PersonContact:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Contact"
-      - type: object
-        properties:
-          contactAddress:
-            type: object
-            description: The contact address of the Contact.
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          differentBillingAddress:
-            type: object
-            description: An optional deviating billing address of the Contact.
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          emailAddresses:
-            type: array
-            description: A list of email addresses of the Contact.
-            example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-            items:
-              type: string
-          externalChatUsername:
-            type: string
-            description: The chat username of the gematik TI-Messenger (matrix chat).
-            example: '@username:server'
-          firstName:
-            type: string
-            description: The given name(s) of the Person.
-            example: John
-          gender:
-            $ref: "#/components/schemas/Gender"
-          id:
-            type: string
-            format: uuid
-            description: Id of the Contact.
-            example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-          mergedIntoId:
-            type: string
-            format: uuid
-            description: "Id of the Contact into which this Contact has been merged.\
-              \ Contact details are taken from this Id automatically, the Contact\
-              \ history remains with the old Id."
-            example: be9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-          name:
-            type: string
-            description: The last name of the Person.
-            example: Doe
-          phoneNumbers:
-            type: array
-            description: A list of telephone numbers of the Contact.
-            example: "['+4912345678901','+4912345678902','+4912345678903']"
-            items:
-              type: string
-          salutation:
-            $ref: "#/components/schemas/Salutation"
-          title:
-            type: string
-            description: The academic title of a Person.
-            example: Prof. Dr.
-      required:
-      - emailAddresses
-      - id
-      - name
-      - phoneNumbers
-    PersonContactChange:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractContactChange"
-      - type: object
-        properties:
-          emailAddresses:
-            $ref: "#/components/schemas/HistoryChangeListString"
-          externalChatUsername:
-            $ref: "#/components/schemas/HistoryChangeString"
-          firstName:
-            $ref: "#/components/schemas/HistoryChangeString"
-          gender:
-            $ref: "#/components/schemas/HistoryChangeGender"
-          mergedFrom:
-            $ref: "#/components/schemas/HistoryChangeUUID"
-          mergedInto:
-            $ref: "#/components/schemas/HistoryChangeUUID"
-          name:
-            $ref: "#/components/schemas/HistoryChangeString"
-          phoneNumbers:
-            $ref: "#/components/schemas/HistoryChangeListString"
-          salutation:
-            $ref: "#/components/schemas/HistoryChangeSalutation"
-          title:
-            $ref: "#/components/schemas/HistoryChangeString"
-      required:
-      - emailAddresses
-      - externalChatUsername
-      - firstName
-      - gender
-      - mergedFrom
-      - mergedInto
-      - name
-      - phoneNumbers
-      - salutation
-      - title
-    PersonDetails:
-      type: object
-      description: The personal data relating to a person
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dateOfBirth:
-          type: string
-          format: date
-          description: The date of birth of the Person.
-          example: 2000-01-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Person.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: The given name(s) of the Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: The last name of the Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          description: The last name at birth of the Person.
-          example: Smith
-          maxLength: 40
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Person.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          description: The place of birth (without country) of the Person.
-          example: Berlin
-          maxLength: 50
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - dateOfBirth
-      - firstName
-      - lastName
-    PersonFileState:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        dateOfBirth:
-          type: string
-          format: date
-          description: The date of birth of the Person.
-          example: 2000-01-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Person.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: The given name(s) of the Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        id:
-          type: string
-          format: uuid
-          description: Id of the Person.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        lastName:
-          type: string
-          description: The last name of the Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          description: The last name at birth of the Person.
-          example: Smith
-          maxLength: 40
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Person.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          description: The place of birth (without country) of the Person.
-          example: Berlin
-          maxLength: 50
-          minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - dataOrigin
-      - dateOfBirth
-      - emailAddresses
-      - firstName
-      - gender
-      - id
-      - lastName
-      - phoneNumbers
-      - referenceVersion
-      - salutation
-    PersonKeyAttributes:
-      type: object
-      properties:
-        dateOfBirth:
-          type: string
-          format: date
-        firstName:
-          type: string
-        lastName:
-          type: string
-      required:
-      - dateOfBirth
-      - firstName
-      - lastName
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    PopulationRequest:
-      type: object
-      properties:
-        numberOfEntitiesToPopulate:
-          type: integer
-          format: int32
-      required:
-      - numberOfEntitiesToPopulate
-    PostboxAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          postbox:
-            type: string
-            description: The number (or name) of the postbox.
-            example: "123"
-            maxLength: 21
-            minLength: 1
-      description: An address which is a postbox.
-      required:
-      - city
-      - country
-      - postalCode
-      - postbox
-    PostboxContactAddressChange:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractContactChange"
-      - type: object
-        properties:
-          city:
-            $ref: "#/components/schemas/HistoryChangeString"
-          country:
-            $ref: "#/components/schemas/HistoryChangeCountryCode"
-          differentName:
-            $ref: "#/components/schemas/HistoryChangeString"
-          postalCode:
-            $ref: "#/components/schemas/HistoryChangeString"
-          postbox:
-            $ref: "#/components/schemas/HistoryChangeString"
-      required:
-      - city
-      - country
-      - differentName
-      - postalCode
-      - postbox
-    PrivateEmployeeUserKeyDto:
-      type: object
-      description: |
-        Contains the details on the encrypted private key from a user, which is necessary for decrypting the symmetric key which is used for decrypting audit log files.
-        Can be decrypted with the password of the corresponding user.
-      properties:
-        cryptoVersion:
-          type: integer
-          format: int32
-          description: |-
-            The version of the crypto settings used.
-            A new crypto version (increased by 1) will become available every time something is changed regarding the GA-Lotse crypto settings for the keys stored here.
-            This attribute tracks, which settings were in use, when the key pair was created
-        encryptedPrivateKey:
-          type: array
-          description: The encrypted private key
-          items:
-            type: string
-            format: byte
-            description: The encrypted private key
-        keyIdentifier:
-          type: string
-          description: |
-            Usually the sha256 hash of the corresponding public key.
-            Used to distinguish keys, i.e. to recognize if the currently active keys are the keys that have been used (in the past) to encrypt a given set of data
-      required:
-      - cryptoVersion
-      - encryptedPrivateKey
-      - keyIdentifier
-    Procedure:
-      type: object
-      properties:
-        archivingRelevanceSettings:
-          $ref: "#/components/schemas/ArchivingRelevanceSettings"
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedAt:
-          type: string
-          format: date-time
-        createdAt:
-          type: string
-          format: date-time
-        exportedAt:
-          type: string
-          format: date-time
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        procedureStatus:
-          $ref: "#/components/schemas/ProcedureStatus"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-          pattern: "[a-zA-Z0-9.].+"
-      required:
-      - archivingRelevanceSettings
-      - businessModule
-      - createdAt
-      - modifiedAt
-      - procedureId
-      - procedureStatus
-      - procedureType
-      - summary
-    ProcedureMetric:
-      type: object
-      properties:
-        abortedCount:
-          type: integer
-          format: int64
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedCount:
-          type: integer
-          format: int64
-        inProgressCount:
-          type: integer
-          format: int64
-        openOrDraftCount:
-          type: integer
-          format: int64
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        totalCount:
-          type: integer
-          format: int64
-      required:
-      - abortedCount
-      - businessModule
-      - closedCount
-      - inProgressCount
-      - openOrDraftCount
-      - procedureType
-      - totalCount
-    ProcedureStatus:
-      type: string
-      enum:
-      - DRAFT
-      - OPEN
-      - IN_PROGRESS
-      - CLOSED
-      - ABORTED
-    ProcedureType:
-      type: string
-      enum:
-      - REGULAR_EXAMINATION
-      - CAN_CHILD
-      - ENTRY_LEVEL
-      - DRAFT_CITIZEN_OFFICE_IMPORT
-      - DRAFT_SCHOOL_IMPORT
-      - INSPECTION
-      - TM_VACCINATION_CONSULTATION
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY_ENTRY
-      - MEDICAL_REGISTRY_CITIZEN_DRAFT
-      - MEDICAL_REGISTRY_EMPLOYEE_DRAFT
-      - DENTAL_CHILD
-      - OFFICIAL_MEDICAL_SERVICE
-    ProcedureWithDuration:
-      type: object
-      properties:
-        createdAt:
-          type: string
-          format: date-time
-        duration:
-          type: string
-          description: A duration in ISO 8601
-        id:
-          type: string
-          format: uuid
-      required:
-      - createdAt
-      - id
-    ProgressEntryDeletionApprovalRequestNotification:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractNotification"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          manualProgressEntryType:
-            type: string
-          procedureId:
-            type: string
-            format: uuid
-      required:
-      - createdAt
-      - createdBy
-      - id
-      - manualProgressEntryType
-      - procedureId
-    PublicEmployeeUserKey:
-      type: object
-      description: |
-        Contains the details on the public key of a user, used for encrypting the symmetric key which is used for encrypting the audit log files
-      properties:
-        cryptoVersion:
-          type: integer
-          format: int32
-          description: |-
-            The version of the crypto settings used.
-            A new crypto version (increased by 1) will become available every time something is changed regarding the GA-Lotse crypto settings for the keys stored here.
-            This attribute tracks, which settings were in use, when the key pair was created
-        keyIdentifier:
-          type: string
-          description: |
-            Usually the sha256 hash of the corresponding public key.
-            Used to distinguish keys, i.e. to recognize if the currently active keys are the keys that have been used (in the past) to encrypt a given set of data
-        publicKey:
-          type: array
-          description: The public key
-          items:
-            type: string
-            format: byte
-            description: The public key
-        userId:
-          type: string
-          format: uuid
-          description: The id of the user
-      required:
-      - cryptoVersion
-      - keyIdentifier
-      - publicKey
-      - userId
-    PutFacilityRequest:
-      type: object
-      description: Request used for performing a consistent update of file state and
-        associated reference facility
-      properties:
-        updatedFacility:
-          $ref: "#/components/schemas/FacilityDetails"
-      required:
-      - updatedFacility
-    Realm:
-      type: string
-      enum:
-      - EMPLOYEES
-      - CITIZENS
-    Resource:
-      type: object
-      properties:
-        articleNumber:
-          type: string
-          description: "A descriptive number of the Resource, e.g. the article or\
-            \ model number."
-          example: T-800
-        description:
-          type: string
-          description: Free text field for descriptive information on the Resource.
-          example: The car is parked in the right garage.
-        id:
-          type: string
-          format: uuid
-          description: The Id of the Resource.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        labels:
-          type: array
-          items:
-            $ref: "#/components/schemas/Label"
-        name:
-          type: string
-          description: The name of the Resource.
-          example: White delivery truck
-        type:
-          $ref: "#/components/schemas/ResourceType"
-      required:
-      - id
-      - labels
-      - name
-      - type
-    ResourceCalendar:
-      type: object
-      properties:
-        calendarId:
-          type: string
-          format: uuid
-        resourceId:
-          type: string
-          format: uuid
-      required:
-      - calendarId
-      - resourceId
-    ResourceSortKey:
-      type: string
-      description: The list of possible parameters by which Resources can be sorted.
-      enum:
-      - TYPE
-      - NAME
-      - RELEVANCE
-    ResourceType:
-      type: string
-      description: The list of possible types under which Resources can be categorized.
-      enum:
-      - BICYCLE
-      - CAR
-      - ROOM
-      - CAMERA
-      - MEASURING_DEVICE
-      - MEASURING_KIT
-      - MISC
-      - TABLET
-      - LAPTOP
-    RestockInventoryItemRequest:
-      type: object
-      properties:
-        restockingCount:
-          type: integer
-          format: int32
-          description: "The amount of stock of the Inventory Item, which shall be\
-            \ added to the currently available amount."
-          example: 200
-          minimum: 1
-      required:
-      - restockingCount
-    Salutation:
-      type: string
-      description: A list of categories for the salutation from which specific salutation
-        phrases can be derived. The choice of salutation is free for every citizen
-        and not dependent on gender.
-      enum:
-      - NOT_SPECIFIED
-      - NEUTRAL
-      - FEMALE
-      - MALE
-      example: NOT_SPECIFIED
-    SearchContactsResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/InstitutionContact"
-            - $ref: "#/components/schemas/PersonContact"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          description: The total number of Contacts in the response.
-          minimum: 0
-      required:
-      - elements
-      - totalNumberOfElements
-    SearchIcd10CodesResponse:
-      type: object
-      properties:
-        codes:
-          type: array
-          items:
-            $ref: "#/components/schemas/Icd10Code"
-      required:
-      - codes
-    SearchReferenceFacilitiesResponse:
-      type: object
-      properties:
-        facilities:
-          type: array
-          description: A list of Facilities.
-          items:
-            $ref: "#/components/schemas/GetReferenceFacilityResponse"
-      required:
-      - facilities
-    SearchReferencePersonsResponse:
-      type: object
-      properties:
-        persons:
-          type: array
-          items:
-            $ref: "#/components/schemas/GetReferencePersonResponse"
-      required:
-      - persons
-    SearchStreetResponse:
-      type: object
-      properties:
-        cityDistricts:
-          type: array
-          items:
-            $ref: "#/components/schemas/District"
-          uniqueItems: true
-      required:
-      - cityDistricts
-    SelfUser:
-      type: object
-      properties:
-        roles:
-          type: array
-          description: A list of assigned roles for this user
-          items:
-            $ref: "#/components/schemas/UserRole"
-        user:
-          $ref: "#/components/schemas/User"
-      required:
-      - roles
-      - user
-    SendEmailNotificationRequest:
-      type: object
-      properties:
-        notificationMessage:
-          type: string
-          description: The notification text that is embedded in the notification
-            email template.
-          example: Löschanfrage
-        userId:
-          type: string
-          format: uuid
-          description: The id of the user who is the addressee of the mail notification.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-      required:
-      - notificationMessage
-      - userId
-    SendEmailRequest:
-      type: object
-      properties:
-        from:
-          type: string
-          description: The email address that shall be listed as the sender in the
-            email
-          example: sender@mail-address.de
-          maxLength: 254
-          minLength: 1
-        subject:
-          type: string
-          description: The subject of the email
-          example: Important test email
-        text:
-          type: string
-          description: The content of the email. Currently only plain text is possible
-          example: "Dear John Doe, this a test. Best regards, Jane Doe"
-        to:
-          type: string
-          description: The email address of the recipient of the email
-          example: recipient@example.com
-          maxLength: 254
-          minLength: 1
-      required:
-      - subject
-      - text
-      - to
-    SetMatterOfConcernRequest:
-      type: object
-      properties:
-        concern:
-          type: string
-          description: The matter of concern for the GDPR procedure.
-        version:
-          type: integer
-          format: int64
-      required:
-      - concern
-      - version
-    SimpleNotification:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractNotification"
-      - type: object
-        properties:
-          message:
-            type: string
-          title:
-            type: string
-      required:
-      - createdAt
-      - id
-      - message
-      - title
-    SortDirection:
-      type: string
-      enum:
-      - ASC
-      - DESC
-    StartGdprProcedureRequest:
-      type: object
-      properties:
-        version:
-          type: integer
-          format: int64
-      required:
-      - version
-    SyncFileStateRequest:
-      type: object
-      properties:
-        version:
-          type: integer
-          format: int64
-          description: The version of the reference entity
-          minimum: 0
-      required:
-      - version
-    Task:
-      type: object
-      properties:
-        assignedById:
-          type: string
-          format: uuid
-        assigneeId:
-          type: string
-          format: uuid
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        createdAt:
-          type: string
-          format: date-time
-        dueAt:
-          type: string
-          format: date-time
-        isOverdue:
-          type: boolean
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-        taskId:
-          type: string
-          format: uuid
-        taskStatus:
-          $ref: "#/components/schemas/TaskStatus"
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        version:
-          type: integer
-          format: int64
-      required:
-      - businessModule
-      - createdAt
-      - isOverdue
-      - modifiedAt
-      - procedureId
-      - summary
-      - taskId
-      - taskStatus
-      - taskType
-      - version
-    TaskDueAtReminderNotification:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractNotification"
-      - type: object
-        properties:
-          assignedById:
-            type: string
-            format: uuid
-          dueAt:
-            type: string
-            format: date-time
-          procedureId:
-            type: string
-            format: uuid
-          taskType:
-            type: string
-      required:
-      - assignedById
-      - businessModule
-      - createdAt
-      - dueAt
-      - id
-      - procedureId
-      - taskType
-    TaskMetric:
-      type: object
-      properties:
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        moreThanTwoOccurrencesCount:
-          type: integer
-          format: int32
-        noOccurrencesCount:
-          type: integer
-          format: int32
-        oneOccurrenceCount:
-          type: integer
-          format: int32
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        twoOccurrencesCount:
-          type: integer
-          format: int32
-      required:
-      - moreThanTwoOccurrencesCount
-      - noOccurrencesCount
-      - oneOccurrenceCount
-      - taskType
-      - twoOccurrencesCount
-    TaskStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    TaskType:
-      type: string
-      enum:
-      - BOOK_APPOINTMENT
-      - PERFORM_SCHOOL_ENTRY_EXAMINATION
-      - INSPECTION_PLANNING
-      - INSPECTION_EXECUTION
-      - INSPECTION_REPORT
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - OFFICIAL_MEDICAL_SERVICE
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
-    TestHelperLoginAsCitizenAccessCodeUserRequest:
-      type: object
-      properties:
-        citizenUserId:
-          type: string
-          format: uuid
-      required:
-      - citizenUserId
-    TestHelperLoginRequest:
-      type: object
-      properties:
-        password:
-          type: string
-        realm:
-          $ref: "#/components/schemas/Realm"
-        username:
-          type: string
-    TimeRange:
-      type: object
-      properties:
-        end:
-          type: string
-          format: date-time
-        start:
-          type: string
-          format: date-time
-      required:
-      - end
-      - start
-    UpdateInstitutionContactRequest:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractUpdateContactRequest"
-      - type: object
-        properties:
-          category:
-            $ref: "#/components/schemas/ContactCategory"
-          contactAddress:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          differentBillingAddress:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          emailAddresses:
-            type: array
-            description: A list of email addresses of the Contact.
-            example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-            items:
-              type: string
-          mergedFrom:
-            type: string
-            format: uuid
-            description: The Id of another Contact which shall be merged into this
-              one.
-            example: ce9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-          name:
-            type: string
-            description: The name of the Institution.
-            example: 123 Example Laboratory
-            maxLength: 300
-            minLength: 1
-          phoneNumbers:
-            type: array
-            description: A list of telephone numbers of the Contact.
-            example: "['+4912345678901','+4912345678902','+4912345678903']"
-            items:
-              type: string
-              maxLength: 23
-              minLength: 1
-      required:
-      - name
-    UpdateInventoryItemCountRequest:
-      type: object
-      properties:
-        count:
-          type: integer
-          format: int32
-          description: "The corrected amount of stock of the Inventory Item, which\
-            \ is currently available."
-          example: 400
-          minimum: 0
-        version:
-          type: integer
-          format: int64
-          description: The version of the Inventory Item whose amount of stock shall
-            be changed. This value has to coincide with the actual version of the
-            Inventory Item to avoid race conditions.
-          minimum: 0
-      required:
-      - count
-      - version
-    UpdateInventoryItemRequest:
-      type: object
-      properties:
-        articleNumber:
-          type: string
-          description: "A descriptive number of the Inventory Item, e.g. the article\
-            \ or model number."
-          example: T-800
-        description:
-          type: string
-          description: Free text field for descriptive information on the Inventory
-            Item.
-          example: The vaccine is stored in a red container in the fridge of the storage
-            room.
-        labelNames:
-          type: array
-          description: A list of label names. Any provided name will be used to resolve
-            existing labels from the database.
-          example: "['Label1','Label2','Label3']"
-          items:
-            type: string
-        minCount:
-          type: integer
-          format: int32
-          description: "When this amount of stock of the Inventory Item is reached,\
-            \ a graphic warning is displayed in the overview list."
-          example: 100
-          minimum: 0
-        name:
-          type: string
-          description: The name of the Inventory Item.
-          example: Example Manufacturer"s Vaccine
-        type:
-          $ref: "#/components/schemas/InventoryItemType"
-      required:
-      - minCount
-      - name
-      - type
-    UpdatePersonContactRequest:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractUpdateContactRequest"
-      - type: object
-        properties:
-          contactAddress:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          differentBillingAddress:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          emailAddresses:
-            type: array
-            description: A list of email addresses of the Contact.
-            example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-            items:
-              type: string
-          externalChatUsername:
-            type: string
-            description: The chat username of the gematik TI-Messenger (matrix chat).
-            example: '@username:server'
-            maxLength: 255
-            minLength: 1
-          firstName:
-            type: string
-            description: The given name(s) of the Person.
-            example: John
-            maxLength: 80
-            minLength: 1
-          gender:
-            $ref: "#/components/schemas/Gender"
-          mergedFrom:
-            type: string
-            format: uuid
-            description: The Id of another Contact which shall be merged into this
-              one.
-            example: ce9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-          name:
-            type: string
-            description: The last name of the Person.
-            example: Doe
-            maxLength: 120
-            minLength: 1
-          phoneNumbers:
-            type: array
-            description: A list of telephone numbers of the Contact.
-            example: "['+4912345678901','+4912345678902','+4912345678903']"
-            items:
-              type: string
-              maxLength: 23
-              minLength: 1
-          salutation:
-            $ref: "#/components/schemas/Salutation"
-          title:
-            type: string
-            description: The academic title of a Person.
-            example: Prof. Dr.
-            maxLength: 119
-            minLength: 1
-      required:
-      - name
-    UpdatePersonInBulkRequest:
-      type: object
-      properties:
-        fileStateId:
-          type: string
-          format: uuid
-          description: Id of the person file state which shall be updated.
-          example: be9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        updatedPerson:
-          $ref: "#/components/schemas/PersonDetails"
-      required:
-      - fileStateId
-      - updatedPerson
-    UpdatePersonInBulkResult:
-      type: object
-      properties:
-        newFileStateId:
-          type: string
-          format: uuid
-          description: The id of the corresponding file state which was created during
-            the update operation and contains the new data
-          example: df384786-9f85-4404-a9fd-33391da2d2b4
-        previousFileStateId:
-          type: string
-          format: uuid
-          description: The id of a person file state for which the update operation
-            was successful
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-      required:
-      - newFileStateId
-      - previousFileStateId
-    UpdatePersonRequest:
-      type: object
-      description: Request used for performing a consistent update of a person file
-        state and its associated reference person
-      properties:
-        updatedPerson:
-          $ref: "#/components/schemas/PersonDetails"
-      required:
-      - updatedPerson
-    UpdatePersonsRequest:
-      type: object
-      description: |
-        Request used for performing the consistent updates of file states and their associated reference persons in a bulk operation
-      properties:
-        updateRequests:
-          type: array
-          items:
-            $ref: "#/components/schemas/UpdatePersonInBulkRequest"
-          maxItems: 10000
-          minItems: 1
-      required:
-      - updateRequests
-    UpdatePersonsResponse:
-      type: object
-      properties:
-        failedPersonIds:
-          type: array
-          description: A list containing the IDs of those person file states for which
-            the update failed during the bulk operation
-          example: "['ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1','df384786-9f85-4404-a9fd-33391da2d2b4','8b93ac7d-a059-437a-9834-e12d1346d088']"
-          items:
-            type: string
-            format: uuid
-        results:
-          type: array
-          items:
-            $ref: "#/components/schemas/UpdatePersonInBulkResult"
-      required:
-      - failedPersonIds
-      - results
-    UpdateReferenceFacilityRequest:
-      type: object
-      description: |
-        Request used to modify reference facility data provided the new state in
-        facilityDetails and the expected current version number.
-      properties:
-        facilityDetails:
-          $ref: "#/components/schemas/FacilityDetails"
-        version:
-          type: integer
-          format: int64
-      required:
-      - facilityDetails
-      - version
-    UpdateReferencePersonRequest:
-      type: object
-      description: |
-        Request used to modify reference person data provided the new state in personDetails
-        and the expected current version number.
-      properties:
-        personDetails:
-          $ref: "#/components/schemas/PersonDetails"
-        version:
-          type: integer
-          format: int64
-      required:
-      - personDetails
-      - version
-    UpdateResourceRequest:
-      type: object
-      properties:
-        articleNumber:
-          type: string
-          description: "A descriptive number of the Resource, e.g. the article or\
-            \ model number."
-          example: T-800
-        description:
-          type: string
-          description: Free text field for descriptive information on the Resource.
-          example: The car is parked in the right garage.
-        labelNames:
-          type: array
-          description: A list of label names. Any provided name will be used to resolve
-            existing labels from the database.
-          example: "['Label1','Label2','Label3']"
-          items:
-            type: string
-        name:
-          type: string
-          description: The name of the Resource.
-          example: White delivery truck
-      required:
-      - name
-    UpdateSelfUserRequest:
-      type: object
-      properties:
-        externalChatUsername:
-          type: string
-          description: The chat username of the gematik TI-Messenger (matrix chat)
-          example: '@username:server'
-          pattern: "\\p{ASCII}{3,255}"
-        phoneNumber:
-          type: string
-          description: The phone number of a user
-          example: "+491234567890"
-          pattern: "[-+0-9() ]{1,23}"
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a user
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-    User:
-      type: object
-      properties:
-        email:
-          type: string
-          description: The email address of a user.
-          example: example@mail.de
-        enabled:
-          type: boolean
-          description: "True, if the user can login"
-          example: false
-        externalChatUsername:
-          type: string
-          description: The chat username of the gematik TI-Messenger (matrix chat).
-          example: '@username:server'
-        firstName:
-          type: string
-          description: The given name(s) of a user.
-          example: John
-        lastName:
-          type: string
-          description: The last name of a user.
-          example: Doe
-        phoneNumber:
-          type: string
-          description: The phone number of a user.
-          example: "+491234567890"
-        userId:
-          type: string
-          format: uuid
-          description: The Id of the user.
-          example: fe9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        username:
-          type: string
-          description: The username which is displayed in the application and can
-            be used for the login.
-          example: testuser
-      required:
-      - enabled
-      - firstName
-      - lastName
-      - userId
-      - username
-    UserCalendar:
-      type: object
-      properties:
-        calendarId:
-          type: string
-          format: uuid
-        userId:
-          type: string
-          format: uuid
-      required:
-      - calendarId
-      - userId
-    UserEvent:
-      type: object
-      properties:
-        ipAddress:
-          type: string
-        timestamp:
-          type: string
-          format: date-time
-        type:
-          $ref: "#/components/schemas/UserEventType"
-      required:
-      - timestamp
-      - type
-    UserEventType:
-      type: string
-      enum:
-      - LOGIN
-      - LOGIN_ERROR
-    UserGroup:
-      type: object
-      properties:
-        name:
-          type: string
-          description: The name of the group
-      required:
-      - name
-    UserGroupCalendarInfo:
-      type: object
-      properties:
-        groupName:
-          type: string
-        userCalendars:
-          type: array
-          items:
-            $ref: "#/components/schemas/UserCalendar"
-      required:
-      - groupName
-      - userCalendars
-    UserProfile:
-      type: object
-      properties:
-        calendarEvents:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedEventWithoutCalendarId"
-        groups:
-          type: array
-          items:
-            $ref: "#/components/schemas/UserGroup"
-        isSelf:
-          type: boolean
-          description: Shows if user profile belongs to the user which is currently
-            active
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a user
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-        user:
-          $ref: "#/components/schemas/User"
-      required:
-      - calendarEvents
-      - groups
-      - isSelf
-      - user
-    UserRole:
-      type: string
-      description: A filter for a role users can have
-      enum:
-      - INSPECTION_LEADER
-      - INSPECTION_LANDESAMT_LEADER
-      - SCHOOL_ENTRY_LEADER
-      - TRAVEL_MEDICINE_LEADER
-      - MEASLES_PROTECTION_LEADER
-      - STATISTICS_LEADER
-      - BASE_PERSONS_READ
-      - BASE_PERSONS_WRITE
-      - BASE_PERSONS_DELETE
-      - BASE_FACILITIES_READ
-      - BASE_FACILITIES_WRITE
-      - BASE_FACILITIES_DELETE
-      - BASE_RESOURCES_READ
-      - BASE_RESOURCES_WRITE
-      - BASE_INVENTORY_READ
-      - BASE_INVENTORY_USE
-      - BASE_INVENTORY_ADMINISTRATE
-      - BASE_LABELS_READ
-      - BASE_LABELS_WRITE
-      - BASE_CONTACTS_READ
-      - BASE_CONTACTS_WRITE
-      - BASE_GDPR_PROCEDURE_REVIEW
-      - BASE_GDPR_PROCEDURE_READ
-      - BASE_GDPR_PROCEDURE_WRITE
-      - BASE_MUK_FACILITY_LINK_WRITE
-      - BASE_BUNDID_PERSON_LINK_WRITE
-      - BASE_GLOBAL_CALENDARS_WRITE
-      - BASE_CALENDAR_BUSINESS_EVENTS_WRITE
-      - BASE_PROCEDURES_READ
-      - BASE_PROCEDURE_METRICS_READ
-      - BASE_TASKS_READ
-      - BASE_ACCESS_CODE_USER_ADMIN
-      - BASE_ACCESS_CODE_USER_VERIFY
-      - SCHOOL_ENTRY_ADMIN
-      - INSPECTION_NOTIFICATIONS_READ
-      - INSPECTION_PROCEDURE_EDIT
-      - INSPECTION_PROCEDURE_ASSIGN
-      - INSPECTION_OBJECTTYPES_READ
-      - INSPECTION_OBJECTTYPES_WRITE
-      - INSPECTION_CHECKLISTDEFINITIONS_READ
-      - INSPECTION_CHECKLISTDEFINITIONS_WRITE
-      - INSPECTION_CORECHECKLISTDEFINITIONS_EDIT
-      - INSPECTION_CENTRALREPOSITORY_READ
-      - INSPECTION_CENTRALREPOSITORY_WRITE
-      - INSPECTION_CENTRALREPOSITORY_DELETE
-      - INSPECTION_CENTRALREPOSITORY_WRITE_CORECHECKLISTS
-      - INSPECTION_IMPORT
-      - TRAVEL_MEDICINE_ADMIN
-      - MEASLES_PROTECTION_ADMIN
-      - CHAT_MANAGEMENT_WRITE
-      - STATISTICS_STATISTICS_READ
-      - STATISTICS_STATISTICS_WRITE
-      - STATISTICS_STATISTICS_ADMIN
-      - BASE_MAIL_SEND
-      - INBOX_PROCEDURE_WRITE
-      - PROCEDURE_ARCHIVE
-      - PROCEDURE_ARCHIVE_ADMIN
-      - AUDITLOG_FILE_SEND
-      - AUDITLOG_DECRYPT_AND_ACCESS
-      - AUDITLOG_AUTHORIZE_ACCESS
-      - AUDITLOG_PUBLIC_KEYS_READ
-      - STANDARD_EMPLOYEE
-      - STI_PROTECTION_USER
-      - STI_PROTECTION_MFA
-      - STI_PROTECTION_CONSULTANT
-      - STI_PROTECTION_PHYSICIAN
-      - STI_PROTECTION_ADMIN
-      - STI_PROTECTION_LEADER
-      - MEDICAL_REGISTRY_LEADER
-      - MEDICAL_REGISTRY_ADMIN
-      - DENTAL_LEADER
-      - DENTAL_ADMIN
-      - OPEN_DATA_ADMIN
-      - OPEN_DATA_LEADER
-      - MEDICAL_REGISTRY_IMPORT
-      - OFFICIAL_MEDICAL_SERVICE_LEADER
-      - OFFICIAL_MEDICAL_SERVICE_ADMIN
-      - BASE_GDPR_VALIDATION_TASK_CLEANUP
-    VCardAddress:
-      type: object
-      properties:
-        addressAddition:
-          type: string
-          description: A descriptive addition to the address from the vCard.
-          example: 2.OG links
-        city:
-          type: string
-          description: The city in which the address from the vCard is located.
-          example: Berlin
-        country:
-          type: string
-          description: The country of the address from the vCard. Does not have to
-            be a country code.
-          example: Deutschland
-        houseNumber:
-          type: string
-          description: "The house number of the address, extracted from the street\
-            \ address component in the structured address property"
-          example: 43-45
-        postBox:
-          type: string
-          description: The postbox (number) of the address from the vCard.
-          example: "123"
-        postalCode:
-          type: string
-          description: The postal code of the address from the vCard.
-          example: "10115"
-        street:
-          type: string
-          description: "The street name of the address, extracted from the street\
-            \ address component in the structured address property"
-          example: Beispielweg
-      required:
-      - addressAddition
-      - city
-      - country
-      - houseNumber
-      - postBox
-      - postalCode
-      - street
-    VCardInstitutionContact:
-      type: object
-      properties:
-        addresses:
-          type: array
-          items:
-            $ref: "#/components/schemas/VCardAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the contact in the vCard.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        fullName:
-          type: string
-          description: The full name of the contact. This field is taken from the
-            unsorted 'FN'-field in the vCard.
-          example: Maier GmbH
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the contact in the vCard.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-      required:
-      - addresses
-      - emailAddresses
-      - fullName
-      - phoneNumbers
-    VCardPersonContact:
-      type: object
-      properties:
-        addresses:
-          type: array
-          items:
-            $ref: "#/components/schemas/VCardAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the contact in the vCard.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: "The first name(s) of the contact. This field is filled from\
-            \ the sorted 'N'-field of the vCard, if present."
-          example: John
-        fullName:
-          type: string
-          description: "The full name of the contact including titles, salutations,\
-            \ name prefixes, etc. This field is taken from the unsorted 'FN'-field\
-            \ in the vCard."
-          example: Mr. John Doe
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: "The last name(s) of the contact. This field is filled from\
-            \ the sorted 'N'-field of the vCard, if present."
-          example: Doe
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the contact in the vCard.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-        titles:
-          type: array
-          description: A list of (academic) titles of the contact in the vCard.
-          example: "['Prof.','Dr.']"
-          items:
-            type: string
-      required:
-      - addresses
-      - emailAddresses
-      - firstName
-      - fullName
-      - gender
-      - lastName
-      - phoneNumbers
-      - titles
-    VerifyCitizenAccessCodeUserCredentialsRequest:
-      type: object
-      properties:
-        credentialType:
-          $ref: "#/components/schemas/CredentialType"
-        rawSecret:
-          type: string
-          description: The raw secret value for verification
-          example: "654321"
-      required:
-      - rawSecret
diff --git a/backend/base/src/main/java/de/eshg/base/centralfile/PersonController.java b/backend/base/src/main/java/de/eshg/base/centralfile/PersonController.java
index c7cea67f1..23bbc1d62 100644
--- a/backend/base/src/main/java/de/eshg/base/centralfile/PersonController.java
+++ b/backend/base/src/main/java/de/eshg/base/centralfile/PersonController.java
@@ -11,9 +11,12 @@ import de.eshg.base.address.AddressDto;
 import de.eshg.base.address.mapper.AddressMapper;
 import de.eshg.base.centralfile.api.DeleteFileStatesRequest;
 import de.eshg.base.centralfile.api.DiffDto;
+import de.eshg.base.centralfile.api.GetFileStateIdsBulkRequest;
+import de.eshg.base.centralfile.api.GetFileStateIdsBulkResponse;
 import de.eshg.base.centralfile.api.GetFileStateIdsResponse;
 import de.eshg.base.centralfile.api.person.*;
 import de.eshg.base.centralfile.mapper.PersonMapper;
+import de.eshg.base.centralfile.persistence.AssociatedFileStateIds;
 import de.eshg.base.centralfile.persistence.PersonService;
 import de.eshg.base.centralfile.persistence.entity.BirthDetails_;
 import de.eshg.base.centralfile.persistence.entity.Person;
@@ -118,6 +121,29 @@ public class PersonController implements PersonApi {
     return findAllLinkedFileStates(fileState.getReferencePerson().getId());
   }
 
+  @Override
+  @Transactional(readOnly = true)
+  public GetFileStateIdsBulkResponse getPersonFileStateIdsAssociatedWithFileStates(
+      GetFileStateIdsBulkRequest request) {
+    List<AssociatedFileStateIds> associatedFileStateIds =
+        personRepository.findAllAssociatedFileStateIdsByFileStateIds(request.fileStateIds());
+    GetFileStateIdsBulkResponse response =
+        PersonMapper.mapToFileStateIdsBulkResponse(associatedFileStateIds);
+
+    if (associatedFileStateIds.size() < request.fileStateIds().size()) {
+      Map<UUID, List<UUID>> foundFileStateIdsMap = response.fileStateIds();
+      List<UUID> notFoundFileStateIds =
+          request.fileStateIds().stream()
+              .filter(fileStateId -> !foundFileStateIdsMap.containsKey(fileStateId))
+              .toList();
+      throw new NotFoundException(
+          "Number of file state ids not found: " + notFoundFileStateIds.size(),
+          "File state ids not found: " + notFoundFileStateIds);
+    }
+
+    return response;
+  }
+
   @Override
   @Transactional(readOnly = true)
   public GetFileStateIdsResponse getPersonFileStateIdsAssociatedWithReferencePerson(UUID id) {
diff --git a/backend/base/src/main/java/de/eshg/base/centralfile/mapper/PersonMapper.java b/backend/base/src/main/java/de/eshg/base/centralfile/mapper/PersonMapper.java
index ae9a0f4da..cb6b604e5 100644
--- a/backend/base/src/main/java/de/eshg/base/centralfile/mapper/PersonMapper.java
+++ b/backend/base/src/main/java/de/eshg/base/centralfile/mapper/PersonMapper.java
@@ -20,7 +20,9 @@ import de.eshg.base.address.DomesticAddressDto;
 import de.eshg.base.address.PostboxAddressDto;
 import de.eshg.base.address.mapper.AddressMapper;
 import de.eshg.base.centralfile.api.DiffDto;
+import de.eshg.base.centralfile.api.GetFileStateIdsBulkResponse;
 import de.eshg.base.centralfile.api.person.*;
+import de.eshg.base.centralfile.persistence.AssociatedFileStateIds;
 import de.eshg.base.centralfile.persistence.entity.*;
 import de.eshg.base.centralfile.persistence.entity.BirthDetails;
 import de.eshg.base.centralfile.persistence.entity.Person;
@@ -29,6 +31,7 @@ import de.eshg.base.centralfile.persistence.entity.PersonEmailAddress;
 import de.eshg.base.centralfile.persistence.entity.PersonPhoneNumber;
 import de.eshg.base.util.PersonDiffer;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
@@ -256,4 +259,15 @@ public class PersonMapper {
           AddressMapper.mapDomesticAddressIntoDm(domesticAddress, new DomesticPersonAddress());
     };
   }
+
+  public static GetFileStateIdsBulkResponse mapToFileStateIdsBulkResponse(
+      List<AssociatedFileStateIds> fileStateIds) {
+    Map<UUID, List<UUID>> resultMap =
+        fileStateIds.stream()
+            .collect(
+                StreamUtil.toLinkedHashMap(
+                    AssociatedFileStateIds::fileStateId,
+                    association -> Arrays.asList(association.associatedFileStateIds())));
+    return new GetFileStateIdsBulkResponse(resultMap);
+  }
 }
diff --git a/backend/base/src/main/java/de/eshg/base/centralfile/persistence/AssociatedFileStateIds.java b/backend/base/src/main/java/de/eshg/base/centralfile/persistence/AssociatedFileStateIds.java
new file mode 100644
index 000000000..ecabd9517
--- /dev/null
+++ b/backend/base/src/main/java/de/eshg/base/centralfile/persistence/AssociatedFileStateIds.java
@@ -0,0 +1,10 @@
+/*
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package de.eshg.base.centralfile.persistence;
+
+import java.util.UUID;
+
+public record AssociatedFileStateIds(UUID fileStateId, UUID[] associatedFileStateIds) {}
diff --git a/backend/base/src/main/java/de/eshg/base/centralfile/persistence/repository/PersonRepository.java b/backend/base/src/main/java/de/eshg/base/centralfile/persistence/repository/PersonRepository.java
index c71459f85..9bd4167bf 100644
--- a/backend/base/src/main/java/de/eshg/base/centralfile/persistence/repository/PersonRepository.java
+++ b/backend/base/src/main/java/de/eshg/base/centralfile/persistence/repository/PersonRepository.java
@@ -5,6 +5,7 @@
 
 package de.eshg.base.centralfile.persistence.repository;
 
+import de.eshg.base.centralfile.persistence.AssociatedFileStateIds;
 import de.eshg.base.centralfile.persistence.entity.Person;
 import java.time.Instant;
 import java.time.LocalDate;
@@ -99,6 +100,28 @@ public interface PersonRepository
 
   Optional<Person> findByExternalIdEqualsAndReferencePersonIsNull(UUID id);
 
+  @Query(
+      nativeQuery = true,
+      value =
+          """
+    with given_person as (
+      select id, reference_person_id, external_id
+      from person
+      where external_id in :ids)
+    select gp.external_id as file_state_id,
+      array_remove(
+        array_agg(associated_person.external_id order by associated_person.id),
+        null
+      ) as associated_file_state_ids
+    from given_person gp
+      left join person associated_person
+      on associated_person.reference_person_id = gp.reference_person_id
+      and associated_person.external_id != gp.external_id
+    group by gp.id, gp.external_id
+    order by gp.id;
+    """)
+  List<AssociatedFileStateIds> findAllAssociatedFileStateIdsByFileStateIds(List<UUID> ids);
+
   @Query(
       """
     select p from Person p
diff --git a/backend/base/src/main/java/de/eshg/base/gdpr/BundIdAttributesMapper.java b/backend/base/src/main/java/de/eshg/base/gdpr/BundIdAttributesMapper.java
index f43828aa9..a367277a9 100644
--- a/backend/base/src/main/java/de/eshg/base/gdpr/BundIdAttributesMapper.java
+++ b/backend/base/src/main/java/de/eshg/base/gdpr/BundIdAttributesMapper.java
@@ -19,10 +19,13 @@ import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.List;
 import java.util.Map;
+import org.apache.commons.lang3.StringUtils;
 import org.keycloak.representations.idm.UserRepresentation;
 
 public class BundIdAttributesMapper {
 
+  public static final String ELLIPSIS_HOUSE_NUMBER = "[\u2026]"; // (three dots character)
+
   private BundIdAttributesMapper() {
     throw new IllegalStateException("Utility class");
   }
@@ -56,12 +59,12 @@ public class BundIdAttributesMapper {
   protected static PersonIdentificationDataForValidation mapFromKeycloak(
       UserRepresentation representation) {
     String firstName =
-        shortenExtracted(
+        shortenExtractedAttribute(
             CitizenUserAttribute.FIRST_NAME,
             GdprPersonDto.MAX_FIRST_NAME_LENGTH,
             representation.getFirstName());
     String lastName =
-        shortenExtracted(
+        shortenExtractedAttribute(
             CitizenUserAttribute.LAST_NAME,
             GdprPersonDto.MAX_LAST_NAME_LENGTH,
             representation.getLastName());
@@ -99,29 +102,7 @@ public class BundIdAttributesMapper {
         phoneNumber,
         title,
         salutationDto,
-        shortenExtractedDomesticAddress(extractDomesticAddressDto(userAttributes)));
-  }
-
-  private static DomesticAddressDto shortenExtractedDomesticAddress(
-      DomesticAddressDto extractedAddress) {
-    String cityShortened =
-        shortenExtracted(
-            CitizenUserAttribute.BUND_ID_LOCALITY_NAME,
-            DomesticAddressDto.MAX_CITY_LENGTH,
-            extractedAddress.city());
-    String postalCodeShortened =
-        shortenExtracted(
-            CitizenUserAttribute.BUND_ID_POSTAL_CODE,
-            DomesticAddressDto.MAX_POSTAL_CODE_LENGTH,
-            extractedAddress.postalCode());
-    String streetShortened =
-        shortenExtracted(
-            CitizenUserAttribute.BUND_ID_POSTAL_ADDRESS,
-            DomesticAddressDto.MAX_STREET_LENGTH,
-            extractedAddress.street());
-
-    return new DomesticAddressDto(
-        extractedAddress.country(), cityShortened, postalCodeShortened, streetShortened);
+        extractDomesticAddressDto(userAttributes));
   }
 
   public static DomesticAddressDto extractDomesticAddressDto(
@@ -138,13 +119,43 @@ public class BundIdAttributesMapper {
             userAttributes,
             CitizenUserAttribute.BUND_ID_POSTAL_CODE,
             DomesticAddressDto.MAX_POSTAL_CODE_LENGTH);
-    String street =
-        extractAttributeAndShortenIfLong(
-            userAttributes,
-            CitizenUserAttribute.BUND_ID_POSTAL_ADDRESS,
-            DomesticAddressDto.MAX_STREET_LENGTH);
 
-    return new DomesticAddressDto(countryCode, city, postalCode, street);
+    String bundIdPostalAddressAttribute =
+        extractAttribute(userAttributes, CitizenUserAttribute.BUND_ID_POSTAL_ADDRESS);
+    StreetAndHouseNumber streetAndHouseNumber =
+        shortenIfLong(StreetAndHouseNumber.splitPostalAddress(bundIdPostalAddressAttribute));
+
+    return new DomesticAddressDto(
+        countryCode,
+        city,
+        postalCode,
+        streetAndHouseNumber.street(),
+        streetAndHouseNumber.houseNumber());
+  }
+
+  private static StreetAndHouseNumber shortenIfLong(StreetAndHouseNumber streetAndHouseNumber) {
+    String street = streetAndHouseNumber.street();
+    String streetShortened =
+        StringUtils.abbreviate(street, ELLIPSIS, DomesticAddressDto.MAX_STREET_LENGTH);
+    if (!StringUtils.equals(street, streetShortened)) {
+      log.debug(
+          "Extracted street part from User Attribute \"BUND_ID_POSTAL_ADDRESS\" (value \"{}\") has been truncated to {} due to length restrictions",
+          street,
+          streetShortened);
+    }
+
+    String houseNumber = streetAndHouseNumber.houseNumber();
+    String houseNumberShortened =
+        StringUtils.abbreviate(
+            houseNumber, ELLIPSIS_HOUSE_NUMBER, DomesticAddressDto.MAX_HOUSE_NUMBER_LENGTH);
+    if (!StringUtils.equals(houseNumber, houseNumberShortened)) {
+      log.debug(
+          "House number extracted from User Attribute \"BUND_ID_POSTAL_ADDRESS\" (value \"{}\") has been truncated to {} due to length restrictions",
+          houseNumber,
+          houseNumberShortened);
+    }
+
+    return new StreetAndHouseNumber(streetShortened, houseNumberShortened);
   }
 
   private static SalutationDto mapGender(String genderAttribute) {
diff --git a/backend/base/src/main/java/de/eshg/base/gdpr/CitizenUserAttributesMapper.java b/backend/base/src/main/java/de/eshg/base/gdpr/CitizenUserAttributesMapper.java
index 4a1ade14c..9e18b8cee 100644
--- a/backend/base/src/main/java/de/eshg/base/gdpr/CitizenUserAttributesMapper.java
+++ b/backend/base/src/main/java/de/eshg/base/gdpr/CitizenUserAttributesMapper.java
@@ -9,39 +9,40 @@ import de.eshg.lib.common.CountryCode;
 import de.eshg.lib.keycloak.CitizenUserAttribute;
 import java.util.List;
 import java.util.Map;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class CitizenUserAttributesMapper {
 
   protected static final Logger log = LoggerFactory.getLogger(CitizenUserAttributesMapper.class);
+  public static final String ELLIPSIS = "[\u2026]"; // (three dots character)
 
   protected static String extractAttributeAndShortenIfLong(
       Map<String, List<String>> userAttributes,
       CitizenUserAttribute citizenUserAttribute,
       int maxLength) {
-    String extracted = extractAttribute(userAttributes, citizenUserAttribute);
+    String extractedAttribute = extractAttribute(userAttributes, citizenUserAttribute);
 
-    String truncated = shortenExtracted(citizenUserAttribute, maxLength, extracted);
-    if (truncated != null) return truncated;
+    String shortenedAttribute =
+        shortenExtractedAttribute(citizenUserAttribute, maxLength, extractedAttribute);
 
-    return extracted;
+    return shortenedAttribute;
   }
 
-  protected static String shortenExtracted(
-      CitizenUserAttribute citizenUserAttribute, int maxLength, String extracted) {
-    String ellipsis = "[...]";
+  protected static String shortenExtractedAttribute(
+      CitizenUserAttribute citizenUserAttribute, int maxLength, String attribute) {
+    String attributeShortened = StringUtils.abbreviate(attribute, ELLIPSIS, maxLength);
 
-    if (extracted != null && extracted.length() > maxLength) {
-      String truncated = extracted.substring(0, maxLength - ellipsis.length()) + ellipsis;
+    if (!StringUtils.equals(attribute, attributeShortened)) {
       log.debug(
           "User attribute \"{}\" with value \"{}\" has been truncated to \"{}\" due to length restrictions",
           citizenUserAttribute,
-          extracted,
-          truncated);
-      return truncated;
+          attribute,
+          attributeShortened);
     }
-    return extracted;
+
+    return attributeShortened;
   }
 
   protected static String extractAttribute(
diff --git a/backend/base/src/main/java/de/eshg/base/gdpr/GdprCleanupJob.java b/backend/base/src/main/java/de/eshg/base/gdpr/GdprCleanupJob.java
index b7a1a46e2..2dc7d021b 100644
--- a/backend/base/src/main/java/de/eshg/base/gdpr/GdprCleanupJob.java
+++ b/backend/base/src/main/java/de/eshg/base/gdpr/GdprCleanupJob.java
@@ -84,7 +84,7 @@ public class GdprCleanupJob {
     ZonedDateTime cutoffZdt = now.minus(Period.ofDays(30));
     Instant cutOffDate = cutoffZdt.toInstant();
     log.debug("Cut-off date: {}", cutOffDate);
-    return gdprProcedureRepository.findIdsOfYoungestClosedProcedures(cutOffDate, maxResults());
+    return gdprProcedureRepository.findIdsOfYoungestExpiredProcedures(cutOffDate, maxResults());
   }
 
   private PageRequest maxResults() {
diff --git a/backend/base/src/main/java/de/eshg/base/gdpr/MukAttributesMapper.java b/backend/base/src/main/java/de/eshg/base/gdpr/MukAttributesMapper.java
index d145c415e..2248f3e96 100644
--- a/backend/base/src/main/java/de/eshg/base/gdpr/MukAttributesMapper.java
+++ b/backend/base/src/main/java/de/eshg/base/gdpr/MukAttributesMapper.java
@@ -6,7 +6,7 @@
 package de.eshg.base.gdpr;
 
 import static de.eshg.base.gdpr.CitizenUserAttributesMapper.extractAttribute;
-import static de.eshg.base.gdpr.CitizenUserAttributesMapper.shortenExtracted;
+import static de.eshg.base.gdpr.CitizenUserAttributesMapper.extractAttributeAndShortenIfLong;
 
 import de.eshg.base.address.DomesticAddressDto;
 import de.eshg.base.gdpr.persistence.GdprFacility;
@@ -40,35 +40,7 @@ public class MukAttributesMapper {
     return new FacilityIdentificationDataForValidation(
         extractAttribute(userAttributes, CitizenUserAttribute.MUK_DATA_TRANSMITTER_PSEUDONYM_ID),
         extractAttribute(userAttributes, CitizenUserAttribute.MUK_FACILITY_NAME),
-        shortenExtractedDomesticAddress(extractDomesticAddressDto(userAttributes)));
-  }
-
-  private static DomesticAddressDto shortenExtractedDomesticAddress(
-      DomesticAddressDto extractedAddress) {
-    String cityShortened =
-        shortenExtracted(
-            CitizenUserAttribute.MUK_ADDRESS_CITY,
-            DomesticAddressDto.MAX_CITY_LENGTH,
-            extractedAddress.city());
-    String streetShortened =
-        shortenExtracted(
-            CitizenUserAttribute.MUK_ADDRESS_STREET,
-            DomesticAddressDto.MAX_STREET_LENGTH,
-            extractedAddress.street());
-    String houseNumberShortened =
-        shortenExtracted(
-            CitizenUserAttribute.MUK_ADDRESS_HOUSE_NUMBER,
-            DomesticAddressDto.MAX_HOUSE_NUMBER_LENGTH,
-            extractedAddress.houseNumber());
-
-    return new DomesticAddressDto(
-        extractedAddress.country(),
-        cityShortened,
-        extractedAddress.postalCode(),
-        null,
-        streetShortened,
-        houseNumberShortened,
-        extractedAddress.addressAddition());
+        extractDomesticAddressDto(userAttributes));
   }
 
   public static DomesticAddressDto extractDomesticAddressDto(
@@ -76,14 +48,28 @@ public class MukAttributesMapper {
     CountryCode countryCode =
         CitizenUserAttributesMapper.mapCountryCode(
             extractAttribute(userAttributes, CitizenUserAttribute.MUK_ADDRESS_COUNTRY));
-    String city = extractAttribute(userAttributes, CitizenUserAttribute.MUK_ADDRESS_CITY);
+    String city =
+        extractAttributeAndShortenIfLong(
+            userAttributes,
+            CitizenUserAttribute.MUK_ADDRESS_CITY,
+            DomesticAddressDto.MAX_CITY_LENGTH);
     String postalCode =
         mapPostalCode(
-            extractAttribute(userAttributes, CitizenUserAttribute.MUK_ADDRESS_POSTAL_CODE),
+            extractAttributeAndShortenIfLong(
+                userAttributes,
+                CitizenUserAttribute.MUK_ADDRESS_POSTAL_CODE,
+                DomesticAddressDto.MAX_POSTAL_CODE_LENGTH),
             countryCode);
-    String street = extractAttribute(userAttributes, CitizenUserAttribute.MUK_ADDRESS_STREET);
+    String street =
+        extractAttributeAndShortenIfLong(
+            userAttributes,
+            CitizenUserAttribute.MUK_ADDRESS_STREET,
+            DomesticAddressDto.MAX_STREET_LENGTH);
     String houseNumber =
-        extractAttribute(userAttributes, CitizenUserAttribute.MUK_ADDRESS_HOUSE_NUMBER);
+        extractAttributeAndShortenIfLong(
+            userAttributes,
+            CitizenUserAttribute.MUK_ADDRESS_HOUSE_NUMBER,
+            DomesticAddressDto.MAX_HOUSE_NUMBER_LENGTH);
     String addressAddition =
         extractAttribute(userAttributes, CitizenUserAttribute.MUK_ADDRESS_ADDRESS_ADDITION);
 
diff --git a/backend/base/src/main/java/de/eshg/base/gdpr/StreetAndHouseNumber.java b/backend/base/src/main/java/de/eshg/base/gdpr/StreetAndHouseNumber.java
new file mode 100644
index 000000000..09a263a0e
--- /dev/null
+++ b/backend/base/src/main/java/de/eshg/base/gdpr/StreetAndHouseNumber.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package de.eshg.base.gdpr;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public record StreetAndHouseNumber(String street, String houseNumber) {
+
+  private static final String STREET_PART_REGEX = "^(.*)\\s+";
+  private static final String NUMBER_WITH_LETTER_REGEX = "\\d+\\s*[A-Za-z]{0,3}";
+
+  private static String getHouseNumberRangesRegex(String... delimiter) {
+    String delimiters = String.join("", delimiter);
+    return "("
+        + NUMBER_WITH_LETTER_REGEX
+        + "\\s*["
+        + delimiters
+        + "]\\s*"
+        + "\\d*\\s*[A-Za-z]{0,3}"
+        + ")";
+  }
+
+  private static final List<Pattern> HOUSE_NUMBER_PATTERNS =
+      Arrays.asList(
+          Pattern.compile(getHouseNumberRangesRegex("-", "/")),
+          Pattern.compile("(" + NUMBER_WITH_LETTER_REGEX + ")"),
+          Pattern.compile(getHouseNumberRangesRegex(",")));
+
+  private static final List<Pattern> STREET_AND_HOUSE_NUMBER_PATTERNS =
+      HOUSE_NUMBER_PATTERNS.stream()
+          .map(Pattern::pattern)
+          .map(houseNumberRegex -> Pattern.compile(STREET_PART_REGEX + houseNumberRegex))
+          .toList();
+
+  public static StreetAndHouseNumber splitPostalAddress(String postalAddress) {
+    if (postalAddress == null) {
+      return new StreetAndHouseNumber(null, null);
+    }
+
+    String trimmedPostalAddress = postalAddress.trim();
+
+    return splitTrimmedPostalAddress(trimmedPostalAddress);
+  }
+
+  private static StreetAndHouseNumber splitTrimmedPostalAddress(String trimmedPostalAddress) {
+    if (isHouseNumberOnly(trimmedPostalAddress)) {
+      return new StreetAndHouseNumber(trimmedPostalAddress.trim(), null);
+    }
+
+    for (Pattern pattern : STREET_AND_HOUSE_NUMBER_PATTERNS) {
+      Optional<StreetAndHouseNumber> streetAndHouseNumber =
+          getStreetAndHouseNumber(pattern, trimmedPostalAddress.trim());
+      if (streetAndHouseNumber.isPresent()) {
+        return streetAndHouseNumber.get();
+      }
+    }
+
+    return new StreetAndHouseNumber(trimmedPostalAddress.trim(), null);
+  }
+
+  private static Optional<StreetAndHouseNumber> getStreetAndHouseNumber(
+      Pattern pattern, String postalAddress) {
+    Matcher matcher = pattern.matcher(postalAddress);
+
+    if (matcher.matches()) {
+      String street = matcher.group(1).trim();
+      String houseNumber = matcher.group(2).trim();
+      return Optional.of(new StreetAndHouseNumber(street, houseNumber));
+    }
+
+    return Optional.empty();
+  }
+
+  private static boolean isHouseNumberOnly(String postalAddress) {
+    return HOUSE_NUMBER_PATTERNS.stream()
+        .anyMatch(pattern -> pattern.matcher(postalAddress.trim()).matches());
+  }
+}
diff --git a/backend/base/src/main/java/de/eshg/base/gdpr/persistence/repository/GdprProcedureRepository.java b/backend/base/src/main/java/de/eshg/base/gdpr/persistence/repository/GdprProcedureRepository.java
index 319313fa7..398905469 100644
--- a/backend/base/src/main/java/de/eshg/base/gdpr/persistence/repository/GdprProcedureRepository.java
+++ b/backend/base/src/main/java/de/eshg/base/gdpr/persistence/repository/GdprProcedureRepository.java
@@ -33,11 +33,12 @@ public interface GdprProcedureRepository
       """
     SELECT g.externalId
     FROM GdprProcedure g
-    WHERE g.status = de.eshg.base.gdpr.persistence.GdprProcedureStatus.CLOSED
+    WHERE (g.status = de.eshg.base.gdpr.persistence.GdprProcedureStatus.CLOSED
+      OR g.status = de.eshg.base.gdpr.persistence.GdprProcedureStatus.ABORTED)
       AND g.closedAt <= :cutOffDate
     ORDER BY g.closedAt DESC
     """)
-  List<UUID> findIdsOfYoungestClosedProcedures(
+  List<UUID> findIdsOfYoungestExpiredProcedures(
       @Param("cutOffDate") Instant cutOffDate, Pageable pageable);
 
   @Query("select p from GdprProcedure p where p.identificationData.bpk2 = :bpk2")
diff --git a/backend/base/src/main/java/de/eshg/base/spring/config/BaseInternalSecurityConfig.java b/backend/base/src/main/java/de/eshg/base/spring/config/BaseInternalSecurityConfig.java
index 83172fee8..14ce21425 100644
--- a/backend/base/src/main/java/de/eshg/base/spring/config/BaseInternalSecurityConfig.java
+++ b/backend/base/src/main/java/de/eshg/base/spring/config/BaseInternalSecurityConfig.java
@@ -5,6 +5,9 @@
 
 package de.eshg.base.spring.config;
 
+import static de.eshg.base.gdpr.GdprProcedureApi.BY_ID;
+import static de.eshg.base.gdpr.GdprProcedureApi.DOWNLOADS;
+import static de.eshg.base.gdpr.GdprProcedureApi.FILE_STATE_IDS;
 import static org.springframework.http.HttpMethod.DELETE;
 import static org.springframework.http.HttpMethod.GET;
 import static org.springframework.http.HttpMethod.POST;
@@ -13,6 +16,7 @@ import static org.springframework.http.HttpMethod.PUT;
 import de.eshg.base.centralfile.FacilityApi;
 import de.eshg.base.centralfile.PersonApi;
 import de.eshg.base.contact.ContactApi;
+import de.eshg.base.gdpr.GdprProcedureApi;
 import de.eshg.base.inventory.InventoryApi;
 import de.eshg.base.label.LabelApi;
 import de.eshg.base.mail.MailApi;
@@ -64,14 +68,27 @@ public class BaseInternalSecurityConfig {
   private void gdpr(
       AuthorizeHttpRequestsConfigurer<HttpSecurity>.AuthorizationManagerRequestMatcherRegistry
           auth) {
-    auth.requestMatchers(GET, BaseUrls.Base.GDPR_PROCEDURE_API + "/**")
-        .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_READ.name());
-    auth.requestMatchers(POST, BaseUrls.Base.GDPR_PROCEDURE_API + "/**")
-        .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_WRITE.name());
-    auth.requestMatchers(PUT, BaseUrls.Base.GDPR_PROCEDURE_API + "/**")
-        .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_WRITE.name());
-    auth.requestMatchers(DELETE, BaseUrls.Base.GDPR_PROCEDURE_API + "/**")
-        .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_WRITE.name());
+    auth.requestMatchers(GET, GdprProcedureApi.BASE_URL + BY_ID)
+        .hasAnyRole(
+            EmployeePermissionRole.BASE_GDPR_PROCEDURE_READ.name(),
+            EmployeePermissionRole.BASE_GDPR_PROCEDURE_REVIEW.name(),
+            CitizenPermissionRole.BUND_ID_USER.name(),
+            CitizenPermissionRole.MUK_USER.name());
+    auth.requestMatchers(GET, GdprProcedureApi.BASE_URL + DOWNLOADS)
+        .hasAnyRole(
+            EmployeePermissionRole.BASE_GDPR_PROCEDURE_REVIEW.name(),
+            CitizenPermissionRole.BUND_ID_USER.name(),
+            CitizenPermissionRole.MUK_USER.name());
+    auth.requestMatchers(GET, GdprProcedureApi.BASE_URL + FILE_STATE_IDS)
+        .hasAnyRole(
+            EmployeePermissionRole.BASE_GDPR_PROCEDURE_READ.name(),
+            EmployeePermissionRole.BASE_GDPR_PROCEDURE_REVIEW.name());
+
+    auth.requestMatchers(POST, GdprProcedureApi.BASE_URL + DOWNLOADS)
+        .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_REVIEW.name());
+
+    auth.requestMatchers(DELETE, GdprProcedureApi.BASE_URL + DOWNLOADS)
+        .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_REVIEW.name());
   }
 
   private static void users(
diff --git a/backend/buildscript-gradle.lockfile b/backend/buildscript-gradle.lockfile
index 60c632d05..aa83766de 100644
--- a/backend/buildscript-gradle.lockfile
+++ b/backend/buildscript-gradle.lockfile
@@ -7,7 +7,7 @@ com.avast.gradle:gradle-docker-compose-plugin:0.17.12=classpath
 com.diffplug.durian:durian-collect:1.2.0=classpath
 com.diffplug.durian:durian-core:1.2.0=classpath
 com.diffplug.durian:durian-io:1.2.0=classpath
-com.diffplug.durian:durian-swt.os:4.2.2=classpath
+com.diffplug.durian:durian-swt.os:4.3.0=classpath
 com.diffplug.spotless:com.diffplug.spotless.gradle.plugin:6.25.0=classpath
 com.diffplug.spotless:spotless-lib-extra:2.45.0=classpath
 com.diffplug.spotless:spotless-lib:2.45.0=classpath
diff --git a/backend/business-module-commons/src/main/java/de/eshg/rest/service/error/GlobalExceptionHandler.java b/backend/business-module-commons/src/main/java/de/eshg/rest/service/error/GlobalExceptionHandler.java
index 1ecc05b93..b7892dd7b 100644
--- a/backend/business-module-commons/src/main/java/de/eshg/rest/service/error/GlobalExceptionHandler.java
+++ b/backend/business-module-commons/src/main/java/de/eshg/rest/service/error/GlobalExceptionHandler.java
@@ -34,7 +34,7 @@ import org.springframework.web.bind.MethodArgumentNotValidException;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.ResponseStatus;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
-import org.springframework.web.client.HttpClientErrorException;
+import org.springframework.web.client.HttpClientErrorException.Unauthorized;
 import org.springframework.web.context.request.WebRequest;
 import org.springframework.web.method.annotation.HandlerMethodValidationException;
 import org.springframework.web.multipart.MaxUploadSizeExceededException;
@@ -114,7 +114,7 @@ public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
         .forEach(
             error -> {
               String item = getAffectedItem(error);
-              String errorMessage = error.getDefaultMessage();
+              String errorMessage = getErrorMessage(error);
               errors.put(item, errorMessage);
             });
     log.error("Invalid request, failed to bind with errors:\n{}", errors, ex);
@@ -129,6 +129,14 @@ public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
     }
   }
 
+  private static String getErrorMessage(ObjectError error) {
+    if (error instanceof FieldError) {
+      return "Invalid input for field";
+    } else {
+      return "Something went wrong.";
+    }
+  }
+
   @ExceptionHandler
   @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
   public ErrorResponse fallBack(Exception ex) {
@@ -172,7 +180,7 @@ public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
 
   @ExceptionHandler
   @ResponseStatus(HttpStatus.BAD_REQUEST)
-  public ErrorResponse handleUnauthorized(HttpClientErrorException.Unauthorized ex) {
+  public ErrorResponse handleUnauthorized(Unauthorized ex) {
     return logAndMapToErrorResponse(ex, ErrorCode.UNAUTHORIZED, "Unauthorized");
   }
 
diff --git a/backend/business-module-commons/src/main/java/de/eshg/rest/service/security/DefaultEshgSecurityConfig.java b/backend/business-module-commons/src/main/java/de/eshg/rest/service/security/DefaultEshgSecurityConfig.java
index 139e5c053..c3379c20d 100644
--- a/backend/business-module-commons/src/main/java/de/eshg/rest/service/security/DefaultEshgSecurityConfig.java
+++ b/backend/business-module-commons/src/main/java/de/eshg/rest/service/security/DefaultEshgSecurityConfig.java
@@ -23,7 +23,6 @@ import org.springframework.beans.factory.ObjectProvider;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Profile;
 import org.springframework.core.env.AbstractEnvironment;
 import org.springframework.core.env.EnumerablePropertySource;
 import org.springframework.http.HttpMethod;
@@ -73,12 +72,6 @@ public class DefaultEshgSecurityConfig {
     return auth -> auth.requestMatchers("/test-helper/**").permitAll();
   }
 
-  @Bean
-  @Profile("test")
-  AuthorizationCustomizer apiDocsSecurityConfig() {
-    return auth -> auth.requestMatchers(HttpMethod.GET, "/api-docs.yaml").permitAll();
-  }
-
   @Bean
   @ConditionalOnMissingBean(SecurityFilterChain.class)
   public SecurityFilterChain defaultEshgSecurityChain(
diff --git a/backend/central-repository/build.gradle b/backend/central-repository/build.gradle
index d4074ce00..e9dee4bab 100644
--- a/backend/central-repository/build.gradle
+++ b/backend/central-repository/build.gradle
@@ -22,9 +22,6 @@ dependencies {
     testImplementation testFixtures(project(':lib-service-directory-admin-api'))
     testImplementation project(':lib-service-directory-admin-api')
     testImplementation testFixtures(project(':business-module-commons'))
-
-    testImplementation 'org.testcontainers:junit-jupiter'
-    testImplementation 'org.testcontainers:postgresql'
 }
 
 
diff --git a/backend/central-repository/gradle.lockfile b/backend/central-repository/gradle.lockfile
index c64fc0f73..0fb3cb82f 100644
--- a/backend/central-repository/gradle.lockfile
+++ b/backend/central-repository/gradle.lockfile
@@ -193,10 +193,9 @@ org.springframework:spring-test:6.2.1=testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-tx:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-web:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-webmvc:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-org.testcontainers:database-commons:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:jdbc:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:junit-jupiter:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:postgresql:1.20.4=testCompileClasspath,testRuntimeClasspath
+org.testcontainers:database-commons:1.20.4=testRuntimeClasspath
+org.testcontainers:jdbc:1.20.4=testRuntimeClasspath
+org.testcontainers:postgresql:1.20.4=testRuntimeClasspath
 org.testcontainers:testcontainers:1.20.4=testCompileClasspath,testRuntimeClasspath
 org.xmlunit:xmlunit-core:2.10.0=testCompileClasspath,testRuntimeClasspath
 org.yaml:snakeyaml:2.3=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
diff --git a/backend/central-repository/openApi.json b/backend/central-repository/openApi.json
new file mode 100644
index 000000000..d52525513
--- /dev/null
+++ b/backend/central-repository/openApi.json
@@ -0,0 +1,873 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is the api for Central Repository",
+    "title" : "Central Repository Api",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8091"
+  } ],
+  "paths" : {
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/versioned/{moduleName}/{objectName}" : {
+      "post" : {
+        "operationId" : "createEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "moduleName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "path",
+          "name" : "objectName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/MetadataResponse"
+                }
+              }
+            },
+            "description" : "Returns the metadata for the created entry containing the new id and version"
+          }
+        },
+        "summary" : "Create entry and get the metadata for the created entry",
+        "tags" : [ "CentralRepository" ]
+      }
+    },
+    "/versioned/{moduleName}/{objectName}/metadata" : {
+      "get" : {
+        "operationId" : "getMetadataOfVersionsWithModuleAndObjectName",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "moduleName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "path",
+          "name" : "objectName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "versions",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/VersionFilterType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "deleted",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean",
+            "default" : false
+          }
+        }, {
+          "in" : "query",
+          "name" : "tags",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "category",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/MetadataListResponse"
+                }
+              }
+            },
+            "description" : "Returns the metadata of all or the newest version, given they have the supplied names.\nThe objectName can be * to include all objects whatever their objectName.\n\n**Filters**:\n* If versions is not supplied, this will return all versions. It can be set to NEWEST.\n* If deleted is not specified, this will return only versions, which are not deleted.\n* If deleted is set to true, this will return only versions, which are deleted.\n* If tags or category are not supplied, this will return results with any tag or category.\n* If tags is an empty string, this will return all results with an empty tags field.\n"
+          }
+        },
+        "summary" : "Get metadata for multiple versions of objects with supplied names",
+        "tags" : [ "CentralRepository" ]
+      }
+    },
+    "/versioned/{moduleName}/{objectName}/{id}" : {
+      "delete" : {
+        "operationId" : "setEntryAsDeleted",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "moduleName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "path",
+          "name" : "objectName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "If the entry was successfully set as deleted"
+          }
+        },
+        "summary" : "Set the specified entry and thus all its versions as deleted",
+        "tags" : [ "CentralRepository" ]
+      }
+    },
+    "/versioned/{moduleName}/{objectName}/{id}/metadata" : {
+      "get" : {
+        "operationId" : "getMetadataOfVersionsWithId",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "moduleName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "path",
+          "name" : "objectName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "versions",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/VersionFilterType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "deleted",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean",
+            "default" : false
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/MetadataListResponse"
+                }
+              }
+            },
+            "description" : "Returns the metadata of all or the newest version, given they have the supplied names and id.\n\n**Filters**:\n* If versions is not supplied, this will return all versions. It can be set to NEWEST.\n* If deleted is not specified, this will return only versions, which are not deleted.\n* If deleted is set to true, this will return only versions, which are deleted.\n"
+          }
+        },
+        "summary" : "Get metadata for multiple versions of an object",
+        "tags" : [ "CentralRepository" ]
+      }
+    },
+    "/versioned/{moduleName}/{objectName}/{id}/{basedOnVersion}" : {
+      "post" : {
+        "operationId" : "createNewVersionForEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "moduleName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "path",
+          "name" : "objectName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "path",
+          "name" : "basedOnVersion",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/MetadataResponse"
+                }
+              }
+            },
+            "description" : "Returns the metadata for the new version"
+          }
+        },
+        "summary" : "Create new version and get the metadata for it",
+        "tags" : [ "CentralRepository" ]
+      }
+    },
+    "/versioned/{moduleName}/{objectName}/{id}/{basedOnVersion}/metadata" : {
+      "post" : {
+        "operationId" : "createNewVersionOnlyChangeMetadataForEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "moduleName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "path",
+          "name" : "objectName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "path",
+          "name" : "basedOnVersion",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/MetadataRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/MetadataResponse"
+                }
+              }
+            },
+            "description" : "Returns the metadata for the new version"
+          }
+        },
+        "summary" : "Create new version with only metadata being modified and get the new metadata for it",
+        "tags" : [ "CentralRepository" ]
+      }
+    },
+    "/versioned/{moduleName}/{objectName}/{id}/{version}" : {
+      "delete" : {
+        "operationId" : "setOneVersionOfAnEntryAsDeleted",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "moduleName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "path",
+          "name" : "objectName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "path",
+          "name" : "version",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "If the version of the entry was successfully set as deleted"
+          }
+        },
+        "summary" : "Set the specified version of the specified entry as deleted",
+        "tags" : [ "CentralRepository" ]
+      }
+    },
+    "/versioned/{moduleName}/{objectName}/{id}/{version}/content" : {
+      "get" : {
+        "operationId" : "getContentOfOneVersion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "moduleName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "path",
+          "name" : "objectName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "path",
+          "name" : "version",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/StreamingResponseBody"
+                }
+              }
+            },
+            "description" : "Returns the content of the specified version, which has the supplied names and id"
+          }
+        },
+        "summary" : "Get content for a specific version of an object",
+        "tags" : [ "CentralRepository" ]
+      }
+    },
+    "/versioned/{moduleName}/{objectName}/{id}/{version}/metadata" : {
+      "get" : {
+        "operationId" : "getMetadataOfOneVersion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "moduleName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "path",
+          "name" : "objectName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "path",
+          "name" : "version",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/MetadataResponse"
+                }
+              }
+            },
+            "description" : "Returns the metadata of the specified version, which has the supplied names and id"
+          }
+        },
+        "summary" : "Get metadata for a specific version of an object",
+        "tags" : [ "CentralRepository" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "MetadataListResponse" : {
+        "type" : "object",
+        "properties" : {
+          "items" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/MetadataResponse"
+            }
+          }
+        }
+      },
+      "MetadataRequest" : {
+        "required" : [ "category", "name" ],
+        "type" : "object",
+        "properties" : {
+          "category" : {
+            "type" : "string"
+          },
+          "changeLog" : {
+            "type" : "string"
+          },
+          "contact" : {
+            "type" : "string"
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "tags" : {
+            "type" : "array",
+            "items" : {
+              "pattern" : "^(?!\\s*$)[^,]+$",
+              "type" : "string"
+            }
+          }
+        }
+      },
+      "MetadataResponse" : {
+        "required" : [ "category", "contentType", "createdAt", "createdBy", "id", "moduleName", "name", "objectName", "tags", "version" ],
+        "type" : "object",
+        "properties" : {
+          "category" : {
+            "type" : "string"
+          },
+          "changeLog" : {
+            "type" : "string"
+          },
+          "contact" : {
+            "type" : "string"
+          },
+          "contentType" : {
+            "type" : "string"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string"
+          },
+          "deletedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "deletedBy" : {
+            "type" : "string"
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "moduleName" : {
+            "type" : "string"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "objectName" : {
+            "type" : "string"
+          },
+          "tags" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "StreamingResponseBody" : {
+        "type" : "object"
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      },
+      "VersionFilterType" : {
+        "type" : "string",
+        "enum" : [ "ALL", "NEWEST" ]
+      }
+    }
+  }
+}
diff --git a/backend/central-repository/openApi.yaml b/backend/central-repository/openApi.yaml
deleted file mode 100644
index 9821fb39a..000000000
--- a/backend/central-repository/openApi.yaml
+++ /dev/null
@@ -1,674 +0,0 @@
-# Copyright 2025 SCOOP Software GmbH, cronn GmbH
-# SPDX-License-Identifier: AGPL-3.0-only
-
-openapi: 3.0.1
-info:
-  description: This is the api for Central Repository
-  title: Central Repository Api
-  version: "0.1"
-servers:
-- url: http://localhost:8091
-paths:
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /versioned/{moduleName}/{objectName}:
-    post:
-      operationId: createEntry
-      parameters:
-      - in: path
-        name: moduleName
-        required: true
-        schema:
-          type: string
-      - in: path
-        name: objectName
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/MetadataResponse"
-          description: Returns the metadata for the created entry containing the new
-            id and version
-      summary: Create entry and get the metadata for the created entry
-      tags:
-      - CentralRepository
-  /versioned/{moduleName}/{objectName}/metadata:
-    get:
-      operationId: getMetadataOfVersionsWithModuleAndObjectName
-      parameters:
-      - in: path
-        name: moduleName
-        required: true
-        schema:
-          type: string
-      - in: path
-        name: objectName
-        required: true
-        schema:
-          type: string
-      - in: query
-        name: versions
-        required: false
-        schema:
-          $ref: "#/components/schemas/VersionFilterType"
-      - in: query
-        name: deleted
-        required: false
-        schema:
-          type: boolean
-          default: false
-      - in: query
-        name: tags
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: category
-        required: false
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/MetadataListResponse"
-          description: |
-            Returns the metadata of all or the newest version, given they have the supplied names.
-            The objectName can be * to include all objects whatever their objectName.
-
-            **Filters**:
-            * If versions is not supplied, this will return all versions. It can be set to NEWEST.
-            * If deleted is not specified, this will return only versions, which are not deleted.
-            * If deleted is set to true, this will return only versions, which are deleted.
-            * If tags or category are not supplied, this will return results with any tag or category.
-            * If tags is an empty string, this will return all results with an empty tags field.
-      summary: Get metadata for multiple versions of objects with supplied names
-      tags:
-      - CentralRepository
-  /versioned/{moduleName}/{objectName}/{id}:
-    delete:
-      operationId: setEntryAsDeleted
-      parameters:
-      - in: path
-        name: moduleName
-        required: true
-        schema:
-          type: string
-      - in: path
-        name: objectName
-        required: true
-        schema:
-          type: string
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: integer
-          format: int64
-      responses:
-        "200":
-          description: If the entry was successfully set as deleted
-      summary: Set the specified entry and thus all its versions as deleted
-      tags:
-      - CentralRepository
-  /versioned/{moduleName}/{objectName}/{id}/metadata:
-    get:
-      operationId: getMetadataOfVersionsWithId
-      parameters:
-      - in: path
-        name: moduleName
-        required: true
-        schema:
-          type: string
-      - in: path
-        name: objectName
-        required: true
-        schema:
-          type: string
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: versions
-        required: false
-        schema:
-          $ref: "#/components/schemas/VersionFilterType"
-      - in: query
-        name: deleted
-        required: false
-        schema:
-          type: boolean
-          default: false
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/MetadataListResponse"
-          description: |
-            Returns the metadata of all or the newest version, given they have the supplied names and id.
-
-            **Filters**:
-            * If versions is not supplied, this will return all versions. It can be set to NEWEST.
-            * If deleted is not specified, this will return only versions, which are not deleted.
-            * If deleted is set to true, this will return only versions, which are deleted.
-      summary: Get metadata for multiple versions of an object
-      tags:
-      - CentralRepository
-  /versioned/{moduleName}/{objectName}/{id}/{basedOnVersion}:
-    post:
-      operationId: createNewVersionForEntry
-      parameters:
-      - in: path
-        name: moduleName
-        required: true
-        schema:
-          type: string
-      - in: path
-        name: objectName
-        required: true
-        schema:
-          type: string
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: path
-        name: basedOnVersion
-        required: true
-        schema:
-          type: integer
-          format: int32
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/MetadataResponse"
-          description: Returns the metadata for the new version
-      summary: Create new version and get the metadata for it
-      tags:
-      - CentralRepository
-  /versioned/{moduleName}/{objectName}/{id}/{basedOnVersion}/metadata:
-    post:
-      operationId: createNewVersionOnlyChangeMetadataForEntry
-      parameters:
-      - in: path
-        name: moduleName
-        required: true
-        schema:
-          type: string
-      - in: path
-        name: objectName
-        required: true
-        schema:
-          type: string
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: path
-        name: basedOnVersion
-        required: true
-        schema:
-          type: integer
-          format: int32
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/MetadataRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/MetadataResponse"
-          description: Returns the metadata for the new version
-      summary: Create new version with only metadata being modified and get the new
-        metadata for it
-      tags:
-      - CentralRepository
-  /versioned/{moduleName}/{objectName}/{id}/{version}:
-    delete:
-      operationId: setOneVersionOfAnEntryAsDeleted
-      parameters:
-      - in: path
-        name: moduleName
-        required: true
-        schema:
-          type: string
-      - in: path
-        name: objectName
-        required: true
-        schema:
-          type: string
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: path
-        name: version
-        required: true
-        schema:
-          type: integer
-          format: int32
-      responses:
-        "200":
-          description: If the version of the entry was successfully set as deleted
-      summary: Set the specified version of the specified entry as deleted
-      tags:
-      - CentralRepository
-  /versioned/{moduleName}/{objectName}/{id}/{version}/content:
-    get:
-      operationId: getContentOfOneVersion
-      parameters:
-      - in: path
-        name: moduleName
-        required: true
-        schema:
-          type: string
-      - in: path
-        name: objectName
-        required: true
-        schema:
-          type: string
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: path
-        name: version
-        required: true
-        schema:
-          type: integer
-          format: int32
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/StreamingResponseBody"
-          description: "Returns the content of the specified version, which has the\
-            \ supplied names and id"
-      summary: Get content for a specific version of an object
-      tags:
-      - CentralRepository
-  /versioned/{moduleName}/{objectName}/{id}/{version}/metadata:
-    get:
-      operationId: getMetadataOfOneVersion
-      parameters:
-      - in: path
-        name: moduleName
-        required: true
-        schema:
-          type: string
-      - in: path
-        name: objectName
-        required: true
-        schema:
-          type: string
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: path
-        name: version
-        required: true
-        schema:
-          type: integer
-          format: int32
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/MetadataResponse"
-          description: "Returns the metadata of the specified version, which has the\
-            \ supplied names and id"
-      summary: Get metadata for a specific version of an object
-      tags:
-      - CentralRepository
-components:
-  schemas:
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    MetadataListResponse:
-      type: object
-      properties:
-        items:
-          type: array
-          items:
-            $ref: "#/components/schemas/MetadataResponse"
-    MetadataRequest:
-      type: object
-      properties:
-        category:
-          type: string
-        changeLog:
-          type: string
-        contact:
-          type: string
-        description:
-          type: string
-        name:
-          type: string
-        tags:
-          type: array
-          items:
-            type: string
-            pattern: "^(?!\\s*$)[^,]+$"
-      required:
-      - category
-      - name
-    MetadataResponse:
-      type: object
-      properties:
-        category:
-          type: string
-        changeLog:
-          type: string
-        contact:
-          type: string
-        contentType:
-          type: string
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-        deletedAt:
-          type: string
-          format: date-time
-        deletedBy:
-          type: string
-        description:
-          type: string
-        id:
-          type: integer
-          format: int64
-        moduleName:
-          type: string
-        name:
-          type: string
-        objectName:
-          type: string
-        tags:
-          type: array
-          items:
-            type: string
-        version:
-          type: integer
-          format: int32
-      required:
-      - category
-      - contentType
-      - createdAt
-      - createdBy
-      - id
-      - moduleName
-      - name
-      - objectName
-      - tags
-      - version
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    StreamingResponseBody:
-      type: object
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
-    VersionFilterType:
-      type: string
-      enum:
-      - ALL
-      - NEWEST
diff --git a/backend/chat-management/openApi.json b/backend/chat-management/openApi.json
new file mode 100644
index 000000000..2e08a3cfc
--- /dev/null
+++ b/backend/chat-management/openApi.json
@@ -0,0 +1,513 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is the API for the chat-management module",
+    "title" : "Chat Management Module API",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8088"
+  } ],
+  "paths" : {
+    "/feature-toggles" : {
+      "get" : {
+        "operationId" : "getFeatureToggles",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFeatureTogglesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ChatFeatureToggles" ]
+      }
+    },
+    "/test-helper/enabled-new-features/{featureToDisable}" : {
+      "delete" : {
+        "operationId" : "disableNewFeature",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "featureToDisable",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/ChatFeature"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/enabled-new-features/{featureToEnable}" : {
+      "post" : {
+        "operationId" : "enableNewFeature",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "featureToEnable",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/ChatFeature"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/user-settings" : {
+      "get" : {
+        "operationId" : "getOrCreateDefaultUserSettings",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "userId",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/UserSettingsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "UserSettings" ]
+      },
+      "post" : {
+        "operationId" : "createOrUpdateUserSettings",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UserSettingsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/UserSettingsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "UserSettings" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ChatFeature" : {
+        "type" : "string",
+        "enum" : [ "CHAT_BASE" ]
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "GetFeatureTogglesResponse" : {
+        "required" : [ "disabledOldFeatures", "enabledNewFeatures" ],
+        "type" : "object",
+        "properties" : {
+          "disabledOldFeatures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ChatFeature"
+            }
+          },
+          "enabledNewFeatures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ChatFeature"
+            }
+          }
+        }
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      },
+      "UserSettingsRequest" : {
+        "required" : [ "userId" ],
+        "type" : "object",
+        "properties" : {
+          "accountDeactivated" : {
+            "type" : "boolean"
+          },
+          "chatConsentAsked" : {
+            "type" : "boolean"
+          },
+          "chatUsageEnabled" : {
+            "type" : "boolean"
+          },
+          "sharePresence" : {
+            "type" : "boolean"
+          },
+          "showReadConfirmation" : {
+            "type" : "boolean"
+          },
+          "showTypingNotification" : {
+            "type" : "boolean"
+          },
+          "userId" : {
+            "type" : "string"
+          }
+        }
+      },
+      "UserSettingsResponse" : {
+        "required" : [ "userId" ],
+        "type" : "object",
+        "properties" : {
+          "accountDeactivated" : {
+            "type" : "boolean"
+          },
+          "chatConsentAsked" : {
+            "type" : "boolean"
+          },
+          "chatUsageEnabled" : {
+            "type" : "boolean"
+          },
+          "sharePresence" : {
+            "type" : "boolean"
+          },
+          "showReadConfirmation" : {
+            "type" : "boolean"
+          },
+          "showTypingNotification" : {
+            "type" : "boolean"
+          },
+          "userId" : {
+            "type" : "string"
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/backend/chat-management/openApi.yaml b/backend/chat-management/openApi.yaml
deleted file mode 100644
index 88a7d282d..000000000
--- a/backend/chat-management/openApi.yaml
+++ /dev/null
@@ -1,385 +0,0 @@
-# Copyright 2025 cronn GmbH
-# SPDX-License-Identifier: AGPL-3.0-only
-
-openapi: 3.0.1
-info:
-  description: This is the API for the chat-management module
-  title: Chat Management Module API
-  version: "0.1"
-servers:
-- url: http://localhost:8088
-paths:
-  /feature-toggles:
-    get:
-      operationId: getFeatureToggles
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetFeatureTogglesResponse"
-          description: OK
-      tags:
-      - ChatFeatureToggles
-  /test-helper/enabled-new-features/{featureToDisable}:
-    delete:
-      operationId: disableNewFeature
-      parameters:
-      - in: path
-        name: featureToDisable
-        required: true
-        schema:
-          $ref: "#/components/schemas/ChatFeature"
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/enabled-new-features/{featureToEnable}:
-    post:
-      operationId: enableNewFeature
-      parameters:
-      - in: path
-        name: featureToEnable
-        required: true
-        schema:
-          $ref: "#/components/schemas/ChatFeature"
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /user-settings:
-    get:
-      operationId: getOrCreateDefaultUserSettings
-      parameters:
-      - in: query
-        name: userId
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/UserSettingsResponse"
-          description: OK
-      tags:
-      - UserSettings
-    post:
-      operationId: createOrUpdateUserSettings
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UserSettingsRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/UserSettingsResponse"
-          description: OK
-      tags:
-      - UserSettings
-components:
-  schemas:
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    ChatFeature:
-      type: string
-      enum:
-      - CHAT_BASE
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    GetFeatureTogglesResponse:
-      type: object
-      properties:
-        disabledOldFeatures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ChatFeature"
-          uniqueItems: true
-        enabledNewFeatures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ChatFeature"
-          uniqueItems: true
-      required:
-      - disabledOldFeatures
-      - enabledNewFeatures
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
-    UserSettingsRequest:
-      type: object
-      properties:
-        accountDeactivated:
-          type: boolean
-        chatConsentAsked:
-          type: boolean
-        chatUsageEnabled:
-          type: boolean
-        sharePresence:
-          type: boolean
-        showReadConfirmation:
-          type: boolean
-        showTypingNotification:
-          type: boolean
-        userId:
-          type: string
-      required:
-      - userId
-    UserSettingsResponse:
-      type: object
-      properties:
-        accountDeactivated:
-          type: boolean
-        chatConsentAsked:
-          type: boolean
-        chatUsageEnabled:
-          type: boolean
-        sharePresence:
-          type: boolean
-        showReadConfirmation:
-          type: boolean
-        showTypingNotification:
-          type: boolean
-        userId:
-          type: string
-      required:
-      - userId
diff --git a/backend/dental/openApi.json b/backend/dental/openApi.json
new file mode 100644
index 000000000..2d20461f4
--- /dev/null
+++ b/backend/dental/openApi.json
@@ -0,0 +1,6399 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is the api for the dental module",
+    "title" : "Dental Api",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8098"
+  } ],
+  "paths" : {
+    "/approval-requests/{approvalRequestId}" : {
+      "get" : {
+        "operationId" : "getApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/approval-requests/{approvalRequestId}/decision" : {
+      "put" : {
+        "operationId" : "decideApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/Decision"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/archiving/config" : {
+      "get" : {
+        "operationId" : "getArchivingConfiguration",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetArchivingConfigurationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get archiving configuration",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/procedures" : {
+      "get" : {
+        "operationId" : "getArchivableProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `procedureType` is submitted, only procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `closedAtDay` is set, only procedures are returned which were closed at that date\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "closedAtDay",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `defaultArchivingRelevance` is submitted, only procedures are returned which have one of the submitted default archiving relevances.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "defaultArchivingRelevance",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ArchivingRelevance"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CLOSED_AT`: Sorting by closedAt attribute\n- `PROCEDURE_TYPE`: Sorting by procedureType attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetArchivableProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetArchivableProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetArchivableProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get archivable procedures",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/procedures/bulk-update-archiving-relevance" : {
+      "post" : {
+        "operationId" : "bulkUpdateProceduresArchivingRelevance",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/BulkUpdateProceduresArchivingRelevanceRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/BulkUpdateProceduresArchivingRelevanceResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Bulk update procedures archiving relevance",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/relevant-procedures" : {
+      "get" : {
+        "operationId" : "getRelevantArchivableProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `closedAtDay` is set, only procedures are returned which were closed at that date\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "closedAtDay",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `exported` is true, only procedures are returned which have already been exported.\n- If `exported` is false, only procedures are returned which have not been exported, yet.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "exported",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CLOSED_AT`: Sorting by closedAt attribute\n- `EXPORTED_AT`: Sorting by exportedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetRelevantArchivableProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetRelevantArchivableProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRelevantArchivableProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get relevant archivable procedures",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/relevant-procedures/export" : {
+      "post" : {
+        "operationId" : "exportRelevantProcedures",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ExportArchivingRelevantProceduresRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/children" : {
+      "get" : {
+        "operationId" : "getChildren",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "yearFilter",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1900,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "institutionIdFilter",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "groupNameFilter",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ChildSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "searchFirstName",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "searchLastName",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "searchDateOfBirth",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetChildrenResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Child" ]
+      },
+      "post" : {
+        "operationId" : "createChild",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateChildRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CreateChildResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Child" ]
+      }
+    },
+    "/children/by-person-id" : {
+      "get" : {
+        "operationId" : "getChildrenByPerson",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "personId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetChildrenWithDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Child" ]
+      }
+    },
+    "/children/examination/{examinationId}" : {
+      "get" : {
+        "operationId" : "getExamination",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "examinationId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Examination"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Child" ]
+      },
+      "put" : {
+        "operationId" : "updateExamination",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "examinationId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateExaminationRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Examination"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Child" ]
+      }
+    },
+    "/children/import/{institutionId}" : {
+      "post" : {
+        "operationId" : "importXlsx",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "institutionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "schoolYear",
+          "required" : true,
+          "schema" : {
+            "minimum" : 1900,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  }
+                },
+                "required" : [ "file" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "object"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Upload an XLSX file to create multiple children.",
+        "tags" : [ "Child" ]
+      }
+    },
+    "/children/institutions/{institutionId}/children" : {
+      "get" : {
+        "operationId" : "searchChildren",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "institutionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "searchString",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SearchChildrenResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Child" ]
+      }
+    },
+    "/children/institutions/{institutionId}/groups" : {
+      "get" : {
+        "operationId" : "getInstitutionGroups",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "institutionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInstitutionGroupsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Child" ]
+      }
+    },
+    "/children/school-year" : {
+      "post" : {
+        "operationId" : "closeSchoolYear",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Child" ]
+      }
+    },
+    "/children/{childId}" : {
+      "get" : {
+        "operationId" : "getChild",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "childId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ChildDetails"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Child" ]
+      },
+      "put" : {
+        "operationId" : "updateChild",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "childId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateChildRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ChildDetails"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Child" ]
+      }
+    },
+    "/files/{fileId}" : {
+      "delete" : {
+        "operationId" : "deleteFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Soft deletes the specified file",
+        "tags" : [ "File" ]
+      },
+      "get" : {
+        "operationId" : "getFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/Image"
+                  }, {
+                    "$ref" : "#/components/schemas/Mail"
+                  }, {
+                    "$ref" : "#/components/schemas/Pdf"
+                  } ]
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Retrieves the meta data of the specified file",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/deletion-request" : {
+      "post" : {
+        "operationId" : "requestFileDeletion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateApprovalRequestRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Request deletion of a file entry",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/download" : {
+      "get" : {
+        "operationId" : "downloadFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/meta-data" : {
+      "put" : {
+        "operationId" : "updateFileMetaData",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "oneOf" : [ {
+                  "$ref" : "#/components/schemas/ImageMetaData"
+                }, {
+                  "$ref" : "#/components/schemas/MailMetaData"
+                }, {
+                  "$ref" : "#/components/schemas/PdfMetaData"
+                } ]
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/Image"
+                  }, {
+                    "$ref" : "#/components/schemas/Mail"
+                  }, {
+                    "$ref" : "#/components/schemas/Pdf"
+                  } ]
+                }
+              }
+            },
+            "description" : "Updated file"
+          }
+        },
+        "summary" : "Updates the meta data of the specified file",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/meta-data/history" : {
+      "get" : {
+        "operationId" : "getMetaDataHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetMetaDataHistoryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "File" ]
+      }
+    },
+    "/gdpr-validation-tasks" : {
+      "get" : {
+        "operationId" : "getAllGdprValidationTasks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "status",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAllValidationTasksResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all GDPR validation tasks",
+        "tags" : [ "GdprValidationTask" ]
+      },
+      "post" : {
+        "operationId" : "addGdprValidationTask",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddGdprValidationTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "Add a GDPR validation task"
+          }
+        },
+        "summary" : "Add a GDPR validation task",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/notification-banner" : {
+      "get" : {
+        "operationId" : "getGdprNotificationBanner",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprNotificationBannerResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get data for GDPR notification banner",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}" : {
+      "delete" : {
+        "operationId" : "deleteGdprValidationTaskAndDownloadPackages",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/DeleteDownloadPackagesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the GDPR validation task with gdprProcedureId and GDPR download packages with ids from request",
+        "tags" : [ "GdprValidationTask" ]
+      },
+      "get" : {
+        "operationId" : "getGdprValidationTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprValidationTaskResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get Gdpr Validation Task by Gdpr Procedure Id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures" : {
+      "get" : {
+        "operationId" : "getGdprValidationTaskDetails",
+        "parameters" : [ {
+          "description" : "The Id of the GDPR procedure.",
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprValidationTaskDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a GDPR validation task by id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}" : {
+      "delete" : {
+        "operationId" : "deleteBusinessProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "businessProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the businessProcedure with businessProcedureId for validationTask with gdprProcedureId with type right of erasure",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}/downloadPackage" : {
+      "post" : {
+        "operationId" : "addDownloadPackage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "businessProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Creates a downloadPackage for validationTask with gdprProcedureId with the data from the procedure with businessProcedureId",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/close" : {
+      "post" : {
+        "operationId" : "closeGdprValidationTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Close a GDPR validation task"
+          }
+        },
+        "summary" : "Close a GDPR validation task",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/download-packages" : {
+      "get" : {
+        "operationId" : "getGdprDownloadPackagesInfo",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprDownloadPackagesInfoResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get approved Gdpr Download Packages by Gdpr Procedure Id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}" : {
+      "get" : {
+        "operationId" : "getGdprDownloadPackage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "downloadId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get Gdpr Download Package by the gdprProcedureId and its downloadId",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/inbox-procedures" : {
+      "get" : {
+        "description" : "Get all inbox procedures with filter, sort, and pagination options\n",
+        "operationId" : "getInboxProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `inboxProcedureType` is submitted, only inbox procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "inboxProcedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If true, inbox procedures which have no type are returned in addition to the types specified by 'inboxProcedureType'.\n- If false or not submitted, inbox procedures which have no type are not returned.\n",
+          "in" : "query",
+          "name" : "includeUntyped",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `inboxProcedureStatus` is submitted, only inbox procedures are returned which have one of the submitted statuses.\n- If not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "inboxProcedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InboxProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CREATED_AT`: Sorting by createdAt attribute\n- `MODIFIED_AT`: Sorting by modifiedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetInboxProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetInboxProceduresSortOrder"
+          }
+        }, {
+          "description" : "Number of the requested page",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        }, {
+          "description" : "Amount of requested inbox procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInboxProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get inbox procedures",
+        "tags" : [ "InboxProcedure" ]
+      },
+      "post" : {
+        "description" : "Creates an inbox procedure with an optional file upload.\n\n       Permitted file formats:\n        - Image formats: jpeg, png\n        - PDF formats: pdf/a\n        - Mail formats: eml",
+        "operationId" : "addInboxProcedure",
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "createInboxProcedureRequest" : {
+                    "$ref" : "#/components/schemas/CreateInboxProcedureRequest"
+                  },
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  }
+                },
+                "required" : [ "createInboxProcedureRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InboxProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add inbox procedure",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/inbox-procedures/{inboxProcedureId}" : {
+      "get" : {
+        "operationId" : "getInboxProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inboxProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInboxProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get inbox procedure with detailed information",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/inbox-procedures/{inboxProcedureId}/inbox-procedure-status" : {
+      "put" : {
+        "operationId" : "updateInboxProcedureStatus",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inboxProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InboxProcedureStatus"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InboxProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update status of inbox procedure",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/procedure-metrics" : {
+      "get" : {
+        "operationId" : "getProcedureMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of procedures"
+          }
+        },
+        "summary" : "Get procedure metrics for procedures created in the given time range",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures" : {
+      "get" : {
+        "description" : "GET operation for retrieving basic information of procedures for the procedure overview.\n",
+        "operationId" : "getProcedures",
+        "parameters" : [ {
+          "description" : "Only procedures are returned where the assigneeId of at least one task equals the `assignedToId`.\nIf not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "assignedToId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureType` is submitted, only procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CREATED_AT`: Sorting by createdAt attribute\n- `MODIFIED_AT`: Sorting by modifiedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/check-file-state-usage" : {
+      "post" : {
+        "operationId" : "checkFileStateUsage",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CheckFileStateUsageRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CheckFileStateUsageResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Identify which file state IDs are still used by active procedures.",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/recent" : {
+      "get" : {
+        "operationId" : "getRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "userId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/recent/self" : {
+      "get" : {
+        "operationId" : "getSelfRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the current users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for the current user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/search" : {
+      "get" : {
+        "operationId" : "searchProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "query",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}" : {
+      "get" : {
+        "operationId" : "getDetailedProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetDetailedProcedureResponse"
+                }
+              }
+            },
+            "description" : "a single procedure with details"
+          }
+        },
+        "summary" : "Get a single procedure with details",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}/approval-requests" : {
+      "get" : {
+        "operationId" : "getApprovalRequests",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureApprovalRequestsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all approval requests related to this procedure",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}/files" : {
+      "get" : {
+        "description" : "This returns all relevant (highest version per keydocument type and non-deleted) files sorted by descending creation date.\nThat is:\n * if an progress entry has a keydocument type set, then its files are only returned if it also has the highest keydocument version of the respective key document type.\n * if an progress entry does not have a keydocument type, then its files are always returned.\n",
+        "operationId" : "getProcedureFileDetails",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureFileDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get relevant procedure files",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries" : {
+      "get" : {
+        "operationId" : "getProgressEntries",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Filter on progressEntryType",
+          "in" : "query",
+          "name" : "progressEntryType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        }, {
+          "description" : "Filter on child class of progressEntry",
+          "in" : "query",
+          "name" : "progressEntryClass",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProgressEntryClass"
+            }
+          }
+        }, {
+          "description" : "If `initiatedBy` is set with a `userId` then the following is returned:\n* Only progressEntries with `createdBy`=`userId` in case `ManualProgressEntry` or `ProcessedInboxProgressEntry`\n* Only progressEntries with `triggeredBy`=`userId` in case `SystemProgressEntry`\n",
+          "in" : "query",
+          "name" : "initiatedBy",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "description" : "Filter on triggerType.\nIf this is set, only SystemProgressEntries are returned since only SystemProgressEntries have this attribute.\n",
+          "in" : "query",
+          "name" : "triggerType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TriggerType"
+            }
+          }
+        }, {
+          "description" : "Sorting on either modifiedAt or createdAt ",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProgressEntrySortBy"
+          }
+        }, {
+          "description" : "Sorting order. Possible options  \"ASC\" for ascending and \"DESC\" for descending.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProgressEntrySortOrder"
+          }
+        }, {
+          "description" : "Maximum number of elements to return",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Index of page to be returned",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProgressEntriesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get list of procedure's progress entries",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "post" : {
+        "description" : "Creates a manual progress entry with an optional file upload.\n\n       Permitted file formats:\n        - Image formats: jpeg, png\n        - PDF formats: pdf/a\n        - Mail formats: eml",
+        "operationId" : "addProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "createManualProgressEntryRequest" : {
+                    "$ref" : "#/components/schemas/CreateManualProgressEntryRequest"
+                  },
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  }
+                },
+                "required" : [ "createManualProgressEntryRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ManualProgressEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}" : {
+      "delete" : {
+        "operationId" : "removeProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Remove a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "get" : {
+        "operationId" : "getProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProgressEntryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a progress entry",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "patch" : {
+        "operationId" : "patchProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchManualProgressEntryRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ManualProgressEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modify a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}/deletion-request" : {
+      "post" : {
+        "operationId" : "requestProgressEntryDeletion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateApprovalRequestRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Request deletion of a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}/history" : {
+      "get" : {
+        "operationId" : "getManualProgressEntryHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetManualProgressEntryHistoryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the history of a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/prophylaxis-sessions" : {
+      "get" : {
+        "operationId" : "getProphylaxisSessions",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProphylaxisSessionSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "institutionIdFilter",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "typeFilter",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProphylaxisType"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProphylaxisSessionResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ProphylaxisSession" ]
+      },
+      "post" : {
+        "operationId" : "createProphylaxisSession",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateProphylaxisSessionRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CreateProphylaxisSessionResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ProphylaxisSession" ]
+      }
+    },
+    "/prophylaxis-sessions/{prophylaxisSessionId}" : {
+      "get" : {
+        "operationId" : "getProphylaxisSession",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "prophylaxisSessionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ProphylaxisSessionDetails"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ProphylaxisSession" ]
+      },
+      "put" : {
+        "operationId" : "updateProphylaxisSession",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "prophylaxisSessionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateProphylaxisSessionRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ProphylaxisSessionDetails"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ProphylaxisSession" ]
+      }
+    },
+    "/prophylaxis-sessions/{prophylaxisSessionId}/examinations" : {
+      "patch" : {
+        "operationId" : "updateProphylaxisSessionExaminations",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "prophylaxisSessionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateProphylaxisSessionExaminationsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ProphylaxisSessionDetails"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ProphylaxisSession" ]
+      }
+    },
+    "/prophylaxis-sessions/{prophylaxisSessionId}/participants" : {
+      "put" : {
+        "operationId" : "updateProphylaxisSessionParticipants",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "prophylaxisSessionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateProphylaxisSessionParticipantsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ProphylaxisSessionDetails"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ProphylaxisSession" ]
+      }
+    },
+    "/statistics/procedure-ids" : {
+      "post" : {
+        "operationId" : "getProcedureIds",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetProcedureIdsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureIdsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get procedure ids for procedure references",
+        "tags" : [ "StatisticsProcedureReference" ]
+      }
+    },
+    "/task-metrics" : {
+      "get" : {
+        "operationId" : "getTaskMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTaskMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of a specific procedure type"
+          }
+        },
+        "summary" : "Get tasks metrics for a procedure type of a business module for procedures created in the given time range",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks" : {
+      "get" : {
+        "operationId" : "getTasks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "assigneeId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "assignedById",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "taskTypes",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "taskStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortBy"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortOrder"
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TaskResponse"
+                }
+              }
+            },
+            "description" : "tasks"
+          }
+        },
+        "summary" : "Get tasks",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/dashboard" : {
+      "get" : {
+        "operationId" : "getTasksForDashboard",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TaskResponse"
+                }
+              }
+            },
+            "description" : "tasks"
+          }
+        },
+        "summary" : "Get tasks for the dashboard",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/team-view" : {
+      "get" : {
+        "description" : "Returns all _open_ tasks per module group member.",
+        "operationId" : "getTasksByAssignee",
+        "parameters" : [ {
+          "description" : "If provided, `assignee` must be member of the module group.\nIf not provided, all tasks for all members of the module group are returned.\n",
+          "in" : "query",
+          "name" : "assigneeId",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTaskByUserResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/{taskId}/assignment" : {
+      "put" : {
+        "operationId" : "assignTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "taskId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AssignTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Task"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/{taskId}/self-assignment" : {
+      "put" : {
+        "operationId" : "selfAssignTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "taskId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SelfAssignTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Task"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population/children" : {
+      "post" : {
+        "operationId" : "populateChildren",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PopulationRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ChildrenPopulationResult"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population/prophylaxis-sessions" : {
+      "post" : {
+        "operationId" : "populateProphylaxisSessions",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PopulationRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ProphylaxisSessionPopulationResult"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "AbsenceExaminationResult" : {
+        "required" : [ "reasonForAbsence" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/DentalExaminationResult"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "reasonForAbsence" : {
+              "$ref" : "#/components/schemas/ReasonForAbsence"
+            }
+          }
+        } ]
+      },
+      "AbstractFile" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFileReference"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "createdAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "fileName" : {
+              "type" : "string"
+            },
+            "fileSizeBytes" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "fileType" : {
+              "$ref" : "#/components/schemas/FileType"
+            },
+            "locked" : {
+              "type" : "boolean"
+            },
+            "modifiedAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/ApprovalRequestEntity"
+        } ]
+      },
+      "AbstractFileReference" : {
+        "required" : [ "@type", "deletable", "deleted", "fileId" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "deletable" : {
+            "type" : "boolean"
+          },
+          "deleted" : {
+            "type" : "boolean"
+          },
+          "fileId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "AddGdprValidationTaskRequest" : {
+        "required" : [ "gdprProcedureId", "startedAt", "type" ],
+        "type" : "object",
+        "properties" : {
+          "gdprProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "startedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }
+      },
+      "Address" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AnnualInstitution" : {
+        "required" : [ "childId", "group", "institution", "year" ],
+        "type" : "object",
+        "properties" : {
+          "childId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "group" : {
+            "type" : "string"
+          },
+          "institution" : {
+            "$ref" : "#/components/schemas/Institution"
+          },
+          "year" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "ApprovalRequest" : {
+        "required" : [ "approvalRequestId", "createdAt", "createdBy", "operation", "reason", "status" ],
+        "type" : "object",
+        "properties" : {
+          "approvalRequestId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decidedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "decidedBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decision" : {
+            "$ref" : "#/components/schemas/Decision"
+          },
+          "entity" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/ManualProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "operation" : {
+            "$ref" : "#/components/schemas/Operation"
+          },
+          "reason" : {
+            "type" : "string"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ApprovalRequestStatus"
+          }
+        }
+      },
+      "ApprovalRequestEntity" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ApprovalRequestStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "ArchivingDetails" : {
+        "required" : [ "archivingPeriodYears", "archivingRelevance" ],
+        "type" : "object",
+        "properties" : {
+          "archivingPeriodYears" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          }
+        }
+      },
+      "ArchivingRelevance" : {
+        "type" : "string",
+        "enum" : [ "DEFAULT", "RELEVANT", "IRRELEVANT" ]
+      },
+      "ArchivingRelevanceSettings" : {
+        "required" : [ "archivingRelevance", "defaultArchivingRelevance" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "defaultArchivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          }
+        }
+      },
+      "AssignTaskRequest" : {
+        "required" : [ "assignee", "taskVersion" ],
+        "type" : "object",
+        "properties" : {
+          "assignee" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "taskVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "BulkUpdateProceduresArchivingRelevanceRequest" : {
+        "required" : [ "archivingRelevance", "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "BulkUpdateProceduresArchivingRelevanceResponse" : {
+        "required" : [ "archivingRelevance", "failedProcedures", "updatedProcedures" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "failedProcedures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "updatedProcedures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "BusinessModule" : {
+        "type" : "string",
+        "enum" : [ "INSPECTION", "SCHOOL_ENTRY", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY", "DENTAL", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "BusinessProcedureInclusionStatus" : {
+        "type" : "string",
+        "enum" : [ "INCLUDED", "UNDECIDED" ]
+      },
+      "BusinessProcedureWithInclusionStatus" : {
+        "required" : [ "businessProcedure", "inclusionStatus" ],
+        "type" : "object",
+        "properties" : {
+          "businessProcedure" : {
+            "$ref" : "#/components/schemas/Procedure"
+          },
+          "inclusionStatus" : {
+            "$ref" : "#/components/schemas/BusinessProcedureInclusionStatus"
+          }
+        }
+      },
+      "CheckFileStateUsageRequest" : {
+        "required" : [ "fileStatesIds" ],
+        "type" : "object",
+        "properties" : {
+          "fileStatesIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "CheckFileStateUsageResponse" : {
+        "required" : [ "inUse" ],
+        "type" : "object",
+        "properties" : {
+          "inUse" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "Child" : {
+        "required" : [ "dateOfBirth", "firstName", "gender", "groupName", "id", "institution", "lastName", "status", "year" ],
+        "type" : "object",
+        "properties" : {
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "groupName" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "institution" : {
+            "$ref" : "#/components/schemas/Institution"
+          },
+          "lastName" : {
+            "type" : "string"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "year" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "ChildDetails" : {
+        "required" : [ "dateOfBirth", "emailAddresses", "examinations", "fileStateId", "fileStateOutdated", "firstName", "fluoridationConsents", "gender", "groupName", "id", "institutions", "lastName", "phoneNumbers", "salutation", "status", "version", "year" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "items" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string"
+            }
+          },
+          "examinations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Examination"
+            }
+          },
+          "fileStateId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "fileStateOutdated" : {
+            "type" : "boolean"
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "fluoridationConsents" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/FluoridationConsent"
+            }
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "groupName" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "institutions" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AnnualInstitution"
+            }
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "year" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "ChildSearchResult" : {
+        "required" : [ "dateOfBirth", "firstName", "groupName", "id", "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "groupName" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "lastName" : {
+            "type" : "string"
+          }
+        }
+      },
+      "ChildSortKey" : {
+        "type" : "string",
+        "enum" : [ "ID", "DATE_OF_BIRTH", "FIRST_NAME", "LAST_NAME", "YEAR", "GROUP_NAME" ]
+      },
+      "ChildrenPopulationResult" : {
+        "required" : [ "children", "count" ],
+        "type" : "object",
+        "properties" : {
+          "children" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CreateChildResponse"
+            }
+          },
+          "count" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ContactDetails" : {
+        "required" : [ "contactType", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "$ref" : "#/components/schemas/InboxProcedureAddress"
+          },
+          "contactType" : {
+            "$ref" : "#/components/schemas/ContactType"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "emailAddress" : {
+            "type" : "string"
+          },
+          "facilityName" : {
+            "type" : "string"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "lastName" : {
+            "type" : "string"
+          },
+          "phoneNumber" : {
+            "type" : "string"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "$ref" : "#/components/schemas/Title"
+          }
+        }
+      },
+      "ContactType" : {
+        "type" : "string",
+        "enum" : [ "PRIVATE_PERSON", "FACILITY" ]
+      },
+      "CountryCode" : {
+        "type" : "string",
+        "description" : "List of country codes in ISO 3166-1 alpha-2 format. With custom extensions for stateless, non-standard countries, and unknown countries.",
+        "enum" : [ "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW", "XK", "UNKNOWN", "STATELESS" ]
+      },
+      "CreateApprovalRequestRequest" : {
+        "required" : [ "reason" ],
+        "type" : "object",
+        "properties" : {
+          "reason" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateChildRequest" : {
+        "required" : [ "dateOfBirth", "firstName", "groupName", "institutionId", "lastName", "year" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "items" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "groupName" : {
+            "type" : "string"
+          },
+          "institutionId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "referenceId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "year" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "CreateChildResponse" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the child.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          }
+        }
+      },
+      "CreateInboxProcedureRequest" : {
+        "required" : [ "contactDetails", "inboxProgressEntry" ],
+        "type" : "object",
+        "properties" : {
+          "contactDetails" : {
+            "$ref" : "#/components/schemas/ContactDetails"
+          },
+          "inboxProcedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "inboxProgressEntry" : {
+            "$ref" : "#/components/schemas/CreateInboxProgressEntry"
+          }
+        }
+      },
+      "CreateInboxProgressEntry" : {
+        "required" : [ "inboxProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProgressEntryType" : {
+            "$ref" : "#/components/schemas/InboxProgressEntryType"
+          },
+          "messageText" : {
+            "type" : "string"
+          },
+          "subject" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateManualProgressEntryRequest" : {
+        "required" : [ "manualProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "keyDocumentType" : {
+            "type" : "string"
+          },
+          "manualProgressEntryType" : {
+            "$ref" : "#/components/schemas/ManualProgressEntryType"
+          },
+          "note" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateProphylaxisSessionRequest" : {
+        "required" : [ "dateAndTime", "dentistIds", "groupName", "institutionId", "isScreening", "type", "zfaIds" ],
+        "type" : "object",
+        "properties" : {
+          "dateAndTime" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "dentistIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "fluoridationVarnish" : {
+            "$ref" : "#/components/schemas/FluoridationVarnish"
+          },
+          "groupName" : {
+            "type" : "string"
+          },
+          "institutionId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "isScreening" : {
+            "type" : "boolean"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/ProphylaxisType"
+          },
+          "zfaIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "CreateProphylaxisSessionResponse" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the prophylaxis session.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          }
+        }
+      },
+      "DataOrigin" : {
+        "type" : "string",
+        "description" : "A list of possible origins of Persons and Facility in the Central Files. EDIT will only be set automatically on changes. EXTERNAL is for entries that come, e.g., from the citizen portal. IMPORT is reserved for automatic imports. MANUAL shall be set for every creation or connection done by an employee.",
+        "enum" : [ "MANUAL", "EXTERNAL", "IMPORT", "EDIT" ]
+      },
+      "Decision" : {
+        "type" : "string",
+        "enum" : [ "GRANTED", "DENIED" ]
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "DeleteDownloadPackagesRequest" : {
+        "required" : [ "downloadIds" ],
+        "type" : "object",
+        "properties" : {
+          "downloadIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "DentalExaminationResult" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "DetailedFacility" : {
+        "required" : [ "facilityFileState", "facilityType" ],
+        "type" : "object",
+        "properties" : {
+          "facilityFileState" : {
+            "$ref" : "#/components/schemas/GetFacilityFileStateResponse"
+          },
+          "facilityType" : {
+            "$ref" : "#/components/schemas/FacilityType"
+          }
+        }
+      },
+      "DetailedPerson" : {
+        "required" : [ "person", "personType" ],
+        "type" : "object",
+        "properties" : {
+          "person" : {
+            "$ref" : "#/components/schemas/GetPersonFileStateResponse"
+          },
+          "personType" : {
+            "$ref" : "#/components/schemas/PersonType"
+          }
+        }
+      },
+      "DetailedTask" : {
+        "required" : [ "task" ],
+        "type" : "object",
+        "properties" : {
+          "assignedByName" : {
+            "type" : "string"
+          },
+          "assigneeName" : {
+            "type" : "string"
+          },
+          "task" : {
+            "$ref" : "#/components/schemas/Task"
+          }
+        }
+      },
+      "DomesticAddress" : {
+        "required" : [ "city", "country", "postalCode", "street" ],
+        "type" : "object",
+        "description" : "A usual domestic address.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "addressAddition" : {
+              "maxLength" : 100,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "A descriptive addition to the address.",
+              "example" : "2.OG links"
+            },
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "houseNumber" : {
+              "maxLength" : 11,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The house number of the address, including extensions.",
+              "example" : "1a"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "street" : {
+              "maxLength" : 55,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the street of the address, without the house number.",
+              "example" : "Beispielweg"
+            }
+          }
+        } ]
+      },
+      "Examination" : {
+        "required" : [ "dateAndTime", "fluoridationConsentGiven", "id", "isFluoridation", "isScreening", "prophylaxisType", "version" ],
+        "type" : "object",
+        "properties" : {
+          "dateAndTime" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "fluoridationConsentGiven" : {
+            "type" : "boolean"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "isFluoridation" : {
+            "type" : "boolean"
+          },
+          "isScreening" : {
+            "type" : "boolean"
+          },
+          "note" : {
+            "type" : "string"
+          },
+          "prophylaxisType" : {
+            "$ref" : "#/components/schemas/ProphylaxisType"
+          },
+          "result" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/AbsenceExaminationResult"
+            }, {
+              "$ref" : "#/components/schemas/FluoridationExaminationResult"
+            }, {
+              "$ref" : "#/components/schemas/ScreeningExaminationResult"
+            } ]
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ExistingUser" : {
+        "required" : [ "firstName", "lastName" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/PerformingPerson"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "firstName" : {
+              "type" : "string"
+            },
+            "lastName" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "ExportArchivingRelevantProceduresRequest" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "FacilityContactPerson" : {
+        "required" : [ "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "emailAddress" : {
+            "maxLength" : 254,
+            "minLength" : 6,
+            "type" : "string",
+            "description" : "The email addresses of the Contact Person.",
+            "example" : "mail1@address.de"
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Contact Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Contact Person.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "maxLength" : 23,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The phone number of the Contact Person.",
+            "example" : "+491234567890"
+          },
+          "role" : {
+            "maxLength" : 255,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The role of the Contact Person in the Facility.",
+            "example" : "CEO"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of the Contact Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "FacilityType" : {
+        "type" : "string",
+        "enum" : [ "SCHOOL", "INSPECTION", "DAYCARE", "HOSPITAL", "MEDICAL_PRACTICE", "REFUGEE_ACCOMMODATION", "OTHER" ]
+      },
+      "FileMetaData" : {
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          }
+        }
+      },
+      "FileType" : {
+        "type" : "string",
+        "enum" : [ "JPEG", "PNG", "PDF", "EML" ]
+      },
+      "FluoridationConsent" : {
+        "required" : [ "consented", "dateOfConsent" ],
+        "type" : "object",
+        "properties" : {
+          "consented" : {
+            "type" : "boolean"
+          },
+          "dateOfConsent" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "hasAllergy" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "FluoridationExaminationResult" : {
+        "required" : [ "fluorideVarnishApplied" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/DentalExaminationResult"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "fluorideVarnishApplied" : {
+              "type" : "boolean"
+            }
+          }
+        } ]
+      },
+      "FluoridationVarnish" : {
+        "type" : "string",
+        "enum" : [ "A", "B", "C", "D" ]
+      },
+      "GdprDownloadPackageInfo" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GdprFacility" : {
+        "required" : [ "address", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "dataTransmitterPseudonymId" : {
+              "type" : "string",
+              "description" : "The 'DatenübermittlerPseudonymId' of the MUK user",
+              "example" : "du-986b2b54ab89cf4ed674ad8c3126b966b54d4872"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Facility.",
+              "example" : "mail@address.de"
+            },
+            "name" : {
+              "maxLength" : 300,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the Facility.",
+              "example" : "123 Example Facility"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The phone number of the Facility.",
+              "example" : "+491234567890"
+            }
+          }
+        } ]
+      },
+      "GdprIdentificationData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "GdprPerson" : {
+        "required" : [ "address", "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "bpk2" : {
+              "type" : "string",
+              "description" : "The bpk2 of the BundId user",
+              "example" : "VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0"
+            },
+            "dateOfBirth" : {
+              "type" : "string",
+              "description" : "The date of birth of the Person.",
+              "format" : "date",
+              "example" : "2000-01-01"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Person.",
+              "example" : "mail@address.de"
+            },
+            "firstName" : {
+              "maxLength" : 80,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The given name(s) of the Person.",
+              "example" : "John"
+            },
+            "lastName" : {
+              "maxLength" : 120,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The last name of the Person.",
+              "example" : "Doe"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 0,
+              "type" : "string",
+              "description" : "The phone number of the Person.",
+              "example" : "+491234567890"
+            },
+            "salutation" : {
+              "$ref" : "#/components/schemas/Salutation"
+            },
+            "title" : {
+              "maxLength" : 119,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The academic title of the Person.",
+              "example" : "Prof. Dr."
+            }
+          }
+        } ]
+      },
+      "GdprProcedureType" : {
+        "type" : "string",
+        "description" : "A list of types of GDPR procedures.",
+        "enum" : [ "RIGHT_OF_ACCESS", "RIGHT_TO_ERASURE" ]
+      },
+      "GdprValidationTask" : {
+        "required" : [ "dueDate", "gdprProcedureId", "identificationData", "status", "type" ],
+        "type" : "object",
+        "properties" : {
+          "dueDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "gdprProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "identificationData" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GdprFacility"
+            }, {
+              "$ref" : "#/components/schemas/GdprPerson"
+            } ]
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }
+      },
+      "GdprValidationTaskSortKey" : {
+        "type" : "string",
+        "enum" : [ "CREATED_AT" ]
+      },
+      "GdprValidationTaskStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "Gender" : {
+        "type" : "string",
+        "description" : "The list of genders as specified in the German Personenstandsgesetz.",
+        "enum" : [ "NOT_SPECIFIED", "DIVERSE", "FEMALE", "MALE" ]
+      },
+      "GenericFileReference" : {
+        "required" : [ "@type", "deletable", "deleted", "fileId" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFileReference"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "GetAllValidationTasksResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GdprValidationTask"
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetArchivableProceduresResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetArchivableProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CLOSED_AT",
+        "enum" : [ "CLOSED_AT", "PROCEDURE_TYPE" ]
+      },
+      "GetArchivableProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetArchivingConfigurationResponse" : {
+        "required" : [ "archivingDetails", "gracePeriodMonths" ],
+        "type" : "object",
+        "properties" : {
+          "archivingDetails" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/ArchivingDetails"
+            }
+          },
+          "gracePeriodMonths" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetChildrenResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Child"
+            }
+          },
+          "totalNumberOfElements" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetChildrenWithDetailsResponse" : {
+        "required" : [ "children" ],
+        "type" : "object",
+        "properties" : {
+          "children" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Child"
+            }
+          }
+        }
+      },
+      "GetDetailedProcedureResponse" : {
+        "required" : [ "facilities", "persons", "procedure", "tasks" ],
+        "type" : "object",
+        "properties" : {
+          "facilities" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedFacility"
+            }
+          },
+          "persons" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedPerson"
+            }
+          },
+          "procedure" : {
+            "$ref" : "#/components/schemas/Procedure"
+          },
+          "tasks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedTask"
+            }
+          }
+        }
+      },
+      "GetFacilityFileStateResponse" : {
+        "required" : [ "contactPersons", "dataOrigin", "emailAddresses", "id", "name", "phoneNumbers", "referenceVersion" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Facility.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referenceFacility it is connected to.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          }
+        }
+      },
+      "GetGdprDownloadPackagesInfoResponse" : {
+        "required" : [ "downloadPackages" ],
+        "type" : "object",
+        "properties" : {
+          "downloadPackages" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GdprDownloadPackageInfo"
+            }
+          }
+        }
+      },
+      "GetGdprNotificationBannerResponse" : {
+        "required" : [ "openValidationTasksCount" ],
+        "type" : "object",
+        "properties" : {
+          "earliestDueDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "openValidationTasksCount" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetGdprValidationTaskDetailsResponse" : {
+        "required" : [ "proceduresWithStatus", "validationTask" ],
+        "type" : "object",
+        "properties" : {
+          "proceduresWithStatus" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessProcedureWithInclusionStatus"
+            }
+          },
+          "validationTask" : {
+            "$ref" : "#/components/schemas/GdprValidationTask"
+          }
+        }
+      },
+      "GetGdprValidationTaskResponse" : {
+        "required" : [ "status" ],
+        "type" : "object",
+        "properties" : {
+          "status" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          }
+        }
+      },
+      "GetInboxProcedureResponse" : {
+        "required" : [ "inboxProcedure", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProcedure" : {
+            "$ref" : "#/components/schemas/InboxProcedure"
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetInboxProceduresResponse" : {
+        "required" : [ "inboxProcedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProcedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InboxProcedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetInboxProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "CREATED_AT" ]
+      },
+      "GetInboxProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetInstitutionGroupsResponse" : {
+        "required" : [ "groups" ],
+        "type" : "object",
+        "properties" : {
+          "groups" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        }
+      },
+      "GetManualProgressEntryHistoryResponse" : {
+        "type" : "object",
+        "properties" : {
+          "manualProgressEntryHistory" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ManualProgressEntryHistory"
+            }
+          }
+        }
+      },
+      "GetMetaDataHistoryResponse" : {
+        "type" : "object",
+        "properties" : {
+          "metaDataHistory" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ImageMetaDataHistory"
+              }, {
+                "$ref" : "#/components/schemas/MailMetaDataHistory"
+              }, {
+                "$ref" : "#/components/schemas/PdfMetaDataHistory"
+              } ]
+            }
+          }
+        }
+      },
+      "GetPersonFileStateResponse" : {
+        "required" : [ "dataOrigin", "dateOfBirth", "emailAddresses", "firstName", "gender", "id", "lastName", "phoneNumbers", "referenceVersion", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "The date of birth of the Person.",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Person.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Person.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Person.",
+            "example" : "Doe"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name at birth of the Person.",
+            "example" : "Smith"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referencePerson it is connected to. Set to 'null' if unchecked.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Person.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The place of birth (without country) of the Person.",
+            "example" : "Berlin"
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "GetProcedureApprovalRequestsResponse" : {
+        "required" : [ "approvalRequests", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "approvalRequests" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ApprovalRequest"
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetProcedureFileDetailsResponse" : {
+        "required" : [ "fileDetails", "procedureId" ],
+        "type" : "object",
+        "properties" : {
+          "fileDetails" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProgressEntryReferenceFilePair"
+            }
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GetProcedureIdsRequest" : {
+        "required" : [ "procedureReferences" ],
+        "type" : "object",
+        "properties" : {
+          "procedureReferences" : {
+            "maxItems" : 200,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetProcedureIdsResponse" : {
+        "required" : [ "referenceToId" ],
+        "type" : "object",
+        "properties" : {
+          "referenceToId" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetProcedureMetricsResponse" : {
+        "required" : [ "procedureMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "procedureMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureMetric"
+            }
+          }
+        }
+      },
+      "GetProceduresResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "MODIFIED_AT", "CREATED_AT" ]
+      },
+      "GetProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetProgressEntriesResponse" : {
+        "required" : [ "progressEntries", "resolvedUsers", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "progressEntries" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ManualProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/ProcessedInboxProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/SystemProgressEntry"
+              } ]
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetProgressEntryResponse" : {
+        "required" : [ "progressEntry", "relatedKeyDocumentProgressEntries", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "progressEntry" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/ManualProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/ProcessedInboxProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/SystemProgressEntry"
+            } ]
+          },
+          "relatedKeyDocumentProgressEntries" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ManualProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/SystemProgressEntry"
+              } ]
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetProphylaxisSessionResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProphylaxisSession"
+            }
+          },
+          "totalNumberOfElements" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetRecentProceduresResponse" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          }
+        }
+      },
+      "GetRelevantArchivableProceduresResponse" : {
+        "required" : [ "fileSizeBytes", "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "fileSizeBytes" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetRelevantArchivableProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CLOSED_AT",
+        "enum" : [ "CLOSED_AT", "EXPORTED_AT" ]
+      },
+      "GetRelevantArchivableProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetTaskByUserResponse" : {
+        "required" : [ "resolvedUsers", "tasksByUser" ],
+        "type" : "object",
+        "properties" : {
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "tasksByUser" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/Task"
+              }
+            }
+          }
+        }
+      },
+      "GetTaskMetricsResponse" : {
+        "required" : [ "businessModule", "closedProcedureCount", "fastestProcedures", "procedureType", "slowestProcedures", "taskMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedProcedureCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "fastestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "slowestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "taskMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskMetric"
+            }
+          }
+        }
+      },
+      "GetTasksSortBy" : {
+        "type" : "string",
+        "enum" : [ "PRIORITY", "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "GetTasksSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "Image" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/ImageMetaData"
+            }
+          }
+        } ]
+      },
+      "ImageMetaData" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "ImageMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "imageMetaData" : {
+              "$ref" : "#/components/schemas/ImageMetaData"
+            }
+          }
+        } ]
+      },
+      "ImportStatistics" : {
+        "required" : [ "created", "duplicated", "failed", "mergeFailed", "merged", "total" ],
+        "type" : "object",
+        "properties" : {
+          "created" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "duplicated" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "failed" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "mergeFailed" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "merged" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "total" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "InboxProcedure" : {
+        "required" : [ "contactDetails", "createdAt", "createdBy", "inboxProcedureId", "inboxProcedureStatus", "inboxProgressEntry" ],
+        "type" : "object",
+        "properties" : {
+          "closedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "contactDetails" : {
+            "$ref" : "#/components/schemas/ContactDetails"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProcedureStatus" : {
+            "$ref" : "#/components/schemas/InboxProcedureStatus"
+          },
+          "inboxProcedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "inboxProgressEntry" : {
+            "$ref" : "#/components/schemas/InboxProgressEntry"
+          }
+        }
+      },
+      "InboxProcedureAddress" : {
+        "type" : "object",
+        "properties" : {
+          "addressAddition" : {
+            "type" : "string"
+          },
+          "city" : {
+            "type" : "string"
+          },
+          "country" : {
+            "type" : "string"
+          },
+          "houseNumber" : {
+            "type" : "string"
+          },
+          "postalCode" : {
+            "type" : "string"
+          },
+          "postboxNumber" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "street" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InboxProcedureStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "InboxProgressEntry" : {
+        "required" : [ "inboxProgressEntryId", "inboxProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "fileReference" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GenericFileReference"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "inboxProgressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProgressEntryType" : {
+            "$ref" : "#/components/schemas/InboxProgressEntryType"
+          },
+          "messageText" : {
+            "type" : "string"
+          },
+          "subject" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InboxProgressEntryType" : {
+        "type" : "string",
+        "enum" : [ "LETTER", "PHONE_CALL", "EMAIL" ]
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "Institution" : {
+        "required" : [ "hexColor", "id", "name" ],
+        "type" : "object",
+        "properties" : {
+          "hexColor" : {
+            "pattern" : "^#[0-9a-zA-Z]{6}$",
+            "type" : "string",
+            "description" : "Background color of the box surrounding the institution"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "KeyDocumentAwareProgressEntry" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "keyDocumentType" : {
+            "type" : "string"
+          },
+          "keyDocumentVersion" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "Mail" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt", "removedInvalidAttachments" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/MailMetaData"
+            },
+            "removedInvalidAttachments" : {
+              "type" : "integer",
+              "format" : "int32"
+            }
+          }
+        } ]
+      },
+      "MailMetaData" : {
+        "required" : [ "mailFrom", "mailTo", "messageText", "sentDate", "subject" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "mailFrom" : {
+              "type" : "string"
+            },
+            "mailTo" : {
+              "type" : "string"
+            },
+            "messageText" : {
+              "type" : "string"
+            },
+            "sentDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "subject" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "MailMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "mailMetaData" : {
+              "$ref" : "#/components/schemas/MailMetaData"
+            }
+          }
+        } ]
+      },
+      "MainResult" : {
+        "type" : "string",
+        "enum" : [ "S", "I", "D", "F", "E", "Y", "X", "Z", "T", "H", "O", "V", "N", "P", "K" ]
+      },
+      "ManualProgressEntry" : {
+        "required" : [ "createdAt", "createdBy", "locked", "manualProgressEntryType", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "keyDocumentType" : {
+              "type" : "string"
+            },
+            "keyDocumentVersion" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "locked" : {
+              "type" : "boolean"
+            },
+            "manualProgressEntryType" : {
+              "$ref" : "#/components/schemas/ManualProgressEntryType"
+            },
+            "note" : {
+              "type" : "string"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/ApprovalRequestEntity"
+        }, {
+          "$ref" : "#/components/schemas/KeyDocumentAwareProgressEntry"
+        } ]
+      },
+      "ManualProgressEntryHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "properties" : {
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "manualProgressEntry" : {
+            "$ref" : "#/components/schemas/ManualProgressEntry"
+          }
+        }
+      },
+      "ManualProgressEntryType" : {
+        "type" : "string",
+        "enum" : [ "LETTER", "PHONE_CALL", "NOTE", "EMAIL", "IMAGE", "DOCUMENT" ]
+      },
+      "MetaData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "description" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "MetaDataHistory" : {
+        "required" : [ "@type", "changedAt" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "NonExistingUser" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/PerformingPerson"
+        } ]
+      },
+      "Operation" : {
+        "type" : "string",
+        "enum" : [ "DELETE" ]
+      },
+      "OralHygieneStatus" : {
+        "type" : "string",
+        "enum" : [ "EXCELLENT", "GOOD", "POOR" ]
+      },
+      "PatchManualProgressEntryRequest" : {
+        "type" : "object",
+        "properties" : {
+          "manualProgressEntryType" : {
+            "$ref" : "#/components/schemas/ManualProgressEntryType"
+          },
+          "note" : {
+            "type" : "string",
+            "nullable" : true
+          }
+        }
+      },
+      "Pdf" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/PdfMetaData"
+            }
+          }
+        } ]
+      },
+      "PdfMetaData" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "PdfMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "pdfMetaData" : {
+              "$ref" : "#/components/schemas/PdfMetaData"
+            }
+          }
+        } ]
+      },
+      "PerformingPerson" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "PersonType" : {
+        "type" : "string",
+        "enum" : [ "PATIENT", "PARENT", "PROFESSIONAL" ]
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "PopulationRequest" : {
+        "required" : [ "numberOfEntitiesToPopulate" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfEntitiesToPopulate" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "PostboxAddress" : {
+        "required" : [ "city", "country", "postalCode", "postbox" ],
+        "type" : "object",
+        "description" : "An address which is a postbox.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "postbox" : {
+              "maxLength" : 21,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The number (or name) of the postbox.",
+              "example" : "123"
+            }
+          }
+        } ]
+      },
+      "Procedure" : {
+        "required" : [ "archivingRelevanceSettings", "businessModule", "createdAt", "modifiedAt", "procedureId", "procedureStatus", "procedureType", "summary" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevanceSettings" : {
+            "$ref" : "#/components/schemas/ArchivingRelevanceSettings"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "exportedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "procedureStatus" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "pattern" : "[a-zA-Z0-9.].+",
+            "type" : "string"
+          }
+        }
+      },
+      "ProcedureMetric" : {
+        "required" : [ "abortedCount", "businessModule", "closedCount", "inProgressCount", "openOrDraftCount", "procedureType", "totalCount" ],
+        "type" : "object",
+        "properties" : {
+          "abortedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "inProgressCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "openOrDraftCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "totalCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ProcedureStatus" : {
+        "type" : "string",
+        "enum" : [ "DRAFT", "OPEN", "IN_PROGRESS", "CLOSED", "ABORTED" ]
+      },
+      "ProcedureType" : {
+        "type" : "string",
+        "enum" : [ "REGULAR_EXAMINATION", "CAN_CHILD", "ENTRY_LEVEL", "DRAFT_CITIZEN_OFFICE_IMPORT", "DRAFT_SCHOOL_IMPORT", "INSPECTION", "TM_VACCINATION_CONSULTATION", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY_ENTRY", "MEDICAL_REGISTRY_CITIZEN_DRAFT", "MEDICAL_REGISTRY_EMPLOYEE_DRAFT", "DENTAL_CHILD", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "ProcedureWithDuration" : {
+        "required" : [ "createdAt", "id" ],
+        "type" : "object",
+        "properties" : {
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "duration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ProcessedInboxProgressEntry" : {
+        "required" : [ "createdAt", "createdBy", "inboxProcedureId", "inboxProgressEntryType", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "inboxProcedureId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "inboxProgressEntryType" : {
+              "$ref" : "#/components/schemas/InboxProgressEntryType"
+            },
+            "messageText" : {
+              "type" : "string"
+            },
+            "subject" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "ProgressEntry" : {
+        "required" : [ "@type", "createdAt", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "fileReference" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GenericFileReference"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "progressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ProgressEntryClass" : {
+        "type" : "string",
+        "enum" : [ "MANUAL_PROGRESS_ENTRY", "SYSTEM_PROGRESS_ENTRY", "PROCESSED_INBOX_PROGRESS_ENTRY" ]
+      },
+      "ProgressEntryReferenceFilePair" : {
+        "required" : [ "file", "progressEntryId" ],
+        "type" : "object",
+        "properties" : {
+          "file" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "progressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ProgressEntrySortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "ProgressEntrySortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "ProphylaxisSession" : {
+        "required" : [ "dateAndTime", "groupName", "id", "institution", "isScreening", "type" ],
+        "type" : "object",
+        "properties" : {
+          "dateAndTime" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "fluoridationVarnish" : {
+            "$ref" : "#/components/schemas/FluoridationVarnish"
+          },
+          "groupName" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "institution" : {
+            "$ref" : "#/components/schemas/Institution"
+          },
+          "isScreening" : {
+            "type" : "boolean"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/ProphylaxisType"
+          }
+        }
+      },
+      "ProphylaxisSessionChildExamination" : {
+        "required" : [ "childId", "dateOfBirth", "examinationId", "examinationVersion", "firstName", "groupName", "lastName", "previousExaminationResults" ],
+        "type" : "object",
+        "properties" : {
+          "childId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "examinationId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "examinationVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "fluoridationConsentGiven" : {
+            "type" : "boolean"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "groupName" : {
+            "type" : "string"
+          },
+          "lastName" : {
+            "type" : "string"
+          },
+          "note" : {
+            "type" : "string"
+          },
+          "previousExaminationResults" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/AbsenceExaminationResult"
+              }, {
+                "$ref" : "#/components/schemas/FluoridationExaminationResult"
+              }, {
+                "$ref" : "#/components/schemas/ScreeningExaminationResult"
+              } ]
+            }
+          },
+          "result" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/AbsenceExaminationResult"
+            }, {
+              "$ref" : "#/components/schemas/FluoridationExaminationResult"
+            }, {
+              "$ref" : "#/components/schemas/ScreeningExaminationResult"
+            } ]
+          }
+        }
+      },
+      "ProphylaxisSessionDetails" : {
+        "required" : [ "dateAndTime", "dentists", "groupName", "id", "institution", "isScreening", "participants", "type", "version", "zfas" ],
+        "type" : "object",
+        "properties" : {
+          "dateAndTime" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "dentists" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ExistingUser"
+              }, {
+                "$ref" : "#/components/schemas/NonExistingUser"
+              } ]
+            }
+          },
+          "fluoridationVarnish" : {
+            "$ref" : "#/components/schemas/FluoridationVarnish"
+          },
+          "groupName" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "institution" : {
+            "$ref" : "#/components/schemas/Institution"
+          },
+          "isScreening" : {
+            "type" : "boolean"
+          },
+          "participants" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProphylaxisSessionChildExamination"
+            }
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/ProphylaxisType"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "zfas" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ExistingUser"
+              }, {
+                "$ref" : "#/components/schemas/NonExistingUser"
+              } ]
+            }
+          }
+        }
+      },
+      "ProphylaxisSessionPopulationResult" : {
+        "required" : [ "count", "prophylaxisSessions" ],
+        "type" : "object",
+        "properties" : {
+          "count" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "prophylaxisSessions" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CreateProphylaxisSessionResponse"
+            }
+          }
+        }
+      },
+      "ProphylaxisSessionSortKey" : {
+        "type" : "string",
+        "enum" : [ "ID", "TYPE", "GROUP_NAME", "DATE_AND_TIME", "IS_SCREENING", "FLUORIDATION_VARNISH" ]
+      },
+      "ProphylaxisType" : {
+        "type" : "string",
+        "description" : "Type of the prophylaxis",
+        "enum" : [ "P1", "P2", "P3", "P4", "P5", "P6", "P7" ]
+      },
+      "ReasonForAbsence" : {
+        "type" : "string",
+        "enum" : [ "NOT_APPEARED", "SHIFTED", "MOVED", "REFUSED" ]
+      },
+      "Salutation" : {
+        "type" : "string",
+        "enum" : [ "NOT_SPECIFIED", "NEUTRAL", "FEMALE", "MALE" ]
+      },
+      "ScreeningExaminationResult" : {
+        "required" : [ "fluorideVarnishApplied", "toothDiagnoses" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/DentalExaminationResult"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "fluorideVarnishApplied" : {
+              "type" : "boolean"
+            },
+            "oralHygieneStatus" : {
+              "$ref" : "#/components/schemas/OralHygieneStatus"
+            },
+            "toothDiagnoses" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/ToothDiagnosis"
+              }
+            }
+          }
+        } ]
+      },
+      "SearchChildrenResponse" : {
+        "required" : [ "children" ],
+        "type" : "object",
+        "properties" : {
+          "children" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ChildSearchResult"
+            }
+          }
+        }
+      },
+      "SecondaryResult" : {
+        "type" : "string",
+        "enum" : [ "DA", "FA", "FIS", "ID", "INS", "LUE", "RET", "TR", "WR", "ZA" ]
+      },
+      "SelfAssignTaskRequest" : {
+        "required" : [ "taskVersion" ],
+        "type" : "object",
+        "properties" : {
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "taskVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "SortDirection" : {
+        "type" : "string",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "SystemProgressEntry" : {
+        "required" : [ "createdAt", "modifiedAt", "progressEntryId", "systemProgressEntryType", "triggerType" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "changeDescription" : {
+              "type" : "string"
+            },
+            "keyDocumentType" : {
+              "type" : "string"
+            },
+            "keyDocumentVersion" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "previousFileStateId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "systemProgressEntryType" : {
+              "type" : "string"
+            },
+            "triggerType" : {
+              "$ref" : "#/components/schemas/TriggerType"
+            },
+            "triggeredBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/KeyDocumentAwareProgressEntry"
+        } ]
+      },
+      "Task" : {
+        "required" : [ "businessModule", "createdAt", "isOverdue", "modifiedAt", "procedureId", "summary", "taskId", "taskStatus", "taskType", "version" ],
+        "type" : "object",
+        "properties" : {
+          "assignedById" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "assigneeId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "isOverdue" : {
+            "type" : "boolean"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "taskId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "taskStatus" : {
+            "$ref" : "#/components/schemas/TaskStatus"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "TaskMetric" : {
+        "required" : [ "moreThanTwoOccurrencesCount", "noOccurrencesCount", "oneOccurrenceCount", "taskType", "twoOccurrencesCount" ],
+        "type" : "object",
+        "properties" : {
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "moreThanTwoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "noOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "oneOccurrenceCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "twoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TaskResponse" : {
+        "required" : [ "count", "tasks" ],
+        "type" : "object",
+        "properties" : {
+          "count" : {
+            "type" : "integer",
+            "description" : "total number of tasks for this query",
+            "format" : "int64"
+          },
+          "tasks" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Task"
+            }
+          }
+        }
+      },
+      "TaskStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "TaskType" : {
+        "type" : "string",
+        "enum" : [ "BOOK_APPOINTMENT", "PERFORM_SCHOOL_ENTRY_EXAMINATION", "INSPECTION_PLANNING", "INSPECTION_EXECUTION", "INSPECTION_REPORT", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      },
+      "Title" : {
+        "type" : "string",
+        "enum" : [ "DR", "PROF", "PROF_DR" ]
+      },
+      "Tooth" : {
+        "type" : "string",
+        "enum" : [ "T11", "T12", "T13", "T14", "T15", "T16", "T17", "T18", "T21", "T22", "T23", "T24", "T25", "T26", "T27", "T28", "T31", "T32", "T33", "T34", "T35", "T36", "T37", "T38", "T41", "T42", "T43", "T44", "T45", "T46", "T47", "T48", "T51", "T52", "T53", "T54", "T55", "T61", "T62", "T63", "T64", "T65", "T71", "T72", "T73", "T74", "T75", "T81", "T82", "T83", "T84", "T85" ]
+      },
+      "ToothDiagnosis" : {
+        "required" : [ "mainResult", "tooth" ],
+        "type" : "object",
+        "properties" : {
+          "mainResult" : {
+            "$ref" : "#/components/schemas/MainResult"
+          },
+          "secondaryResult1" : {
+            "$ref" : "#/components/schemas/SecondaryResult"
+          },
+          "secondaryResult2" : {
+            "$ref" : "#/components/schemas/SecondaryResult"
+          },
+          "tooth" : {
+            "$ref" : "#/components/schemas/Tooth"
+          }
+        }
+      },
+      "TriggerType" : {
+        "type" : "string",
+        "enum" : [ "SYSTEM_AUTOMATIC", "EMPLOYEE", "CITIZEN" ]
+      },
+      "UpdateChildRequest" : {
+        "required" : [ "groupName", "institutionId", "version" ],
+        "type" : "object",
+        "properties" : {
+          "fluoridationConsent" : {
+            "$ref" : "#/components/schemas/FluoridationConsent"
+          },
+          "groupName" : {
+            "type" : "string"
+          },
+          "institutionId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "UpdateExaminationRequest" : {
+        "required" : [ "version" ],
+        "type" : "object",
+        "properties" : {
+          "note" : {
+            "type" : "string"
+          },
+          "result" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/AbsenceExaminationResult"
+            }, {
+              "$ref" : "#/components/schemas/FluoridationExaminationResult"
+            }, {
+              "$ref" : "#/components/schemas/ScreeningExaminationResult"
+            } ]
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "UpdateExaminationsInBulkRequest" : {
+        "required" : [ "id", "version" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "note" : {
+            "type" : "string"
+          },
+          "result" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/AbsenceExaminationResult"
+            }, {
+              "$ref" : "#/components/schemas/FluoridationExaminationResult"
+            }, {
+              "$ref" : "#/components/schemas/ScreeningExaminationResult"
+            } ]
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "UpdateProphylaxisSessionExaminationsRequest" : {
+        "required" : [ "examinationUpdates" ],
+        "type" : "object",
+        "properties" : {
+          "examinationUpdates" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/UpdateExaminationsInBulkRequest"
+            }
+          }
+        }
+      },
+      "UpdateProphylaxisSessionParticipantsRequest" : {
+        "required" : [ "participants", "version" ],
+        "type" : "object",
+        "properties" : {
+          "participants" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "UpdateProphylaxisSessionRequest" : {
+        "required" : [ "dateAndTime", "groupName", "isScreening", "type", "version" ],
+        "type" : "object",
+        "properties" : {
+          "dateAndTime" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "fluoridationVarnish" : {
+            "$ref" : "#/components/schemas/FluoridationVarnish"
+          },
+          "groupName" : {
+            "type" : "string"
+          },
+          "isScreening" : {
+            "type" : "boolean"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/ProphylaxisType"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "User" : {
+        "required" : [ "enabled", "firstName", "lastName", "userId", "username" ],
+        "type" : "object",
+        "properties" : {
+          "email" : {
+            "type" : "string",
+            "description" : "The email address of a user.",
+            "example" : "example@mail.de"
+          },
+          "enabled" : {
+            "type" : "boolean",
+            "description" : "True, if the user can login",
+            "example" : false
+          },
+          "externalChatUsername" : {
+            "type" : "string",
+            "description" : "The chat username of the gematik TI-Messenger (matrix chat).",
+            "example" : "@username:server"
+          },
+          "firstName" : {
+            "type" : "string",
+            "description" : "The given name(s) of a user.",
+            "example" : "John"
+          },
+          "lastName" : {
+            "type" : "string",
+            "description" : "The last name of a user.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "type" : "string",
+            "description" : "The phone number of a user.",
+            "example" : "+491234567890"
+          },
+          "userId" : {
+            "type" : "string",
+            "description" : "The Id of the user.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "username" : {
+            "type" : "string",
+            "description" : "The username which is displayed in the application and can be used for the login.",
+            "example" : "testuser"
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/backend/dental/openApi.yaml b/backend/dental/openApi.yaml
deleted file mode 100644
index 7c2374251..000000000
--- a/backend/dental/openApi.yaml
+++ /dev/null
@@ -1,5511 +0,0 @@
-# Copyright 2025 cronn GmbH
-# SPDX-License-Identifier: Apache-2.0
-
-openapi: 3.0.1
-info:
-  description: This is the api for the dental module
-  title: Dental Api
-  version: "0.1"
-servers:
-- url: http://localhost:8098
-paths:
-  /approval-requests/{approvalRequestId}:
-    get:
-      operationId: getApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      tags:
-      - ApprovalRequest
-  /approval-requests/{approvalRequestId}/decision:
-    put:
-      operationId: decideApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/Decision"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - ApprovalRequest
-  /archiving/config:
-    get:
-      operationId: getArchivingConfiguration
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetArchivingConfigurationResponse"
-          description: OK
-      summary: Get archiving configuration
-      tags:
-      - Archiving
-  /archiving/procedures:
-    get:
-      operationId: getArchivableProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `closedAtDay` is set, only procedures are returned which were closed at that date
-          - If not submitted, no filtering takes place
-        in: query
-        name: closedAtDay
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If `defaultArchivingRelevance` is submitted, only procedures are returned which have one of the submitted default archiving relevances.
-          - If not submitted, no filtering takes place
-        in: query
-        name: defaultArchivingRelevance
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ArchivingRelevance"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CLOSED_AT`: Sorting by closedAt attribute
-          - `PROCEDURE_TYPE`: Sorting by procedureType attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetArchivableProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetArchivableProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetArchivableProceduresResponse"
-          description: OK
-      summary: Get archivable procedures
-      tags:
-      - Archiving
-  /archiving/procedures/bulk-update-archiving-relevance:
-    post:
-      operationId: bulkUpdateProceduresArchivingRelevance
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/BulkUpdateProceduresArchivingRelevanceRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/BulkUpdateProceduresArchivingRelevanceResponse"
-          description: OK
-      summary: Bulk update procedures archiving relevance
-      tags:
-      - Archiving
-  /archiving/relevant-procedures:
-    get:
-      operationId: getRelevantArchivableProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `closedAtDay` is set, only procedures are returned which were closed at that date
-          - If not submitted, no filtering takes place
-        in: query
-        name: closedAtDay
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If `exported` is true, only procedures are returned which have already been exported.
-          - If `exported` is false, only procedures are returned which have not been exported, yet.
-          - If not submitted, no filtering takes place
-        in: query
-        name: exported
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          The following sorting options are available:
-          - `CLOSED_AT`: Sorting by closedAt attribute
-          - `EXPORTED_AT`: Sorting by exportedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetRelevantArchivableProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetRelevantArchivableProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRelevantArchivableProceduresResponse"
-          description: OK
-      summary: Get relevant archivable procedures
-      tags:
-      - Archiving
-  /archiving/relevant-procedures/export:
-    post:
-      operationId: exportRelevantProcedures
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ExportArchivingRelevantProceduresRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - Archiving
-  /children:
-    get:
-      operationId: getChildren
-      parameters:
-      - in: query
-        name: yearFilter
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1900
-      - in: query
-        name: institutionIdFilter
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: groupNameFilter
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/ChildSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      - in: query
-        name: searchFirstName
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: searchLastName
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: searchDateOfBirth
-        required: false
-        schema:
-          type: string
-          format: date
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetChildrenResponse"
-          description: OK
-      tags:
-      - Child
-    post:
-      operationId: createChild
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateChildRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CreateChildResponse"
-          description: OK
-      tags:
-      - Child
-  /children/by-person-id:
-    get:
-      operationId: getChildrenByPerson
-      parameters:
-      - in: query
-        name: personId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetChildrenWithDetailsResponse"
-          description: OK
-      tags:
-      - Child
-  /children/examination/{examinationId}:
-    get:
-      operationId: getExamination
-      parameters:
-      - in: path
-        name: examinationId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Examination"
-          description: OK
-      tags:
-      - Child
-    put:
-      operationId: updateExamination
-      parameters:
-      - in: path
-        name: examinationId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateExaminationRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Examination"
-          description: OK
-      tags:
-      - Child
-  /children/import/{institutionId}:
-    post:
-      operationId: importXlsx
-      parameters:
-      - in: path
-        name: institutionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: schoolYear
-        required: true
-        schema:
-          type: integer
-          format: int32
-          minimum: 1900
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                file:
-                  type: string
-                  format: binary
-              required:
-              - file
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: object
-          description: OK
-      summary: Upload an XLSX file to create multiple children.
-      tags:
-      - Child
-  /children/institutions/{institutionId}/children:
-    get:
-      operationId: searchChildren
-      parameters:
-      - in: path
-        name: institutionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: searchString
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/SearchChildrenResponse"
-          description: OK
-      tags:
-      - Child
-  /children/institutions/{institutionId}/groups:
-    get:
-      operationId: getInstitutionGroups
-      parameters:
-      - in: path
-        name: institutionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInstitutionGroupsResponse"
-          description: OK
-      tags:
-      - Child
-  /children/school-year:
-    post:
-      operationId: closeSchoolYear
-      responses:
-        "200":
-          description: OK
-      tags:
-      - Child
-  /children/{childId}:
-    get:
-      operationId: getChild
-      parameters:
-      - in: path
-        name: childId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ChildDetails"
-          description: OK
-      tags:
-      - Child
-    put:
-      operationId: updateChild
-      parameters:
-      - in: path
-        name: childId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateChildRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ChildDetails"
-          description: OK
-      tags:
-      - Child
-  /files/{fileId}:
-    delete:
-      operationId: deleteFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Soft deletes the specified file
-      tags:
-      - File
-    get:
-      operationId: getFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/Image"
-                - $ref: "#/components/schemas/Mail"
-                - $ref: "#/components/schemas/Pdf"
-          description: OK
-      summary: Retrieves the meta data of the specified file
-      tags:
-      - File
-  /files/{fileId}/deletion-request:
-    post:
-      operationId: requestFileDeletion
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateApprovalRequestRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      summary: Request deletion of a file entry
-      tags:
-      - File
-  /files/{fileId}/download:
-    get:
-      operationId: downloadFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - File
-  /files/{fileId}/meta-data:
-    put:
-      operationId: updateFileMetaData
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              oneOf:
-              - $ref: "#/components/schemas/ImageMetaData"
-              - $ref: "#/components/schemas/MailMetaData"
-              - $ref: "#/components/schemas/PdfMetaData"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/Image"
-                - $ref: "#/components/schemas/Mail"
-                - $ref: "#/components/schemas/Pdf"
-          description: Updated file
-      summary: Updates the meta data of the specified file
-      tags:
-      - File
-  /files/{fileId}/meta-data/history:
-    get:
-      operationId: getMetaDataHistory
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetMetaDataHistoryResponse"
-          description: OK
-      tags:
-      - File
-  /gdpr-validation-tasks:
-    get:
-      operationId: getAllGdprValidationTasks
-      parameters:
-      - in: query
-        name: status
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprValidationTaskSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAllValidationTasksResponse"
-          description: OK
-      summary: Get all GDPR validation tasks
-      tags:
-      - GdprValidationTask
-    post:
-      operationId: addGdprValidationTask
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddGdprValidationTaskRequest"
-        required: true
-      responses:
-        "200":
-          description: Add a GDPR validation task
-      summary: Add a GDPR validation task
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/notification-banner:
-    get:
-      operationId: getGdprNotificationBanner
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprNotificationBannerResponse"
-          description: OK
-      summary: Get data for GDPR notification banner
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}:
-    delete:
-      operationId: deleteGdprValidationTaskAndDownloadPackages
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/DeleteDownloadPackagesRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Delete the GDPR validation task with gdprProcedureId and GDPR download
-        packages with ids from request
-      tags:
-      - GdprValidationTask
-    get:
-      operationId: getGdprValidationTask
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprValidationTaskResponse"
-          description: OK
-      summary: Get Gdpr Validation Task by Gdpr Procedure Id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures:
-    get:
-      operationId: getGdprValidationTaskDetails
-      parameters:
-      - description: The Id of the GDPR procedure.
-        in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprValidationTaskDetailsResponse"
-          description: OK
-      summary: Get a GDPR validation task by id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}:
-    delete:
-      operationId: deleteBusinessProcedure
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: businessProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Delete the businessProcedure with businessProcedureId for validationTask
-        with gdprProcedureId with type right of erasure
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}/downloadPackage:
-    post:
-      operationId: addDownloadPackage
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: businessProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Creates a downloadPackage for validationTask with gdprProcedureId with
-        the data from the procedure with businessProcedureId
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/close:
-    post:
-      operationId: closeGdprValidationTask
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Close a GDPR validation task
-      summary: Close a GDPR validation task
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/download-packages:
-    get:
-      operationId: getGdprDownloadPackagesInfo
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprDownloadPackagesInfoResponse"
-          description: OK
-      summary: Get approved Gdpr Download Packages by Gdpr Procedure Id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}:
-    get:
-      operationId: getGdprDownloadPackage
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: downloadId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get Gdpr Download Package by the gdprProcedureId and its downloadId
-      tags:
-      - GdprValidationTask
-  /inbox-procedures:
-    get:
-      description: |
-        Get all inbox procedures with filter, sort, and pagination options
-      operationId: getInboxProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `inboxProcedureType` is submitted, only inbox procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place.
-        in: query
-        name: inboxProcedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If true, inbox procedures which have no type are returned in addition to the types specified by 'inboxProcedureType'.
-          - If false or not submitted, inbox procedures which have no type are not returned.
-        in: query
-        name: includeUntyped
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          Filter logic:
-          - If `inboxProcedureStatus` is submitted, only inbox procedures are returned which have one of the submitted statuses.
-          - If not submitted, no filtering takes place.
-        in: query
-        name: inboxProcedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/InboxProcedureStatus"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CREATED_AT`: Sorting by createdAt attribute
-          - `MODIFIED_AT`: Sorting by modifiedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetInboxProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetInboxProceduresSortOrder"
-      - description: Number of the requested page
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      - description: Amount of requested inbox procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 25
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInboxProceduresResponse"
-          description: OK
-      summary: Get inbox procedures
-      tags:
-      - InboxProcedure
-    post:
-      description: |-
-        Creates an inbox procedure with an optional file upload.
-
-               Permitted file formats:
-                - Image formats: jpeg, png
-                - PDF formats: pdf/a
-                - Mail formats: eml
-      operationId: addInboxProcedure
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                createInboxProcedureRequest:
-                  $ref: "#/components/schemas/CreateInboxProcedureRequest"
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-              required:
-              - createInboxProcedureRequest
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InboxProcedure"
-          description: OK
-      summary: Add inbox procedure
-      tags:
-      - InboxProcedure
-  /inbox-procedures/{inboxProcedureId}:
-    get:
-      operationId: getInboxProcedure
-      parameters:
-      - in: path
-        name: inboxProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInboxProcedureResponse"
-          description: OK
-      summary: Get inbox procedure with detailed information
-      tags:
-      - InboxProcedure
-  /inbox-procedures/{inboxProcedureId}/inbox-procedure-status:
-    put:
-      operationId: updateInboxProcedureStatus
-      parameters:
-      - in: path
-        name: inboxProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InboxProcedureStatus"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InboxProcedure"
-          description: OK
-      summary: Update status of inbox procedure
-      tags:
-      - InboxProcedure
-  /procedure-metrics:
-    get:
-      operationId: getProcedureMetrics
-      parameters:
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureMetricsResponse"
-          description: the metrics of procedures
-      summary: Get procedure metrics for procedures created in the given time range
-      tags:
-      - Procedure
-  /procedures:
-    get:
-      description: |
-        GET operation for retrieving basic information of procedures for the procedure overview.
-      operationId: getProcedures
-      parameters:
-      - description: |
-          Only procedures are returned where the assigneeId of at least one task equals the `assignedToId`.
-          If not submitted, no filtering takes place.
-        in: query
-        name: assignedToId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: |
-          Filter logic:
-          - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CREATED_AT`: Sorting by createdAt attribute
-          - `MODIFIED_AT`: Sorting by modifiedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for user
-      tags:
-      - Procedure
-  /procedures/check-file-state-usage:
-    post:
-      operationId: checkFileStateUsage
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CheckFileStateUsageRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CheckFileStateUsageResponse"
-          description: OK
-      summary: Identify which file state IDs are still used by active procedures.
-      tags:
-      - Procedure
-  /procedures/recent:
-    get:
-      operationId: getRecentProcedures
-      parameters:
-      - in: query
-        name: userId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRecentProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for user
-      tags:
-      - Procedure
-  /procedures/recent/self:
-    get:
-      operationId: getSelfRecentProcedures
-      parameters:
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRecentProceduresResponse"
-          description: the current users recent procedures
-      summary: Get recent procedures for the current user
-      tags:
-      - Procedure
-  /procedures/search:
-    get:
-      operationId: searchProcedures
-      parameters:
-      - in: query
-        name: query
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresResponse"
-          description: OK
-      tags:
-      - Procedure
-  /procedures/{id}:
-    get:
-      operationId: getDetailedProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetDetailedProcedureResponse"
-          description: a single procedure with details
-      summary: Get a single procedure with details
-      tags:
-      - Procedure
-  /procedures/{id}/approval-requests:
-    get:
-      operationId: getApprovalRequests
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureApprovalRequestsResponse"
-          description: OK
-      summary: Get all approval requests related to this procedure
-      tags:
-      - Procedure
-  /procedures/{id}/files:
-    get:
-      description: |
-        This returns all relevant (highest version per keydocument type and non-deleted) files sorted by descending creation date.
-        That is:
-         * if an progress entry has a keydocument type set, then its files are only returned if it also has the highest keydocument version of the respective key document type.
-         * if an progress entry does not have a keydocument type, then its files are always returned.
-      operationId: getProcedureFileDetails
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureFileDetailsResponse"
-          description: OK
-      summary: Get relevant procedure files
-      tags:
-      - Procedure
-  /procedures/{procedureId}/progress-entries:
-    get:
-      operationId: getProgressEntries
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - description: Filter on progressEntryType
-        in: query
-        name: progressEntryType
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-          uniqueItems: true
-      - description: Filter on child class of progressEntry
-        in: query
-        name: progressEntryClass
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProgressEntryClass"
-          uniqueItems: true
-      - description: |
-          If `initiatedBy` is set with a `userId` then the following is returned:
-          * Only progressEntries with `createdBy`=`userId` in case `ManualProgressEntry` or `ProcessedInboxProgressEntry`
-          * Only progressEntries with `triggeredBy`=`userId` in case `SystemProgressEntry`
-        in: query
-        name: initiatedBy
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      - description: |
-          Filter on triggerType.
-          If this is set, only SystemProgressEntries are returned since only SystemProgressEntries have this attribute.
-        in: query
-        name: triggerType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TriggerType"
-          uniqueItems: true
-      - description: 'Sorting on either modifiedAt or createdAt '
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProgressEntrySortBy"
-      - description: Sorting order. Possible options  "ASC" for ascending and "DESC"
-          for descending.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProgressEntrySortOrder"
-      - description: Maximum number of elements to return
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Index of page to be returned
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProgressEntriesResponse"
-          description: OK
-      summary: Get list of procedure's progress entries
-      tags:
-      - ProgressEntry
-    post:
-      description: |-
-        Creates a manual progress entry with an optional file upload.
-
-               Permitted file formats:
-                - Image formats: jpeg, png
-                - PDF formats: pdf/a
-                - Mail formats: eml
-      operationId: addProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                createManualProgressEntryRequest:
-                  $ref: "#/components/schemas/CreateManualProgressEntryRequest"
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-              required:
-              - createManualProgressEntryRequest
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ManualProgressEntry"
-          description: OK
-      summary: Create a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}:
-    delete:
-      operationId: removeProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Remove a manual progress entry
-      tags:
-      - ProgressEntry
-    get:
-      operationId: getProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProgressEntryResponse"
-          description: OK
-      summary: Get a progress entry
-      tags:
-      - ProgressEntry
-    patch:
-      operationId: patchProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchManualProgressEntryRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ManualProgressEntry"
-          description: OK
-      summary: Modify a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}/deletion-request:
-    post:
-      operationId: requestProgressEntryDeletion
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateApprovalRequestRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      summary: Request deletion of a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}/history:
-    get:
-      operationId: getManualProgressEntryHistory
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetManualProgressEntryHistoryResponse"
-          description: OK
-      summary: Get the history of a manual progress entry
-      tags:
-      - ProgressEntry
-  /prophylaxis-sessions:
-    get:
-      operationId: getProphylaxisSessions
-      parameters:
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProphylaxisSessionSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      - in: query
-        name: institutionIdFilter
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: typeFilter
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProphylaxisType"
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProphylaxisSessionResponse"
-          description: OK
-      tags:
-      - ProphylaxisSession
-    post:
-      operationId: createProphylaxisSession
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateProphylaxisSessionRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CreateProphylaxisSessionResponse"
-          description: OK
-      tags:
-      - ProphylaxisSession
-  /prophylaxis-sessions/{prophylaxisSessionId}:
-    get:
-      operationId: getProphylaxisSession
-      parameters:
-      - in: path
-        name: prophylaxisSessionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ProphylaxisSessionDetails"
-          description: OK
-      tags:
-      - ProphylaxisSession
-    put:
-      operationId: updateProphylaxisSession
-      parameters:
-      - in: path
-        name: prophylaxisSessionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateProphylaxisSessionRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ProphylaxisSessionDetails"
-          description: OK
-      tags:
-      - ProphylaxisSession
-  /prophylaxis-sessions/{prophylaxisSessionId}/examinations:
-    patch:
-      operationId: updateProphylaxisSessionExaminations
-      parameters:
-      - in: path
-        name: prophylaxisSessionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateProphylaxisSessionExaminationsRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ProphylaxisSessionDetails"
-          description: OK
-      tags:
-      - ProphylaxisSession
-  /prophylaxis-sessions/{prophylaxisSessionId}/participants:
-    put:
-      operationId: updateProphylaxisSessionParticipants
-      parameters:
-      - in: path
-        name: prophylaxisSessionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateProphylaxisSessionParticipantsRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ProphylaxisSessionDetails"
-          description: OK
-      tags:
-      - ProphylaxisSession
-  /statistics/procedure-ids:
-    post:
-      operationId: getProcedureIds
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GetProcedureIdsRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureIdsResponse"
-          description: OK
-      summary: Get procedure ids for procedure references
-      tags:
-      - StatisticsProcedureReference
-  /task-metrics:
-    get:
-      operationId: getTaskMetrics
-      parameters:
-      - in: query
-        name: procedureType
-        required: true
-        schema:
-          $ref: "#/components/schemas/ProcedureType"
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTaskMetricsResponse"
-          description: the metrics of a specific procedure type
-      summary: Get tasks metrics for a procedure type of a business module for procedures
-        created in the given time range
-      tags:
-      - Task
-  /tasks:
-    get:
-      operationId: getTasks
-      parameters:
-      - in: query
-        name: assigneeId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: assignedById
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      - in: query
-        name: taskTypes
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskType"
-          uniqueItems: true
-      - in: query
-        name: taskStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskStatus"
-          uniqueItems: true
-      - in: query
-        name: sortKey
-        required: true
-        schema:
-          $ref: "#/components/schemas/GetTasksSortBy"
-      - in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetTasksSortOrder"
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TaskResponse"
-          description: tasks
-      summary: Get tasks
-      tags:
-      - Task
-  /tasks/dashboard:
-    get:
-      operationId: getTasksForDashboard
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TaskResponse"
-          description: tasks
-      summary: Get tasks for the dashboard
-      tags:
-      - Task
-  /tasks/team-view:
-    get:
-      description: Returns all _open_ tasks per module group member.
-      operationId: getTasksByAssignee
-      parameters:
-      - description: |
-          If provided, `assignee` must be member of the module group.
-          If not provided, all tasks for all members of the module group are returned.
-        in: query
-        name: assigneeId
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTaskByUserResponse"
-          description: OK
-      tags:
-      - Task
-  /tasks/{taskId}/assignment:
-    put:
-      operationId: assignTask
-      parameters:
-      - in: path
-        name: taskId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AssignTaskRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Task"
-          description: OK
-      tags:
-      - Task
-  /tasks/{taskId}/self-assignment:
-    put:
-      operationId: selfAssignTask
-      parameters:
-      - in: path
-        name: taskId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SelfAssignTaskRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Task"
-          description: OK
-      tags:
-      - Task
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population/children:
-    post:
-      operationId: populateChildren
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PopulationRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ChildrenPopulationResult"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population/prophylaxis-sessions:
-    post:
-      operationId: populateProphylaxisSessions
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PopulationRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ProphylaxisSessionPopulationResult"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-components:
-  schemas:
-    AbsenceExaminationResult:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/DentalExaminationResult"
-      - type: object
-        properties:
-          reasonForAbsence:
-            $ref: "#/components/schemas/ReasonForAbsence"
-      required:
-      - reasonForAbsence
-    AbstractFile:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFileReference"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          createdAt:
-            type: string
-            format: date-time
-          createdBy:
-            type: string
-            format: uuid
-          fileName:
-            type: string
-          fileSizeBytes:
-            type: integer
-            format: int32
-          fileType:
-            $ref: "#/components/schemas/FileType"
-          locked:
-            type: boolean
-          modifiedAt:
-            type: string
-            format: date-time
-      - $ref: "#/components/schemas/ApprovalRequestEntity"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    AbstractFileReference:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        deletable:
-          type: boolean
-        deleted:
-          type: boolean
-        fileId:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - deletable
-      - deleted
-      - fileId
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    AddGdprValidationTaskRequest:
-      type: object
-      properties:
-        gdprProcedureId:
-          type: string
-          format: uuid
-        startedAt:
-          type: string
-          format: date-time
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - gdprProcedureId
-      - startedAt
-      - type
-    Address:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    AnnualInstitution:
-      type: object
-      properties:
-        childId:
-          type: string
-          format: uuid
-        group:
-          type: string
-        institution:
-          $ref: "#/components/schemas/Institution"
-        year:
-          type: integer
-          format: int32
-      required:
-      - childId
-      - group
-      - institution
-      - year
-    ApprovalRequest:
-      type: object
-      properties:
-        approvalRequestId:
-          type: string
-          format: uuid
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-          format: uuid
-        decidedAt:
-          type: string
-          format: date-time
-        decidedBy:
-          type: string
-          format: uuid
-        decision:
-          $ref: "#/components/schemas/Decision"
-        entity:
-          oneOf:
-          - $ref: "#/components/schemas/ManualProgressEntry"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        operation:
-          $ref: "#/components/schemas/Operation"
-        reason:
-          type: string
-        status:
-          $ref: "#/components/schemas/ApprovalRequestStatus"
-      required:
-      - approvalRequestId
-      - createdAt
-      - createdBy
-      - operation
-      - reason
-      - status
-    ApprovalRequestEntity:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    ApprovalRequestStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    ArchivingDetails:
-      type: object
-      properties:
-        archivingPeriodYears:
-          type: integer
-          format: int32
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-      required:
-      - archivingPeriodYears
-      - archivingRelevance
-    ArchivingRelevance:
-      type: string
-      enum:
-      - DEFAULT
-      - RELEVANT
-      - IRRELEVANT
-    ArchivingRelevanceSettings:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        defaultArchivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-      required:
-      - archivingRelevance
-      - defaultArchivingRelevance
-    AssignTaskRequest:
-      type: object
-      properties:
-        assignee:
-          type: string
-          format: uuid
-        dueAt:
-          type: string
-          format: date-time
-        taskVersion:
-          type: integer
-          format: int64
-      required:
-      - assignee
-      - taskVersion
-    BulkUpdateProceduresArchivingRelevanceRequest:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        procedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 200
-          minItems: 1
-          uniqueItems: true
-      required:
-      - archivingRelevance
-      - procedures
-    BulkUpdateProceduresArchivingRelevanceResponse:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        failedProcedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-        updatedProcedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      required:
-      - archivingRelevance
-      - failedProcedures
-      - updatedProcedures
-    BusinessModule:
-      type: string
-      enum:
-      - INSPECTION
-      - SCHOOL_ENTRY
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY
-      - DENTAL
-      - OFFICIAL_MEDICAL_SERVICE
-    BusinessProcedureInclusionStatus:
-      type: string
-      enum:
-      - INCLUDED
-      - UNDECIDED
-    BusinessProcedureWithInclusionStatus:
-      type: object
-      properties:
-        businessProcedure:
-          $ref: "#/components/schemas/Procedure"
-        inclusionStatus:
-          $ref: "#/components/schemas/BusinessProcedureInclusionStatus"
-      required:
-      - businessProcedure
-      - inclusionStatus
-    CheckFileStateUsageRequest:
-      type: object
-      properties:
-        fileStatesIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-      required:
-      - fileStatesIds
-    CheckFileStateUsageResponse:
-      type: object
-      properties:
-        inUse:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - inUse
-    Child:
-      type: object
-      properties:
-        dateOfBirth:
-          type: string
-          format: date
-        firstName:
-          type: string
-        gender:
-          $ref: "#/components/schemas/Gender"
-        groupName:
-          type: string
-        id:
-          type: string
-          format: uuid
-        institution:
-          $ref: "#/components/schemas/Institution"
-        lastName:
-          type: string
-        status:
-          $ref: "#/components/schemas/ProcedureStatus"
-        year:
-          type: integer
-          format: int32
-      required:
-      - dateOfBirth
-      - firstName
-      - gender
-      - groupName
-      - id
-      - institution
-      - lastName
-      - status
-      - year
-    ChildDetails:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dateOfBirth:
-          type: string
-          format: date
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          items:
-            type: string
-            maxLength: 254
-            minLength: 6
-        examinations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Examination"
-        fileStateId:
-          type: string
-          format: uuid
-        fileStateOutdated:
-          type: boolean
-        firstName:
-          type: string
-          maxLength: 80
-          minLength: 1
-        fluoridationConsents:
-          type: array
-          items:
-            $ref: "#/components/schemas/FluoridationConsent"
-        gender:
-          $ref: "#/components/schemas/Gender"
-        groupName:
-          type: string
-        id:
-          type: string
-          format: uuid
-        institutions:
-          type: array
-          items:
-            $ref: "#/components/schemas/AnnualInstitution"
-        lastName:
-          type: string
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          maxLength: 40
-          minLength: 1
-        phoneNumbers:
-          type: array
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          maxLength: 50
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        status:
-          $ref: "#/components/schemas/ProcedureStatus"
-        title:
-          type: string
-          maxLength: 119
-          minLength: 1
-        version:
-          type: integer
-          format: int64
-        year:
-          type: integer
-          format: int32
-      required:
-      - dateOfBirth
-      - emailAddresses
-      - examinations
-      - fileStateId
-      - fileStateOutdated
-      - firstName
-      - fluoridationConsents
-      - gender
-      - groupName
-      - id
-      - institutions
-      - lastName
-      - phoneNumbers
-      - salutation
-      - status
-      - version
-      - year
-    ChildSearchResult:
-      type: object
-      properties:
-        dateOfBirth:
-          type: string
-          format: date
-        firstName:
-          type: string
-        gender:
-          $ref: "#/components/schemas/Gender"
-        groupName:
-          type: string
-        id:
-          type: string
-          format: uuid
-        lastName:
-          type: string
-      required:
-      - dateOfBirth
-      - firstName
-      - groupName
-      - id
-      - lastName
-    ChildSortKey:
-      type: string
-      enum:
-      - ID
-      - DATE_OF_BIRTH
-      - FIRST_NAME
-      - LAST_NAME
-      - YEAR
-      - GROUP_NAME
-    ChildrenPopulationResult:
-      type: object
-      properties:
-        children:
-          type: array
-          items:
-            $ref: "#/components/schemas/CreateChildResponse"
-        count:
-          type: integer
-          format: int64
-      required:
-      - children
-      - count
-    ContactDetails:
-      type: object
-      properties:
-        address:
-          $ref: "#/components/schemas/InboxProcedureAddress"
-        contactType:
-          $ref: "#/components/schemas/ContactType"
-        dateOfBirth:
-          type: string
-          format: date
-        emailAddress:
-          type: string
-        facilityName:
-          type: string
-        firstName:
-          type: string
-        lastName:
-          type: string
-        phoneNumber:
-          type: string
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          $ref: "#/components/schemas/Title"
-      required:
-      - contactType
-      - salutation
-    ContactType:
-      type: string
-      enum:
-      - PRIVATE_PERSON
-      - FACILITY
-    CountryCode:
-      type: string
-      description: "List of country codes in ISO 3166-1 alpha-2 format. With custom\
-        \ extensions for stateless, non-standard countries, and unknown countries."
-      enum:
-      - AD
-      - AE
-      - AF
-      - AG
-      - AI
-      - AL
-      - AM
-      - AO
-      - AQ
-      - AR
-      - AS
-      - AT
-      - AU
-      - AW
-      - AX
-      - AZ
-      - BA
-      - BB
-      - BD
-      - BE
-      - BF
-      - BG
-      - BH
-      - BI
-      - BJ
-      - BL
-      - BM
-      - BN
-      - BO
-      - BQ
-      - BR
-      - BS
-      - BT
-      - BV
-      - BW
-      - BY
-      - BZ
-      - CA
-      - CC
-      - CD
-      - CF
-      - CG
-      - CH
-      - CI
-      - CK
-      - CL
-      - CM
-      - CN
-      - CO
-      - CR
-      - CU
-      - CV
-      - CW
-      - CX
-      - CY
-      - CZ
-      - DE
-      - DJ
-      - DK
-      - DM
-      - DO
-      - DZ
-      - EC
-      - EE
-      - EG
-      - EH
-      - ER
-      - ES
-      - ET
-      - FI
-      - FJ
-      - FK
-      - FM
-      - FO
-      - FR
-      - GA
-      - GB
-      - GD
-      - GE
-      - GF
-      - GG
-      - GH
-      - GI
-      - GL
-      - GM
-      - GN
-      - GP
-      - GQ
-      - GR
-      - GS
-      - GT
-      - GU
-      - GW
-      - GY
-      - HK
-      - HM
-      - HN
-      - HR
-      - HT
-      - HU
-      - ID
-      - IE
-      - IL
-      - IM
-      - IN
-      - IO
-      - IQ
-      - IR
-      - IS
-      - IT
-      - JE
-      - JM
-      - JO
-      - JP
-      - KE
-      - KG
-      - KH
-      - KI
-      - KM
-      - KN
-      - KP
-      - KR
-      - KW
-      - KY
-      - KZ
-      - LA
-      - LB
-      - LC
-      - LI
-      - LK
-      - LR
-      - LS
-      - LT
-      - LU
-      - LV
-      - LY
-      - MA
-      - MC
-      - MD
-      - ME
-      - MF
-      - MG
-      - MH
-      - MK
-      - ML
-      - MM
-      - MN
-      - MO
-      - MP
-      - MQ
-      - MR
-      - MS
-      - MT
-      - MU
-      - MV
-      - MW
-      - MX
-      - MY
-      - MZ
-      - NA
-      - NC
-      - NE
-      - NF
-      - NG
-      - NI
-      - NL
-      - "NO"
-      - NP
-      - NR
-      - NU
-      - NZ
-      - OM
-      - PA
-      - PE
-      - PF
-      - PG
-      - PH
-      - PK
-      - PL
-      - PM
-      - PN
-      - PR
-      - PS
-      - PT
-      - PW
-      - PY
-      - QA
-      - RE
-      - RO
-      - RS
-      - RU
-      - RW
-      - SA
-      - SB
-      - SC
-      - SD
-      - SE
-      - SG
-      - SH
-      - SI
-      - SJ
-      - SK
-      - SL
-      - SM
-      - SN
-      - SO
-      - SR
-      - SS
-      - ST
-      - SV
-      - SX
-      - SY
-      - SZ
-      - TC
-      - TD
-      - TF
-      - TG
-      - TH
-      - TJ
-      - TK
-      - TL
-      - TM
-      - TN
-      - TO
-      - TR
-      - TT
-      - TV
-      - TW
-      - TZ
-      - UA
-      - UG
-      - UM
-      - US
-      - UY
-      - UZ
-      - VA
-      - VC
-      - VE
-      - VG
-      - VI
-      - VN
-      - VU
-      - WF
-      - WS
-      - YE
-      - YT
-      - ZA
-      - ZM
-      - ZW
-      - XK
-      - UNKNOWN
-      - STATELESS
-    CreateApprovalRequestRequest:
-      type: object
-      properties:
-        reason:
-          type: string
-      required:
-      - reason
-    CreateChildRequest:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dateOfBirth:
-          type: string
-          format: date
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          items:
-            type: string
-            maxLength: 254
-            minLength: 6
-        firstName:
-          type: string
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        groupName:
-          type: string
-        institutionId:
-          type: string
-          format: uuid
-        lastName:
-          type: string
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          maxLength: 40
-          minLength: 1
-        phoneNumbers:
-          type: array
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          maxLength: 50
-          minLength: 1
-        referenceId:
-          type: string
-          format: uuid
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          maxLength: 119
-          minLength: 1
-        year:
-          type: integer
-          format: int32
-      required:
-      - dateOfBirth
-      - firstName
-      - groupName
-      - institutionId
-      - lastName
-      - year
-    CreateChildResponse:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-          description: Id of the child.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-      required:
-      - id
-    CreateInboxProcedureRequest:
-      type: object
-      properties:
-        contactDetails:
-          $ref: "#/components/schemas/ContactDetails"
-        inboxProcedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        inboxProgressEntry:
-          $ref: "#/components/schemas/CreateInboxProgressEntry"
-      required:
-      - contactDetails
-      - inboxProgressEntry
-    CreateInboxProgressEntry:
-      type: object
-      properties:
-        inboxProgressEntryType:
-          $ref: "#/components/schemas/InboxProgressEntryType"
-        messageText:
-          type: string
-        subject:
-          type: string
-      required:
-      - inboxProgressEntryType
-    CreateManualProgressEntryRequest:
-      type: object
-      properties:
-        keyDocumentType:
-          type: string
-        manualProgressEntryType:
-          $ref: "#/components/schemas/ManualProgressEntryType"
-        note:
-          type: string
-      required:
-      - manualProgressEntryType
-    CreateProphylaxisSessionRequest:
-      type: object
-      properties:
-        dateAndTime:
-          type: string
-          format: date-time
-        dentistIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-        fluoridationVarnish:
-          $ref: "#/components/schemas/FluoridationVarnish"
-        groupName:
-          type: string
-        institutionId:
-          type: string
-          format: uuid
-        screening:
-          type: boolean
-        type:
-          $ref: "#/components/schemas/ProphylaxisType"
-        zfaIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - dateAndTime
-      - dentistIds
-      - groupName
-      - institutionId
-      - screening
-      - type
-      - zfaIds
-    CreateProphylaxisSessionResponse:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-          description: Id of the prophylaxis session.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-      required:
-      - id
-    DataOrigin:
-      type: string
-      description: "A list of possible origins of Persons and Facility in the Central\
-        \ Files. EDIT will only be set automatically on changes. EXTERNAL is for entries\
-        \ that come, e.g., from the citizen portal. IMPORT is reserved for automatic\
-        \ imports. MANUAL shall be set for every creation or connection done by an\
-        \ employee."
-      enum:
-      - MANUAL
-      - EXTERNAL
-      - IMPORT
-      - EDIT
-    Decision:
-      type: string
-      enum:
-      - GRANTED
-      - DENIED
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    DeleteDownloadPackagesRequest:
-      type: object
-      properties:
-        downloadIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - downloadIds
-    DentalExaminationResult:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    DetailedFacility:
-      type: object
-      properties:
-        facilityFileState:
-          $ref: "#/components/schemas/GetFacilityFileStateResponse"
-        facilityType:
-          $ref: "#/components/schemas/FacilityType"
-      required:
-      - facilityFileState
-      - facilityType
-    DetailedPerson:
-      type: object
-      properties:
-        person:
-          $ref: "#/components/schemas/GetPersonFileStateResponse"
-        personType:
-          $ref: "#/components/schemas/PersonType"
-      required:
-      - person
-      - personType
-    DetailedTask:
-      type: object
-      properties:
-        assignedByName:
-          type: string
-        assigneeName:
-          type: string
-        task:
-          $ref: "#/components/schemas/Task"
-      required:
-      - task
-    DomesticAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          addressAddition:
-            type: string
-            description: A descriptive addition to the address.
-            example: 2.OG links
-            maxLength: 100
-            minLength: 1
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          houseNumber:
-            type: string
-            description: "The house number of the address, including extensions."
-            example: 1a
-            maxLength: 11
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          street:
-            type: string
-            description: "The name of the street of the address, without the house\
-              \ number."
-            example: Beispielweg
-            maxLength: 55
-            minLength: 1
-      description: A usual domestic address.
-      required:
-      - city
-      - country
-      - postalCode
-      - street
-    Examination:
-      type: object
-      properties:
-        dateAndTime:
-          type: string
-          format: date-time
-        fluoridation:
-          type: boolean
-        id:
-          type: string
-          format: uuid
-        note:
-          type: string
-        prophylaxisType:
-          $ref: "#/components/schemas/ProphylaxisType"
-        result:
-          oneOf:
-          - $ref: "#/components/schemas/AbsenceExaminationResult"
-          - $ref: "#/components/schemas/FluoridationExaminationResult"
-          - $ref: "#/components/schemas/ScreeningExaminationResult"
-        screening:
-          type: boolean
-        version:
-          type: integer
-          format: int64
-      required:
-      - dateAndTime
-      - fluoridation
-      - id
-      - prophylaxisType
-      - screening
-      - version
-    ExistingUser:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/PerformingPerson"
-      - type: object
-        properties:
-          firstName:
-            type: string
-          lastName:
-            type: string
-      required:
-      - firstName
-      - lastName
-    ExportArchivingRelevantProceduresRequest:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-          uniqueItems: true
-      required:
-      - procedures
-    FacilityContactPerson:
-      type: object
-      properties:
-        emailAddress:
-          type: string
-          description: The email addresses of the Contact Person.
-          example: mail1@address.de
-          maxLength: 254
-          minLength: 6
-        firstName:
-          type: string
-          description: The given name(s) of the Contact Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: The last name of the Contact Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        phoneNumber:
-          type: string
-          description: The phone number of the Contact Person.
-          example: "+491234567890"
-          maxLength: 23
-          minLength: 1
-        role:
-          type: string
-          description: The role of the Contact Person in the Facility.
-          example: CEO
-          maxLength: 255
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of the Contact Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - lastName
-    FacilityType:
-      type: string
-      enum:
-      - SCHOOL
-      - INSPECTION
-      - DAYCARE
-      - HOSPITAL
-      - MEDICAL_PRACTICE
-      - REFUGEE_ACCOMMODATION
-      - OTHER
-    FileMetaData:
-      type: object
-      properties:
-        description:
-          type: string
-    FileType:
-      type: string
-      enum:
-      - JPEG
-      - PNG
-      - PDF
-      - EML
-    FluoridationConsent:
-      type: object
-      properties:
-        consented:
-          type: boolean
-        dateOfConsent:
-          type: string
-          format: date
-        hasAllergy:
-          type: boolean
-      required:
-      - consented
-      - dateOfConsent
-    FluoridationExaminationResult:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/DentalExaminationResult"
-      - type: object
-        properties:
-          fluorideVarnishApplied:
-            type: boolean
-      required:
-      - fluorideVarnishApplied
-    FluoridationVarnish:
-      type: string
-      enum:
-      - A
-      - B
-      - C
-      - D
-    GdprDownloadPackageInfo:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-      required:
-      - id
-    GdprFacility:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          dataTransmitterPseudonymId:
-            type: string
-            description: The 'DatenübermittlerPseudonymId' of the MUK user
-            example: du-986b2b54ab89cf4ed674ad8c3126b966b54d4872
-          emailAddress:
-            type: string
-            description: The email addresses of the Facility.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          name:
-            type: string
-            description: The name of the Facility.
-            example: 123 Example Facility
-            maxLength: 300
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Facility.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 1
-      required:
-      - address
-      - name
-    GdprIdentificationData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    GdprPerson:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          bpk2:
-            type: string
-            description: The bpk2 of the BundId user
-            example: VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0
-          dateOfBirth:
-            type: string
-            format: date
-            description: The date of birth of the Person.
-            example: 2000-01-01
-          emailAddress:
-            type: string
-            description: The email addresses of the Person.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          firstName:
-            type: string
-            description: The given name(s) of the Person.
-            example: John
-            maxLength: 80
-            minLength: 1
-          lastName:
-            type: string
-            description: The last name of the Person.
-            example: Doe
-            maxLength: 120
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Person.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 0
-          salutation:
-            $ref: "#/components/schemas/Salutation"
-          title:
-            type: string
-            description: The academic title of the Person.
-            example: Prof. Dr.
-            maxLength: 119
-            minLength: 1
-      required:
-      - address
-      - dateOfBirth
-      - firstName
-      - lastName
-    GdprProcedureType:
-      type: string
-      description: A list of types of GDPR procedures.
-      enum:
-      - RIGHT_OF_ACCESS
-      - RIGHT_TO_ERASURE
-    GdprValidationTask:
-      type: object
-      properties:
-        dueDate:
-          type: string
-          format: date
-        gdprProcedureId:
-          type: string
-          format: uuid
-        identificationData:
-          oneOf:
-          - $ref: "#/components/schemas/GdprFacility"
-          - $ref: "#/components/schemas/GdprPerson"
-        status:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - dueDate
-      - gdprProcedureId
-      - identificationData
-      - status
-      - type
-    GdprValidationTaskSortKey:
-      type: string
-      enum:
-      - CREATED_AT
-    GdprValidationTaskStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    Gender:
-      type: string
-      description: The list of genders as specified in the German Personenstandsgesetz.
-      enum:
-      - NOT_SPECIFIED
-      - DIVERSE
-      - FEMALE
-      - MALE
-    GenericFileReference:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFileReference"
-      - type: object
-        properties:
-          '@type':
-            type: string
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - deletable
-      - deleted
-      - fileId
-    GetAllValidationTasksResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/GdprValidationTask"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          minimum: 0
-      required:
-      - elements
-      - totalNumberOfElements
-    GetArchivableProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetArchivableProceduresSortBy:
-      type: string
-      default: CLOSED_AT
-      enum:
-      - CLOSED_AT
-      - PROCEDURE_TYPE
-    GetArchivableProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetArchivingConfigurationResponse:
-      type: object
-      properties:
-        archivingDetails:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/ArchivingDetails"
-        gracePeriodMonths:
-          type: integer
-          format: int32
-      required:
-      - archivingDetails
-      - gracePeriodMonths
-    GetChildrenResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/Child"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-      required:
-      - elements
-      - totalNumberOfElements
-    GetChildrenWithDetailsResponse:
-      type: object
-      properties:
-        children:
-          type: array
-          items:
-            $ref: "#/components/schemas/Child"
-      required:
-      - children
-    GetDetailedProcedureResponse:
-      type: object
-      properties:
-        facilities:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedFacility"
-        persons:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedPerson"
-        procedure:
-          $ref: "#/components/schemas/Procedure"
-        tasks:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedTask"
-      required:
-      - facilities
-      - persons
-      - procedure
-      - tasks
-    GetFacilityFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        id:
-          type: string
-          format: uuid
-          description: Id of the Facility.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referenceFacility
-            it is connected to.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-      required:
-      - contactPersons
-      - dataOrigin
-      - emailAddresses
-      - id
-      - name
-      - phoneNumbers
-      - referenceVersion
-    GetGdprDownloadPackagesInfoResponse:
-      type: object
-      properties:
-        downloadPackages:
-          type: array
-          items:
-            $ref: "#/components/schemas/GdprDownloadPackageInfo"
-      required:
-      - downloadPackages
-    GetGdprNotificationBannerResponse:
-      type: object
-      properties:
-        earliestDueDate:
-          type: string
-          format: date
-        openValidationTasksCount:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - openValidationTasksCount
-    GetGdprValidationTaskDetailsResponse:
-      type: object
-      properties:
-        proceduresWithStatus:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessProcedureWithInclusionStatus"
-        validationTask:
-          $ref: "#/components/schemas/GdprValidationTask"
-      required:
-      - proceduresWithStatus
-      - validationTask
-    GetGdprValidationTaskResponse:
-      type: object
-      properties:
-        status:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-      required:
-      - status
-    GetInboxProcedureResponse:
-      type: object
-      properties:
-        inboxProcedure:
-          $ref: "#/components/schemas/InboxProcedure"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - inboxProcedure
-      - resolvedUsers
-    GetInboxProceduresResponse:
-      type: object
-      properties:
-        inboxProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/InboxProcedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - inboxProcedures
-      - totalElements
-      - totalPages
-    GetInboxProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - CREATED_AT
-    GetInboxProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetInstitutionGroupsResponse:
-      type: object
-      properties:
-        groups:
-          type: array
-          items:
-            type: string
-      required:
-      - groups
-    GetManualProgressEntryHistoryResponse:
-      type: object
-      properties:
-        manualProgressEntryHistory:
-          type: array
-          items:
-            $ref: "#/components/schemas/ManualProgressEntryHistory"
-    GetMetaDataHistoryResponse:
-      type: object
-      properties:
-        metaDataHistory:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ImageMetaDataHistory"
-            - $ref: "#/components/schemas/MailMetaDataHistory"
-            - $ref: "#/components/schemas/PdfMetaDataHistory"
-    GetPersonFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        dateOfBirth:
-          type: string
-          format: date
-          description: The date of birth of the Person.
-          example: 2000-01-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Person.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: The given name(s) of the Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        id:
-          type: string
-          format: uuid
-          description: Id of the Person.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        lastName:
-          type: string
-          description: The last name of the Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          description: The last name at birth of the Person.
-          example: Smith
-          maxLength: 40
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referencePerson
-            it is connected to. Set to 'null' if unchecked.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Person.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          description: The place of birth (without country) of the Person.
-          example: Berlin
-          maxLength: 50
-          minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - dataOrigin
-      - dateOfBirth
-      - emailAddresses
-      - firstName
-      - gender
-      - id
-      - lastName
-      - phoneNumbers
-      - referenceVersion
-      - salutation
-    GetProcedureApprovalRequestsResponse:
-      type: object
-      properties:
-        approvalRequests:
-          type: array
-          items:
-            $ref: "#/components/schemas/ApprovalRequest"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - approvalRequests
-      - resolvedUsers
-    GetProcedureFileDetailsResponse:
-      type: object
-      properties:
-        fileDetails:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProgressEntryReferenceFilePair"
-        procedureId:
-          type: string
-          format: uuid
-      required:
-      - fileDetails
-      - procedureId
-    GetProcedureIdsRequest:
-      type: object
-      properties:
-        procedureReferences:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 200
-          minItems: 1
-      required:
-      - procedureReferences
-    GetProcedureIdsResponse:
-      type: object
-      properties:
-        referenceToId:
-          type: object
-          additionalProperties:
-            type: string
-            format: uuid
-      required:
-      - referenceToId
-    GetProcedureMetricsResponse:
-      type: object
-      properties:
-        procedureMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureMetric"
-      required:
-      - procedureMetrics
-    GetProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - MODIFIED_AT
-      - CREATED_AT
-    GetProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetProgressEntriesResponse:
-      type: object
-      properties:
-        progressEntries:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ManualProgressEntry"
-            - $ref: "#/components/schemas/ProcessedInboxProgressEntry"
-            - $ref: "#/components/schemas/SystemProgressEntry"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - progressEntries
-      - totalElements
-      - totalPages
-    GetProgressEntryResponse:
-      type: object
-      properties:
-        progressEntry:
-          oneOf:
-          - $ref: "#/components/schemas/ManualProgressEntry"
-          - $ref: "#/components/schemas/ProcessedInboxProgressEntry"
-          - $ref: "#/components/schemas/SystemProgressEntry"
-        relatedKeyDocumentProgressEntries:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ManualProgressEntry"
-            - $ref: "#/components/schemas/SystemProgressEntry"
-      required:
-      - progressEntry
-      - relatedKeyDocumentProgressEntries
-    GetProphylaxisSessionResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProphylaxisSession"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-      required:
-      - elements
-      - totalNumberOfElements
-    GetRecentProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-      required:
-      - procedures
-    GetRelevantArchivableProceduresResponse:
-      type: object
-      properties:
-        fileSizeBytes:
-          type: integer
-          format: int32
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - fileSizeBytes
-      - procedures
-      - totalElements
-      - totalPages
-    GetRelevantArchivableProceduresSortBy:
-      type: string
-      default: CLOSED_AT
-      enum:
-      - CLOSED_AT
-      - EXPORTED_AT
-    GetRelevantArchivableProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetTaskByUserResponse:
-      type: object
-      properties:
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-        tasksByUser:
-          type: object
-          additionalProperties:
-            type: array
-            items:
-              $ref: "#/components/schemas/Task"
-      required:
-      - resolvedUsers
-      - tasksByUser
-    GetTaskMetricsResponse:
-      type: object
-      properties:
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedProcedureCount:
-          type: integer
-          format: int64
-        fastestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        slowestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        taskMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskMetric"
-      required:
-      - businessModule
-      - closedProcedureCount
-      - fastestProcedures
-      - procedureType
-      - slowestProcedures
-      - taskMetrics
-    GetTasksSortBy:
-      type: string
-      enum:
-      - PRIORITY
-      - CREATED_AT
-      - MODIFIED_AT
-    GetTasksSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    Image:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/ImageMetaData"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    ImageMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          createdDate:
-            type: string
-            format: date-time
-    ImageMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          imageMetaData:
-            $ref: "#/components/schemas/ImageMetaData"
-      required:
-      - changedAt
-    ImportStatistics:
-      type: object
-      properties:
-        created:
-          type: integer
-          format: int32
-          minimum: 0
-        duplicated:
-          type: integer
-          format: int32
-          minimum: 0
-        failed:
-          type: integer
-          format: int32
-          minimum: 0
-        mergeFailed:
-          type: integer
-          format: int32
-          minimum: 0
-        merged:
-          type: integer
-          format: int32
-          minimum: 0
-        total:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - created
-      - duplicated
-      - failed
-      - mergeFailed
-      - merged
-      - total
-    InboxProcedure:
-      type: object
-      properties:
-        closedAt:
-          type: string
-          format: date-time
-        contactDetails:
-          $ref: "#/components/schemas/ContactDetails"
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-          format: uuid
-        inboxProcedureId:
-          type: string
-          format: uuid
-        inboxProcedureStatus:
-          $ref: "#/components/schemas/InboxProcedureStatus"
-        inboxProcedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        inboxProgressEntry:
-          $ref: "#/components/schemas/InboxProgressEntry"
-      required:
-      - contactDetails
-      - createdAt
-      - createdBy
-      - inboxProcedureId
-      - inboxProcedureStatus
-      - inboxProgressEntry
-    InboxProcedureAddress:
-      type: object
-      properties:
-        addressAddition:
-          type: string
-        city:
-          type: string
-        country:
-          type: string
-        houseNumber:
-          type: string
-        postalCode:
-          type: string
-        postboxNumber:
-          type: integer
-          format: int32
-        street:
-          type: string
-    InboxProcedureStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    InboxProgressEntry:
-      type: object
-      properties:
-        fileReference:
-          oneOf:
-          - $ref: "#/components/schemas/GenericFileReference"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        inboxProgressEntryId:
-          type: string
-          format: uuid
-        inboxProgressEntryType:
-          $ref: "#/components/schemas/InboxProgressEntryType"
-        messageText:
-          type: string
-        subject:
-          type: string
-      required:
-      - inboxProgressEntryId
-      - inboxProgressEntryType
-    InboxProgressEntryType:
-      type: string
-      enum:
-      - LETTER
-      - PHONE_CALL
-      - EMAIL
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    Institution:
-      type: object
-      properties:
-        hexColor:
-          type: string
-          description: Background color of the box surrounding the institution
-          pattern: "^#[0-9a-zA-Z]{6}$"
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-      required:
-      - hexColor
-      - id
-      - name
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    KeyDocumentAwareProgressEntry:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        keyDocumentType:
-          type: string
-        keyDocumentVersion:
-          type: integer
-          format: int32
-      required:
-      - '@type'
-    Mail:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/MailMetaData"
-          removedInvalidAttachments:
-            type: integer
-            format: int32
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-      - removedInvalidAttachments
-    MailMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          mailFrom:
-            type: string
-          mailTo:
-            type: string
-          messageText:
-            type: string
-          sentDate:
-            type: string
-            format: date-time
-          subject:
-            type: string
-      required:
-      - mailFrom
-      - mailTo
-      - messageText
-      - sentDate
-      - subject
-    MailMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          mailMetaData:
-            $ref: "#/components/schemas/MailMetaData"
-      required:
-      - changedAt
-    MainResult:
-      type: string
-      enum:
-      - S
-      - I
-      - D
-      - F
-      - E
-      - "Y"
-      - X
-      - Z
-      - T
-      - H
-      - O
-      - V
-      - "N"
-      - P
-      - K
-    ManualProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          createdByUserFirstName:
-            type: string
-          createdByUserLastName:
-            type: string
-          keyDocumentType:
-            type: string
-          keyDocumentVersion:
-            type: integer
-            format: int32
-          locked:
-            type: boolean
-          manualProgressEntryType:
-            $ref: "#/components/schemas/ManualProgressEntryType"
-          note:
-            type: string
-      - $ref: "#/components/schemas/ApprovalRequestEntity"
-      - $ref: "#/components/schemas/KeyDocumentAwareProgressEntry"
-      required:
-      - createdAt
-      - createdBy
-      - locked
-      - manualProgressEntryType
-      - modifiedAt
-      - progressEntryId
-    ManualProgressEntryHistory:
-      type: object
-      properties:
-        changedAt:
-          type: string
-          format: date-time
-        manualProgressEntry:
-          $ref: "#/components/schemas/ManualProgressEntry"
-      required:
-      - changedAt
-    ManualProgressEntryType:
-      type: string
-      enum:
-      - LETTER
-      - PHONE_CALL
-      - NOTE
-      - EMAIL
-      - IMAGE
-      - DOCUMENT
-    MetaData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        description:
-          type: string
-      required:
-      - '@type'
-    MetaDataHistory:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        changedAt:
-          type: string
-          format: date-time
-      required:
-      - '@type'
-      - changedAt
-    NonExistingUser:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/PerformingPerson"
-    Operation:
-      type: string
-      enum:
-      - DELETE
-    OralHygieneStatus:
-      type: string
-      enum:
-      - EXCELLENT
-      - GOOD
-      - POOR
-    PatchManualProgressEntryRequest:
-      type: object
-      properties:
-        manualProgressEntryType:
-          $ref: "#/components/schemas/ManualProgressEntryType"
-        note:
-          type: string
-          nullable: true
-    Pdf:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/PdfMetaData"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    PdfMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          createdDate:
-            type: string
-            format: date-time
-    PdfMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          pdfMetaData:
-            $ref: "#/components/schemas/PdfMetaData"
-      required:
-      - changedAt
-    PerformingPerson:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    PersonType:
-      type: string
-      enum:
-      - PATIENT
-      - PARENT
-      - PROFESSIONAL
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    PopulationRequest:
-      type: object
-      properties:
-        numberOfEntitiesToPopulate:
-          type: integer
-          format: int32
-      required:
-      - numberOfEntitiesToPopulate
-    PostboxAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          postbox:
-            type: string
-            description: The number (or name) of the postbox.
-            example: "123"
-            maxLength: 21
-            minLength: 1
-      description: An address which is a postbox.
-      required:
-      - city
-      - country
-      - postalCode
-      - postbox
-    Procedure:
-      type: object
-      properties:
-        archivingRelevanceSettings:
-          $ref: "#/components/schemas/ArchivingRelevanceSettings"
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedAt:
-          type: string
-          format: date-time
-        createdAt:
-          type: string
-          format: date-time
-        exportedAt:
-          type: string
-          format: date-time
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        procedureStatus:
-          $ref: "#/components/schemas/ProcedureStatus"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-          pattern: "[a-zA-Z0-9.].+"
-      required:
-      - archivingRelevanceSettings
-      - businessModule
-      - createdAt
-      - modifiedAt
-      - procedureId
-      - procedureStatus
-      - procedureType
-      - summary
-    ProcedureMetric:
-      type: object
-      properties:
-        abortedCount:
-          type: integer
-          format: int64
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedCount:
-          type: integer
-          format: int64
-        inProgressCount:
-          type: integer
-          format: int64
-        openOrDraftCount:
-          type: integer
-          format: int64
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        totalCount:
-          type: integer
-          format: int64
-      required:
-      - abortedCount
-      - businessModule
-      - closedCount
-      - inProgressCount
-      - openOrDraftCount
-      - procedureType
-      - totalCount
-    ProcedureStatus:
-      type: string
-      enum:
-      - DRAFT
-      - OPEN
-      - IN_PROGRESS
-      - CLOSED
-      - ABORTED
-    ProcedureType:
-      type: string
-      enum:
-      - REGULAR_EXAMINATION
-      - CAN_CHILD
-      - ENTRY_LEVEL
-      - DRAFT_CITIZEN_OFFICE_IMPORT
-      - DRAFT_SCHOOL_IMPORT
-      - INSPECTION
-      - TM_VACCINATION_CONSULTATION
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY_ENTRY
-      - MEDICAL_REGISTRY_CITIZEN_DRAFT
-      - MEDICAL_REGISTRY_EMPLOYEE_DRAFT
-      - DENTAL_CHILD
-      - OFFICIAL_MEDICAL_SERVICE
-    ProcedureWithDuration:
-      type: object
-      properties:
-        createdAt:
-          type: string
-          format: date-time
-        duration:
-          type: string
-          description: A duration in ISO 8601
-        id:
-          type: string
-          format: uuid
-      required:
-      - createdAt
-      - id
-    ProcessedInboxProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          createdByUserFirstName:
-            type: string
-          createdByUserLastName:
-            type: string
-          inboxProcedureId:
-            type: string
-            format: uuid
-          inboxProgressEntryType:
-            $ref: "#/components/schemas/InboxProgressEntryType"
-          messageText:
-            type: string
-          subject:
-            type: string
-      required:
-      - createdAt
-      - createdBy
-      - inboxProcedureId
-      - inboxProgressEntryType
-      - modifiedAt
-      - progressEntryId
-    ProgressEntry:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        createdAt:
-          type: string
-          format: date-time
-        fileReference:
-          oneOf:
-          - $ref: "#/components/schemas/GenericFileReference"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        modifiedAt:
-          type: string
-          format: date-time
-        progressEntryId:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - createdAt
-      - modifiedAt
-      - progressEntryId
-    ProgressEntryClass:
-      type: string
-      enum:
-      - MANUAL_PROGRESS_ENTRY
-      - SYSTEM_PROGRESS_ENTRY
-      - PROCESSED_INBOX_PROGRESS_ENTRY
-    ProgressEntryReferenceFilePair:
-      type: object
-      properties:
-        file:
-          oneOf:
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        progressEntryId:
-          type: string
-          format: uuid
-      required:
-      - file
-      - progressEntryId
-    ProgressEntrySortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - CREATED_AT
-      - MODIFIED_AT
-    ProgressEntrySortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    ProphylaxisSession:
-      type: object
-      properties:
-        dateAndTime:
-          type: string
-          format: date-time
-        fluoridationVarnish:
-          $ref: "#/components/schemas/FluoridationVarnish"
-        groupName:
-          type: string
-        id:
-          type: string
-          format: uuid
-        institution:
-          $ref: "#/components/schemas/Institution"
-        screening:
-          type: boolean
-        type:
-          $ref: "#/components/schemas/ProphylaxisType"
-      required:
-      - dateAndTime
-      - groupName
-      - id
-      - institution
-      - screening
-      - type
-    ProphylaxisSessionChildExamination:
-      type: object
-      properties:
-        childId:
-          type: string
-          format: uuid
-        dateOfBirth:
-          type: string
-          format: date
-        examinationResult:
-          oneOf:
-          - $ref: "#/components/schemas/AbsenceExaminationResult"
-          - $ref: "#/components/schemas/FluoridationExaminationResult"
-          - $ref: "#/components/schemas/ScreeningExaminationResult"
-        firstName:
-          type: string
-        fluoridationConsent:
-          type: boolean
-        gender:
-          $ref: "#/components/schemas/Gender"
-        groupName:
-          type: string
-        lastName:
-          type: string
-      required:
-      - childId
-      - dateOfBirth
-      - firstName
-      - groupName
-      - lastName
-    ProphylaxisSessionDetails:
-      type: object
-      properties:
-        dateAndTime:
-          type: string
-          format: date-time
-        dentists:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ExistingUser"
-            - $ref: "#/components/schemas/NonExistingUser"
-        fluoridationVarnish:
-          $ref: "#/components/schemas/FluoridationVarnish"
-        groupName:
-          type: string
-        id:
-          type: string
-          format: uuid
-        institution:
-          $ref: "#/components/schemas/Institution"
-        participants:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProphylaxisSessionChildExamination"
-        screening:
-          type: boolean
-        type:
-          $ref: "#/components/schemas/ProphylaxisType"
-        version:
-          type: integer
-          format: int64
-        zfas:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ExistingUser"
-            - $ref: "#/components/schemas/NonExistingUser"
-      required:
-      - dateAndTime
-      - dentists
-      - groupName
-      - id
-      - institution
-      - participants
-      - screening
-      - type
-      - version
-      - zfas
-    ProphylaxisSessionPopulationResult:
-      type: object
-      properties:
-        count:
-          type: integer
-          format: int64
-        prophylaxisSessions:
-          type: array
-          items:
-            $ref: "#/components/schemas/CreateProphylaxisSessionResponse"
-      required:
-      - count
-      - prophylaxisSessions
-    ProphylaxisSessionSortKey:
-      type: string
-      enum:
-      - ID
-      - TYPE
-      - GROUP_NAME
-      - DATE_AND_TIME
-      - SCREENING
-      - FLUORIDATION_VARNISH
-    ProphylaxisType:
-      type: string
-      description: Type of the prophylaxis
-      enum:
-      - P1
-      - P2
-      - P3
-      - P4
-      - P5
-      - P6
-      - P7
-    ReasonForAbsence:
-      type: string
-      enum:
-      - NOT_APPEARED
-      - SHIFTED
-      - MOVED
-      - REFUSED
-    Salutation:
-      type: string
-      enum:
-      - NOT_SPECIFIED
-      - NEUTRAL
-      - FEMALE
-      - MALE
-    ScreeningExaminationResult:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/DentalExaminationResult"
-      - type: object
-        properties:
-          fluorideVarnishApplied:
-            type: boolean
-          oralHygieneStatus:
-            $ref: "#/components/schemas/OralHygieneStatus"
-          toothDiagnoses:
-            type: array
-            items:
-              $ref: "#/components/schemas/ToothDiagnosis"
-      required:
-      - fluorideVarnishApplied
-      - toothDiagnoses
-    SearchChildrenResponse:
-      type: object
-      properties:
-        children:
-          type: array
-          items:
-            $ref: "#/components/schemas/ChildSearchResult"
-      required:
-      - children
-    SecondaryResult:
-      type: string
-      enum:
-      - DA
-      - FA
-      - FIS
-      - ID
-      - INS
-      - LUE
-      - RET
-      - TR
-      - WR
-      - ZA
-    SelfAssignTaskRequest:
-      type: object
-      properties:
-        dueAt:
-          type: string
-          format: date-time
-        taskVersion:
-          type: integer
-          format: int64
-      required:
-      - taskVersion
-    SortDirection:
-      type: string
-      enum:
-      - ASC
-      - DESC
-    SystemProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          changeDescription:
-            type: string
-          keyDocumentType:
-            type: string
-          keyDocumentVersion:
-            type: integer
-            format: int32
-          previousFileStateId:
-            type: string
-            format: uuid
-          systemProgressEntryType:
-            type: string
-          triggerType:
-            $ref: "#/components/schemas/TriggerType"
-          triggeredBy:
-            type: string
-            format: uuid
-          triggeredByUserFirstName:
-            type: string
-          triggeredByUserLastName:
-            type: string
-      - $ref: "#/components/schemas/KeyDocumentAwareProgressEntry"
-      required:
-      - createdAt
-      - modifiedAt
-      - progressEntryId
-      - systemProgressEntryType
-      - triggerType
-    Task:
-      type: object
-      properties:
-        assignedById:
-          type: string
-          format: uuid
-        assigneeId:
-          type: string
-          format: uuid
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        createdAt:
-          type: string
-          format: date-time
-        dueAt:
-          type: string
-          format: date-time
-        isOverdue:
-          type: boolean
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-        taskId:
-          type: string
-          format: uuid
-        taskStatus:
-          $ref: "#/components/schemas/TaskStatus"
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        version:
-          type: integer
-          format: int64
-      required:
-      - businessModule
-      - createdAt
-      - isOverdue
-      - modifiedAt
-      - procedureId
-      - summary
-      - taskId
-      - taskStatus
-      - taskType
-      - version
-    TaskMetric:
-      type: object
-      properties:
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        moreThanTwoOccurrencesCount:
-          type: integer
-          format: int32
-        noOccurrencesCount:
-          type: integer
-          format: int32
-        oneOccurrenceCount:
-          type: integer
-          format: int32
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        twoOccurrencesCount:
-          type: integer
-          format: int32
-      required:
-      - moreThanTwoOccurrencesCount
-      - noOccurrencesCount
-      - oneOccurrenceCount
-      - taskType
-      - twoOccurrencesCount
-    TaskResponse:
-      type: object
-      properties:
-        count:
-          type: integer
-          format: int64
-          description: total number of tasks for this query
-        tasks:
-          type: array
-          items:
-            $ref: "#/components/schemas/Task"
-          maxItems: 200
-          minItems: 0
-      required:
-      - count
-      - tasks
-    TaskStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    TaskType:
-      type: string
-      enum:
-      - BOOK_APPOINTMENT
-      - PERFORM_SCHOOL_ENTRY_EXAMINATION
-      - INSPECTION_PLANNING
-      - INSPECTION_EXECUTION
-      - INSPECTION_REPORT
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - OFFICIAL_MEDICAL_SERVICE
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
-    Title:
-      type: string
-      enum:
-      - DR
-      - PROF
-      - PROF_DR
-    Tooth:
-      type: string
-      enum:
-      - T11
-      - T12
-      - T13
-      - T14
-      - T15
-      - T16
-      - T17
-      - T18
-      - T21
-      - T22
-      - T23
-      - T24
-      - T25
-      - T26
-      - T27
-      - T28
-      - T31
-      - T32
-      - T33
-      - T34
-      - T35
-      - T36
-      - T37
-      - T38
-      - T41
-      - T42
-      - T43
-      - T44
-      - T45
-      - T46
-      - T47
-      - T48
-      - T51
-      - T52
-      - T53
-      - T54
-      - T55
-      - T61
-      - T62
-      - T63
-      - T64
-      - T65
-      - T71
-      - T72
-      - T73
-      - T74
-      - T75
-      - T81
-      - T82
-      - T83
-      - T84
-      - T85
-    ToothDiagnosis:
-      type: object
-      properties:
-        mainResult:
-          $ref: "#/components/schemas/MainResult"
-        secondaryResult1:
-          $ref: "#/components/schemas/SecondaryResult"
-        secondaryResult2:
-          $ref: "#/components/schemas/SecondaryResult"
-        tooth:
-          $ref: "#/components/schemas/Tooth"
-      required:
-      - mainResult
-      - tooth
-    TriggerType:
-      type: string
-      enum:
-      - SYSTEM_AUTOMATIC
-      - EMPLOYEE
-      - CITIZEN
-    UpdateChildRequest:
-      type: object
-      properties:
-        fluoridationConsent:
-          $ref: "#/components/schemas/FluoridationConsent"
-        groupName:
-          type: string
-        institutionId:
-          type: string
-          format: uuid
-        version:
-          type: integer
-          format: int64
-      required:
-      - groupName
-      - institutionId
-      - version
-    UpdateExaminationRequest:
-      type: object
-      properties:
-        note:
-          type: string
-        result:
-          oneOf:
-          - $ref: "#/components/schemas/AbsenceExaminationResult"
-          - $ref: "#/components/schemas/FluoridationExaminationResult"
-          - $ref: "#/components/schemas/ScreeningExaminationResult"
-        version:
-          type: integer
-          format: int64
-      required:
-      - version
-    UpdateExaminationsInBulkRequest:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        note:
-          type: string
-        result:
-          oneOf:
-          - $ref: "#/components/schemas/AbsenceExaminationResult"
-          - $ref: "#/components/schemas/FluoridationExaminationResult"
-          - $ref: "#/components/schemas/ScreeningExaminationResult"
-        version:
-          type: integer
-          format: int64
-      required:
-      - id
-      - version
-    UpdateProphylaxisSessionExaminationsRequest:
-      type: object
-      properties:
-        examinationUpdates:
-          type: array
-          items:
-            $ref: "#/components/schemas/UpdateExaminationsInBulkRequest"
-      required:
-      - examinationUpdates
-    UpdateProphylaxisSessionParticipantsRequest:
-      type: object
-      properties:
-        participants:
-          type: array
-          items:
-            type: string
-            format: uuid
-        version:
-          type: integer
-          format: int64
-      required:
-      - participants
-      - version
-    UpdateProphylaxisSessionRequest:
-      type: object
-      properties:
-        dateAndTime:
-          type: string
-          format: date-time
-        fluoridationVarnish:
-          $ref: "#/components/schemas/FluoridationVarnish"
-        groupName:
-          type: string
-        screening:
-          type: boolean
-        type:
-          $ref: "#/components/schemas/ProphylaxisType"
-        version:
-          type: integer
-          format: int64
-      required:
-      - dateAndTime
-      - groupName
-      - screening
-      - type
-      - version
-    User:
-      type: object
-      properties:
-        email:
-          type: string
-          description: The email address of a user.
-          example: example@mail.de
-        enabled:
-          type: boolean
-          description: "True, if the user can login"
-          example: false
-        externalChatUsername:
-          type: string
-          description: The chat username of the gematik TI-Messenger (matrix chat).
-          example: '@username:server'
-        firstName:
-          type: string
-          description: The given name(s) of a user.
-          example: John
-        lastName:
-          type: string
-          description: The last name of a user.
-          example: Doe
-        phoneNumber:
-          type: string
-          description: The phone number of a user.
-          example: "+491234567890"
-        userId:
-          type: string
-          format: uuid
-          description: The Id of the user.
-          example: fe9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        username:
-          type: string
-          description: The username which is displayed in the application and can
-            be used for the login.
-          example: testuser
-      required:
-      - enabled
-      - firstName
-      - lastName
-      - userId
-      - username
diff --git a/backend/dental/src/main/java/de/eshg/dental/ExaminationService.java b/backend/dental/src/main/java/de/eshg/dental/ExaminationService.java
index 0a7cdb0aa..fdb952c1d 100644
--- a/backend/dental/src/main/java/de/eshg/dental/ExaminationService.java
+++ b/backend/dental/src/main/java/de/eshg/dental/ExaminationService.java
@@ -5,11 +5,16 @@
 
 package de.eshg.dental;
 
+import static de.eshg.dental.mapper.ExaminationMapper.mapToDomain;
+
 import de.cronn.reflection.util.ClassUtils;
 import de.eshg.dental.api.AbsenceExaminationResultDto;
 import de.eshg.dental.api.ExaminationResultDto;
 import de.eshg.dental.api.FluoridationExaminationResultDto;
+import de.eshg.dental.api.IsFluorideVarnishApplicable;
 import de.eshg.dental.api.ScreeningExaminationResultDto;
+import de.eshg.dental.api.ToothDiagnosisDto;
+import de.eshg.dental.api.ToothDto;
 import de.eshg.dental.api.UpdateExaminationRequest;
 import de.eshg.dental.domain.model.AbsenceExaminationResult;
 import de.eshg.dental.domain.model.Examination;
@@ -17,14 +22,17 @@ import de.eshg.dental.domain.model.ExaminationResult;
 import de.eshg.dental.domain.model.FluoridationExaminationResult;
 import de.eshg.dental.domain.model.ProphylaxisSession;
 import de.eshg.dental.domain.model.ScreeningExaminationResult;
+import de.eshg.dental.domain.model.Tooth;
+import de.eshg.dental.domain.model.ToothDiagnosis;
 import de.eshg.dental.domain.repository.ExaminationRepository;
-import de.eshg.dental.mapper.ExaminationMapper;
 import de.eshg.dental.util.ChildSystemProgressEntryType;
 import de.eshg.dental.util.ExceptionUtil;
 import de.eshg.dental.util.ProgressEntryUtil;
 import de.eshg.rest.service.error.BadRequestException;
 import de.eshg.rest.service.error.NotFoundException;
 import de.eshg.validation.ValidationUtil;
+import java.util.List;
+import java.util.Map;
 import java.util.UUID;
 import java.util.function.Consumer;
 import org.springframework.stereotype.Component;
@@ -100,6 +108,7 @@ public class ExaminationService {
         throw newIllegalExaminationResultException(
             "Got fluorideVarnishApplied=true but no fluoridation varnish is configured for prophylaxis session");
       }
+      Validator.validateToothDiagnoses(screeningExaminationResult.toothDiagnoses());
     } else if (prophylaxisSession.hasFluoridationVarnish()) {
       if (!(newResult instanceof FluoridationExaminationResultDto)) {
         throw newIllegalExaminationResultException(
@@ -108,6 +117,13 @@ public class ExaminationService {
     } else {
       throw newIllegalExaminationResultException(newResult, null);
     }
+
+    if (newResult instanceof IsFluorideVarnishApplicable fluorideVarnishApplicableResult
+        && fluorideVarnishApplicableResult.fluorideVarnishApplied()
+        && !examination.getChild().isFluoridationConsentCurrentlyGiven()) {
+      throw newIllegalExaminationResultException(
+          "Got fluorideVarnishApplied=true but fluoridation consent is not given");
+    }
   }
 
   private static BadRequestException newIllegalExaminationResultException(
@@ -124,25 +140,54 @@ public class ExaminationService {
   }
 
   private void mapResult(Examination examination, ScreeningExaminationResultDto newResult) {
+    Map<Tooth, ToothDiagnosis> persistedToothDiagnoses = Map.of();
+    if (examination.getResult() instanceof ScreeningExaminationResult screeningExaminationResult
+        && !newResult.toothDiagnoses().isEmpty()) {
+      List<ToothDto> teeth =
+          newResult.toothDiagnoses().stream().map(ToothDiagnosisDto::tooth).toList();
+      persistedToothDiagnoses = screeningExaminationResult.getToothDiagnoses();
+
+      removeMatchingTeethFromPersistedTeeth(teeth, persistedToothDiagnoses);
+    }
+
+    Map<Tooth, ToothDiagnosis> newToothDiagnoses = mapToDomain(newResult.toothDiagnoses());
+    newToothDiagnoses.putAll(persistedToothDiagnoses);
     mapResult(
         examination,
         ScreeningExaminationResult.class,
         existingResult -> {
           existingResult.setFluorideVarnishApplied(newResult.fluorideVarnishApplied());
-          existingResult.setOralHygieneStatus(
-              ExaminationMapper.mapToDomain(newResult.oralHygieneStatus()));
-          existingResult.setToothDiagnoses(
-              ExaminationMapper.mapToDomain(newResult.toothDiagnoses()));
+          existingResult.setOralHygieneStatus(mapToDomain(newResult.oralHygieneStatus()));
+          existingResult.setToothDiagnoses(newToothDiagnoses);
         });
   }
 
+  private static void removeMatchingTeethFromPersistedTeeth(
+      List<ToothDto> teeth, Map<Tooth, ToothDiagnosis> persistedToothDiagnoses) {
+    for (ToothDto tooth : teeth) {
+      // milk teeth
+      Tooth matchingPermanentTooth =
+          mapToDomain(ToothDto.matchingPermanentToothForMilkTooth(tooth));
+      if (matchingPermanentTooth != null) {
+        persistedToothDiagnoses.remove(matchingPermanentTooth);
+      }
+
+      // permanentTeeth
+      Tooth matchingMilkTooth = mapToDomain(ToothDto.matchingMilkToothForPermanentTooth(tooth));
+      if (matchingMilkTooth != null) {
+        persistedToothDiagnoses.remove(matchingMilkTooth);
+      }
+
+      persistedToothDiagnoses.remove(mapToDomain(tooth));
+    }
+  }
+
   private void mapResult(Examination examination, AbsenceExaminationResultDto newResult) {
     mapResult(
         examination,
         AbsenceExaminationResult.class,
         existingResult ->
-            existingResult.setReasonForAbsence(
-                ExaminationMapper.mapToDomain(newResult.reasonForAbsence())));
+            existingResult.setReasonForAbsence(mapToDomain(newResult.reasonForAbsence())));
   }
 
   private <R extends ExaminationResult> void mapResult(
diff --git a/backend/dental/src/main/java/de/eshg/dental/ProphylaxisSessionService.java b/backend/dental/src/main/java/de/eshg/dental/ProphylaxisSessionService.java
index 03d32f7d2..bf78d4319 100644
--- a/backend/dental/src/main/java/de/eshg/dental/ProphylaxisSessionService.java
+++ b/backend/dental/src/main/java/de/eshg/dental/ProphylaxisSessionService.java
@@ -183,8 +183,57 @@ public class ProphylaxisSessionService {
             .users()
             .stream()
             .collect(StreamUtil.toLinkedHashMap(UserDto::userId));
+
+    List<UUID> fileStateIdsOfChildrenInSession =
+        examinations.stream().map(ex -> ex.getChild().getChildIdFromCentralFile()).toList();
+
+    Map<UUID, List<UUID>> associatedFileStateIdsByFileStateIdInSession =
+        personClient.fetchAssociatedExternalIdsInBulk(fileStateIdsOfChildrenInSession);
+
+    List<UUID> allFileStateIds =
+        Stream.concat(
+                associatedFileStateIdsByFileStateIdInSession.values().stream()
+                    .flatMap(List::stream),
+                fileStateIdsOfChildrenInSession.stream())
+            .toList();
+
+    Map<UUID, List<Examination>> examinationsByFileStateId =
+        examinationRepository.findAllByChildFileStateIds(allFileStateIds).stream()
+            .collect(Collectors.groupingBy(ex -> ex.getChild().getChildIdFromCentralFile()));
+
+    Map<UUID, List<Examination>> previousExaminationsBySessionChildFileStateId =
+        fileStateIdsOfChildrenInSession.stream()
+            .collect(
+                StreamUtil.toLinkedHashMap(
+                    Function.identity(),
+                    getPreviousExaminations(
+                        prophylaxisSession,
+                        examinationsByFileStateId,
+                        associatedFileStateIdsByFileStateIdInSession)));
+
     return new ProphylaxisSessionWithAugmentedData(
-        prophylaxisSession, contact, examinationMap, usersMap);
+        prophylaxisSession,
+        contact,
+        examinationMap,
+        usersMap,
+        previousExaminationsBySessionChildFileStateId);
+  }
+
+  private static Function<UUID, List<Examination>> getPreviousExaminations(
+      ProphylaxisSession prophylaxisSessionToIgnore,
+      Map<UUID, List<Examination>> examinationsByChildFileStateId,
+      Map<UUID, List<UUID>> associatedFileStateIdsByChildFileStateId) {
+    return fileStateId ->
+        Stream.concat(
+                examinationsByChildFileStateId.get(fileStateId).stream()
+                    .filter(ex -> !ex.getProphylaxisSession().equals(prophylaxisSessionToIgnore)),
+                associatedFileStateIdsByChildFileStateId
+                    .getOrDefault(fileStateId, List.of())
+                    .stream()
+                    .map(examinationsByChildFileStateId::get)
+                    .filter(Objects::nonNull)
+                    .flatMap(List::stream))
+            .toList();
   }
 
   private Map<UUID, GetPersonFileStateResponse> fetchPersonFileStatesInBulk(
@@ -310,7 +359,7 @@ public class ProphylaxisSessionService {
     session.setDateAndTime(request.dateAndTime());
     session.setGroupName(request.groupName());
     session.setType(ProphylaxisSessionMapper.mapToDomain(request.type()));
-    session.setScreening(request.screening());
+    session.setIsScreening(request.isScreening());
     session.setFluoridationVarnish(
         ProphylaxisSessionMapper.mapToDomain(request.fluoridationVarnish()));
   }
diff --git a/backend/dental/src/main/java/de/eshg/dental/ProphylaxisSessionSpecification.java b/backend/dental/src/main/java/de/eshg/dental/ProphylaxisSessionSpecification.java
index 98276f4c1..7c5749a89 100644
--- a/backend/dental/src/main/java/de/eshg/dental/ProphylaxisSessionSpecification.java
+++ b/backend/dental/src/main/java/de/eshg/dental/ProphylaxisSessionSpecification.java
@@ -85,7 +85,7 @@ class ProphylaxisSessionSpecification implements Specification<ProphylaxisSessio
       case TYPE -> root.get(ProphylaxisSession_.type);
       case GROUP_NAME -> root.get(ProphylaxisSession_.groupName);
       case DATE_AND_TIME -> root.get(ProphylaxisSession_.dateAndTime);
-      case SCREENING -> root.get(ProphylaxisSession_.screening);
+      case IS_SCREENING -> root.get(ProphylaxisSession_.isScreening);
       case FLUORIDATION_VARNISH -> root.get(ProphylaxisSession_.fluoridationVarnish);
     };
   }
diff --git a/backend/dental/src/main/java/de/eshg/dental/Validator.java b/backend/dental/src/main/java/de/eshg/dental/Validator.java
index b2631eba1..9f65e6ef4 100644
--- a/backend/dental/src/main/java/de/eshg/dental/Validator.java
+++ b/backend/dental/src/main/java/de/eshg/dental/Validator.java
@@ -13,6 +13,8 @@ import de.eshg.base.user.UserApi;
 import de.eshg.base.user.api.UserDto;
 import de.eshg.dental.api.ChildFilterParameters;
 import de.eshg.dental.api.FluoridationConsentDto;
+import de.eshg.dental.api.ToothDiagnosisDto;
+import de.eshg.dental.api.ToothDto;
 import de.eshg.dental.domain.repository.ChildRepository;
 import de.eshg.lib.contact.ContactClient;
 import de.eshg.lib.keycloak.TechnicalGroup;
@@ -107,4 +109,30 @@ public class Validator {
       throw new BadRequestException("Child cannot have an allergy and fluoridation consent.");
     }
   }
+
+  static void validateToothDiagnoses(List<ToothDiagnosisDto> toothDiagnoses) {
+    List<ToothDto> teeth = toothDiagnoses.stream().map(ToothDiagnosisDto::tooth).toList();
+    validateUniqueTeeth(teeth);
+    validateMilkOrPermanentTooth(teeth);
+  }
+
+  private static void validateMilkOrPermanentTooth(List<ToothDto> teeth) {
+    List<ToothDto> milkTeeth = teeth.stream().filter(ToothDto::isMilkTooth).toList();
+
+    for (ToothDto milkTooth : milkTeeth) {
+      ToothDto matchingPermanentTooth = ToothDto.matchingPermanentToothForMilkTooth(milkTooth);
+      if (teeth.contains(matchingPermanentTooth)) {
+        throw new BadRequestException(
+            "Milk tooth %s and matching permanent tooth %s cannot be set together."
+                .formatted(milkTooth, matchingPermanentTooth));
+      }
+    }
+  }
+
+  private static void validateUniqueTeeth(List<ToothDto> teeth) {
+    List<ToothDto> uniqueTeeth = teeth.stream().distinct().toList();
+    if (teeth.size() != uniqueTeeth.size()) {
+      throw new BadRequestException("There are teeth twice in the list.");
+    }
+  }
 }
diff --git a/backend/dental/src/main/java/de/eshg/dental/api/CreateProphylaxisSessionRequest.java b/backend/dental/src/main/java/de/eshg/dental/api/CreateProphylaxisSessionRequest.java
index 4d04bd5a3..d6bea009c 100644
--- a/backend/dental/src/main/java/de/eshg/dental/api/CreateProphylaxisSessionRequest.java
+++ b/backend/dental/src/main/java/de/eshg/dental/api/CreateProphylaxisSessionRequest.java
@@ -17,7 +17,7 @@ public record CreateProphylaxisSessionRequest(
     @NotNull UUID institutionId,
     @NotBlank String groupName,
     @NotNull ProphylaxisTypeDto type,
-    @NotNull boolean screening,
+    @NotNull boolean isScreening,
     FluoridationVarnishDto fluoridationVarnish,
     @NotEmpty(message = "At least one dentist is required") List<UUID> dentistIds,
     @NotEmpty(message = "At least one zfa is required") List<UUID> zfaIds)
diff --git a/backend/dental/src/main/java/de/eshg/dental/api/ExaminationDto.java b/backend/dental/src/main/java/de/eshg/dental/api/ExaminationDto.java
index 66a5d1d8b..9c17af8dc 100644
--- a/backend/dental/src/main/java/de/eshg/dental/api/ExaminationDto.java
+++ b/backend/dental/src/main/java/de/eshg/dental/api/ExaminationDto.java
@@ -17,7 +17,8 @@ public record ExaminationDto(
     @NotNull long version,
     @NotNull Instant dateAndTime,
     @NotNull ProphylaxisTypeDto prophylaxisType,
-    @NotNull boolean screening,
-    @NotNull boolean fluoridation,
+    @NotNull boolean isScreening,
+    @NotNull boolean isFluoridation,
+    @NotNull boolean fluoridationConsentGiven,
     String note,
     @Valid ExaminationResultDto result) {}
diff --git a/backend/dental/src/main/java/de/eshg/dental/api/FluoridationExaminationResultDto.java b/backend/dental/src/main/java/de/eshg/dental/api/FluoridationExaminationResultDto.java
index f42bda1e5..b4a176f4c 100644
--- a/backend/dental/src/main/java/de/eshg/dental/api/FluoridationExaminationResultDto.java
+++ b/backend/dental/src/main/java/de/eshg/dental/api/FluoridationExaminationResultDto.java
@@ -10,7 +10,7 @@ import jakarta.validation.constraints.NotNull;
 
 @Schema(name = FluoridationExaminationResultDto.SCHEMA_NAME)
 public record FluoridationExaminationResultDto(@NotNull boolean fluorideVarnishApplied)
-    implements ExaminationResultDto {
+    implements ExaminationResultDto, IsFluorideVarnishApplicable {
 
   static final String SCHEMA_NAME = "FluoridationExaminationResult";
 
diff --git a/backend/dental/src/main/java/de/eshg/dental/api/IsFluorideVarnishApplicable.java b/backend/dental/src/main/java/de/eshg/dental/api/IsFluorideVarnishApplicable.java
new file mode 100644
index 000000000..f2dc46b9b
--- /dev/null
+++ b/backend/dental/src/main/java/de/eshg/dental/api/IsFluorideVarnishApplicable.java
@@ -0,0 +1,10 @@
+/*
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package de.eshg.dental.api;
+
+public interface IsFluorideVarnishApplicable {
+  boolean fluorideVarnishApplied();
+}
diff --git a/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionChildExamination.java b/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionChildExaminationDto.java
similarity index 51%
rename from backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionChildExamination.java
rename to backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionChildExaminationDto.java
index b5757a5ec..50a44aa83 100644
--- a/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionChildExamination.java
+++ b/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionChildExaminationDto.java
@@ -6,17 +6,24 @@
 package de.eshg.dental.api;
 
 import de.eshg.base.GenderDto;
+import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.Valid;
 import jakarta.validation.constraints.NotNull;
 import java.time.LocalDate;
+import java.util.List;
 import java.util.UUID;
 
-public record ProphylaxisSessionChildExamination(
+@Schema(name = "ProphylaxisSessionChildExamination")
+public record ProphylaxisSessionChildExaminationDto(
+    @NotNull long examinationVersion,
+    @NotNull UUID examinationId,
     @NotNull UUID childId,
     @NotNull String firstName,
     @NotNull String lastName,
     @NotNull LocalDate dateOfBirth,
     @NotNull String groupName,
     GenderDto gender,
-    Boolean fluoridationConsent,
-    @Valid ExaminationResultDto examinationResult) {}
+    String note,
+    Boolean fluoridationConsentGiven,
+    @Valid ExaminationResultDto result,
+    @Valid @NotNull List<ExaminationResultDto> previousExaminationResults) {}
diff --git a/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionDetailsDto.java b/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionDetailsDto.java
index 9c3c760f2..8276d274a 100644
--- a/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionDetailsDto.java
+++ b/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionDetailsDto.java
@@ -22,8 +22,8 @@ public record ProphylaxisSessionDetailsDto(
     @NotNull @Valid InstitutionDto institution,
     @NotBlank String groupName,
     @NotNull ProphylaxisTypeDto type,
-    @NotNull boolean screening,
+    @NotNull boolean isScreening,
     FluoridationVarnishDto fluoridationVarnish,
-    @NotNull @Valid List<ProphylaxisSessionChildExamination> participants,
+    @NotNull @Valid List<ProphylaxisSessionChildExaminationDto> participants,
     @NotEmpty @Valid List<? extends PerformingPersonDto> dentists,
     @NotEmpty @Valid List<? extends PerformingPersonDto> zfas) {}
diff --git a/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionDto.java b/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionDto.java
index 7e1a7a885..edaeabd14 100644
--- a/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionDto.java
+++ b/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionDto.java
@@ -19,5 +19,5 @@ public record ProphylaxisSessionDto(
     @NotNull @Valid InstitutionDto institution,
     @NotBlank String groupName,
     @NotNull ProphylaxisTypeDto type,
-    @NotNull boolean screening,
+    @NotNull boolean isScreening,
     FluoridationVarnishDto fluoridationVarnish) {}
diff --git a/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionRequest.java b/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionRequest.java
index b3d96aa8f..a30d77a7f 100644
--- a/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionRequest.java
+++ b/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionRequest.java
@@ -14,7 +14,7 @@ public interface ProphylaxisSessionRequest {
 
   ProphylaxisTypeDto type();
 
-  boolean screening();
+  boolean isScreening();
 
   FluoridationVarnishDto fluoridationVarnish();
 }
diff --git a/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionSortKey.java b/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionSortKey.java
index 67967d19e..e7fd5194b 100644
--- a/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionSortKey.java
+++ b/backend/dental/src/main/java/de/eshg/dental/api/ProphylaxisSessionSortKey.java
@@ -10,6 +10,6 @@ public enum ProphylaxisSessionSortKey {
   TYPE,
   GROUP_NAME,
   DATE_AND_TIME,
-  SCREENING,
+  IS_SCREENING,
   FLUORIDATION_VARNISH,
 }
diff --git a/backend/dental/src/main/java/de/eshg/dental/api/ScreeningExaminationResultDto.java b/backend/dental/src/main/java/de/eshg/dental/api/ScreeningExaminationResultDto.java
index 133290147..ea809cc0a 100644
--- a/backend/dental/src/main/java/de/eshg/dental/api/ScreeningExaminationResultDto.java
+++ b/backend/dental/src/main/java/de/eshg/dental/api/ScreeningExaminationResultDto.java
@@ -15,7 +15,7 @@ public record ScreeningExaminationResultDto(
     @NotNull boolean fluorideVarnishApplied,
     OralHygieneStatusDto oralHygieneStatus,
     @NotNull @Valid List<ToothDiagnosisDto> toothDiagnoses)
-    implements ExaminationResultDto {
+    implements ExaminationResultDto, IsFluorideVarnishApplicable {
 
   static final String SCHEMA_NAME = "ScreeningExaminationResult";
 
diff --git a/backend/dental/src/main/java/de/eshg/dental/api/ToothDiagnosisDto.java b/backend/dental/src/main/java/de/eshg/dental/api/ToothDiagnosisDto.java
index 4f297e7e1..f23f6d714 100644
--- a/backend/dental/src/main/java/de/eshg/dental/api/ToothDiagnosisDto.java
+++ b/backend/dental/src/main/java/de/eshg/dental/api/ToothDiagnosisDto.java
@@ -13,4 +13,9 @@ public record ToothDiagnosisDto(
     @NotNull ToothDto tooth,
     @NotNull MainResultDto mainResult,
     SecondaryResultDto secondaryResult1,
-    SecondaryResultDto secondaryResult2) {}
+    SecondaryResultDto secondaryResult2) {
+
+  public ToothDiagnosisDto(ToothDto tooth, MainResultDto mainResult) {
+    this(tooth, mainResult, null, null);
+  }
+}
diff --git a/backend/dental/src/main/java/de/eshg/dental/api/ToothDto.java b/backend/dental/src/main/java/de/eshg/dental/api/ToothDto.java
index ddc88b842..27b951947 100644
--- a/backend/dental/src/main/java/de/eshg/dental/api/ToothDto.java
+++ b/backend/dental/src/main/java/de/eshg/dental/api/ToothDto.java
@@ -84,4 +84,73 @@ public enum ToothDto {
   public static List<ToothDto> allPermanentTeeth() {
     return Arrays.stream(ToothDto.values()).filter(t -> !t.milkTooth).toList();
   }
+
+  public boolean isMilkTooth() {
+    return milkTooth;
+  }
+
+  public static ToothDto matchingPermanentToothForMilkTooth(ToothDto tooth) {
+    if (!tooth.isMilkTooth()) {
+      return null;
+    }
+
+    return switch (tooth) {
+      case T51 -> T11;
+      case T52 -> T12;
+      case T53 -> T13;
+      case T54 -> T14;
+      case T55 -> T15;
+
+      case T61 -> T21;
+      case T62 -> T22;
+      case T63 -> T23;
+      case T64 -> T24;
+      case T65 -> T25;
+
+      case T71 -> T31;
+      case T72 -> T32;
+      case T73 -> T33;
+      case T74 -> T34;
+      case T75 -> T35;
+
+      case T81 -> T41;
+      case T82 -> T42;
+      case T83 -> T43;
+      case T84 -> T44;
+      case T85 -> T45;
+      default -> null;
+    };
+  }
+
+  public static ToothDto matchingMilkToothForPermanentTooth(ToothDto tooth) {
+    if (tooth.isMilkTooth()) {
+      return null;
+    }
+    return switch (tooth) {
+      case T11 -> T51;
+      case T12 -> T52;
+      case T13 -> T53;
+      case T14 -> T54;
+      case T15 -> T55;
+
+      case T21 -> T61;
+      case T22 -> T62;
+      case T23 -> T63;
+      case T24 -> T64;
+      case T25 -> T65;
+
+      case T31 -> T71;
+      case T32 -> T72;
+      case T33 -> T73;
+      case T34 -> T74;
+      case T35 -> T75;
+
+      case T41 -> T81;
+      case T42 -> T82;
+      case T43 -> T83;
+      case T44 -> T84;
+      case T45 -> T85;
+      default -> null;
+    };
+  }
 }
diff --git a/backend/dental/src/main/java/de/eshg/dental/api/UpdateProphylaxisSessionRequest.java b/backend/dental/src/main/java/de/eshg/dental/api/UpdateProphylaxisSessionRequest.java
index f6884563d..545791f50 100644
--- a/backend/dental/src/main/java/de/eshg/dental/api/UpdateProphylaxisSessionRequest.java
+++ b/backend/dental/src/main/java/de/eshg/dental/api/UpdateProphylaxisSessionRequest.java
@@ -14,7 +14,7 @@ public record UpdateProphylaxisSessionRequest(
     @NotNull Instant dateAndTime,
     @NotBlank String groupName,
     @NotNull ProphylaxisTypeDto type,
-    @NotNull boolean screening,
+    @NotNull boolean isScreening,
     FluoridationVarnishDto fluoridationVarnish)
     implements ProphylaxisSessionRequest {
   public UpdateProphylaxisSessionRequest(
diff --git a/backend/dental/src/main/java/de/eshg/dental/business/model/ProphylaxisSessionWithAugmentedData.java b/backend/dental/src/main/java/de/eshg/dental/business/model/ProphylaxisSessionWithAugmentedData.java
index 781cb4bc6..ec72846a7 100644
--- a/backend/dental/src/main/java/de/eshg/dental/business/model/ProphylaxisSessionWithAugmentedData.java
+++ b/backend/dental/src/main/java/de/eshg/dental/business/model/ProphylaxisSessionWithAugmentedData.java
@@ -10,6 +10,7 @@ import de.eshg.base.contact.api.ContactDto;
 import de.eshg.base.user.api.UserDto;
 import de.eshg.dental.domain.model.Examination;
 import de.eshg.dental.domain.model.ProphylaxisSession;
+import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
@@ -17,4 +18,5 @@ public record ProphylaxisSessionWithAugmentedData(
     ProphylaxisSession prophylaxisSession,
     ContactDto institution,
     Map<Examination, GetPersonFileStateResponse> participants,
-    Map<UUID, UserDto> users) {}
+    Map<UUID, UserDto> users,
+    Map<UUID, List<Examination>> previousExaminationsByChildFileStateId) {}
diff --git a/backend/dental/src/main/java/de/eshg/dental/client/PersonClient.java b/backend/dental/src/main/java/de/eshg/dental/client/PersonClient.java
index 1fae6d7fd..37522fda4 100644
--- a/backend/dental/src/main/java/de/eshg/dental/client/PersonClient.java
+++ b/backend/dental/src/main/java/de/eshg/dental/client/PersonClient.java
@@ -6,12 +6,14 @@
 package de.eshg.dental.client;
 
 import de.eshg.base.centralfile.PersonApi;
+import de.eshg.base.centralfile.api.GetFileStateIdsBulkRequest;
 import de.eshg.base.centralfile.api.person.GetPersonFileStateResponse;
 import de.eshg.base.centralfile.api.person.GetPersonFileStatesRequest;
 import de.eshg.base.centralfile.api.person.GetPersonFileStatesResponse;
 import de.eshg.base.centralfile.api.person.GetPersonFileStatesSortParameters;
 import de.eshg.dental.domain.model.Child;
 import java.util.List;
+import java.util.Map;
 import java.util.UUID;
 import org.springframework.stereotype.Component;
 
@@ -49,4 +51,13 @@ public class PersonClient {
     List<UUID> fileStateIds = children.stream().map(Child::getChildIdFromCentralFile).toList();
     return fetchPersonDataInBulk(fileStateIds, null);
   }
+
+  public Map<UUID, List<UUID>> fetchAssociatedExternalIdsInBulk(List<UUID> externalIds) {
+    if (externalIds.isEmpty()) {
+      return Map.of();
+    }
+    return personApi
+        .getPersonFileStateIdsAssociatedWithFileStates(new GetFileStateIdsBulkRequest(externalIds))
+        .fileStateIds();
+  }
 }
diff --git a/backend/dental/src/main/java/de/eshg/dental/domain/model/Child.java b/backend/dental/src/main/java/de/eshg/dental/domain/model/Child.java
index eac0a7e5f..a61fd46a9 100644
--- a/backend/dental/src/main/java/de/eshg/dental/domain/model/Child.java
+++ b/backend/dental/src/main/java/de/eshg/dental/domain/model/Child.java
@@ -24,6 +24,7 @@ import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
 import java.util.UUID;
+import org.apache.commons.lang3.BooleanUtils;
 import org.hibernate.annotations.BatchSize;
 
 @Entity
@@ -115,6 +116,10 @@ public class Child extends Procedure<Child, ChildTask, Person, Facility> {
         .orElse(null);
   }
 
+  public boolean isFluoridationConsentCurrentlyGiven() {
+    return BooleanUtils.isTrue(getCurrentFluoridationConsent());
+  }
+
   public void addFluoridationConsent(FluoridationConsent fluoridationConsent) {
     this.fluoridationConsents.add(fluoridationConsent);
   }
diff --git a/backend/dental/src/main/java/de/eshg/dental/domain/model/ProphylaxisSession.java b/backend/dental/src/main/java/de/eshg/dental/domain/model/ProphylaxisSession.java
index fc77bf9c2..68de07c9f 100644
--- a/backend/dental/src/main/java/de/eshg/dental/domain/model/ProphylaxisSession.java
+++ b/backend/dental/src/main/java/de/eshg/dental/domain/model/ProphylaxisSession.java
@@ -52,7 +52,7 @@ public class ProphylaxisSession extends BaseEntityWithExternalId {
   private String groupName;
 
   @DataSensitivity(PSEUDONYMIZED)
-  private boolean screening;
+  private boolean isScreening;
 
   @DataSensitivity(PSEUDONYMIZED)
   @JdbcType(PostgreSQLEnumJdbcType.class)
@@ -122,11 +122,11 @@ public class ProphylaxisSession extends BaseEntityWithExternalId {
   }
 
   public boolean isScreening() {
-    return screening;
+    return isScreening;
   }
 
-  public void setScreening(boolean screening) {
-    this.screening = screening;
+  public void setIsScreening(boolean isScreening) {
+    this.isScreening = isScreening;
   }
 
   public boolean hasFluoridationVarnish() {
diff --git a/backend/dental/src/main/java/de/eshg/dental/domain/repository/ExaminationRepository.java b/backend/dental/src/main/java/de/eshg/dental/domain/repository/ExaminationRepository.java
index 068ea5e24..50de86b5d 100644
--- a/backend/dental/src/main/java/de/eshg/dental/domain/repository/ExaminationRepository.java
+++ b/backend/dental/src/main/java/de/eshg/dental/domain/repository/ExaminationRepository.java
@@ -37,4 +37,18 @@ public interface ExaminationRepository
   List<Examination> findAllByChildStatus(@Param("status") ProcedureStatus status);
 
   Optional<Examination> findByExternalId(UUID examinationId);
+
+  @Query(
+      nativeQuery = true,
+      value =
+          """
+    select e.*
+    from examination e
+      join child c on c.id = e.child_id
+      join person pers on pers.procedure_id = c.id
+      join prophylaxis_session sess on sess.id = e.prophylaxis_session_id
+    where pers.central_file_state_id in :fileStateIds
+    order by sess.date_and_time desc, e.id;
+    """)
+  List<Examination> findAllByChildFileStateIds(List<UUID> fileStateIds);
 }
diff --git a/backend/dental/src/main/java/de/eshg/dental/mapper/ExaminationMapper.java b/backend/dental/src/main/java/de/eshg/dental/mapper/ExaminationMapper.java
index 4ee2c73a8..f6add5233 100644
--- a/backend/dental/src/main/java/de/eshg/dental/mapper/ExaminationMapper.java
+++ b/backend/dental/src/main/java/de/eshg/dental/mapper/ExaminationMapper.java
@@ -47,6 +47,7 @@ public final class ExaminationMapper {
         ProphylaxisSessionMapper.mapToDto(prophylaxisSession.getType()),
         prophylaxisSession.isScreening(),
         prophylaxisSession.hasFluoridationVarnish(),
+        examination.getChild().isFluoridationConsentCurrentlyGiven(),
         examination.getNote(),
         mapToDto(examination.getResult()));
   }
@@ -195,7 +196,7 @@ public final class ExaminationMapper {
     };
   }
 
-  private static Tooth mapToDomain(ToothDto dto) {
+  public static Tooth mapToDomain(ToothDto dto) {
     return switch (dto) {
       case null -> null;
       case T11 -> Tooth.T11;
diff --git a/backend/dental/src/main/java/de/eshg/dental/mapper/ProphylaxisSessionMapper.java b/backend/dental/src/main/java/de/eshg/dental/mapper/ProphylaxisSessionMapper.java
index 30abe15aa..9e541b112 100644
--- a/backend/dental/src/main/java/de/eshg/dental/mapper/ProphylaxisSessionMapper.java
+++ b/backend/dental/src/main/java/de/eshg/dental/mapper/ProphylaxisSessionMapper.java
@@ -12,7 +12,7 @@ import de.eshg.dental.api.ExistingUserDto;
 import de.eshg.dental.api.FluoridationVarnishDto;
 import de.eshg.dental.api.NonExistingUserDto;
 import de.eshg.dental.api.PerformingPersonDto;
-import de.eshg.dental.api.ProphylaxisSessionChildExamination;
+import de.eshg.dental.api.ProphylaxisSessionChildExaminationDto;
 import de.eshg.dental.api.ProphylaxisSessionDetailsDto;
 import de.eshg.dental.api.ProphylaxisSessionDto;
 import de.eshg.dental.api.ProphylaxisTypeDto;
@@ -24,6 +24,7 @@ import de.eshg.dental.domain.model.ProphylaxisSession;
 import de.eshg.dental.domain.model.ProphylaxisType;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.UUID;
 
@@ -85,32 +86,54 @@ public final class ProphylaxisSessionMapper {
         mapToDto(session.getType()),
         session.isScreening(),
         mapToDto(session.getFluoridationVarnish()),
-        mapToChildExaminations(prophylaxisSession.participants()),
+        getParticipants(prophylaxisSession),
         mapPersons(session.getDentistIds(), userMap),
         mapPersons(session.getZfaIds(), userMap));
   }
 
-  private static List<ProphylaxisSessionChildExamination> mapToChildExaminations(
-      Map<Examination, GetPersonFileStateResponse> fileStateResponses) {
+  private static List<ProphylaxisSessionChildExaminationDto> getParticipants(
+      ProphylaxisSessionWithAugmentedData prophylaxisSessionAugmented) {
+    Map<Examination, GetPersonFileStateResponse> fileStateResponses =
+        prophylaxisSessionAugmented.participants();
     if (fileStateResponses == null) {
       return List.of();
     }
     return fileStateResponses.entrySet().stream()
-        .map(entry -> mapToChildExamination(entry.getKey(), entry.getValue()))
+        .map(
+            entry -> {
+              Examination examination = entry.getKey();
+              GetPersonFileStateResponse fileStateResponse = entry.getValue();
+              List<Examination> previousExaminations =
+                  prophylaxisSessionAugmented
+                      .previousExaminationsByChildFileStateId()
+                      .getOrDefault(examination.getChild().getChildIdFromCentralFile(), List.of());
+
+              return mapToChildExamination(examination, fileStateResponse, previousExaminations);
+            })
         .toList();
   }
 
-  private static ProphylaxisSessionChildExamination mapToChildExamination(
-      Examination examination, GetPersonFileStateResponse fileStateResponse) {
-    return new ProphylaxisSessionChildExamination(
+  private static ProphylaxisSessionChildExaminationDto mapToChildExamination(
+      Examination examination,
+      GetPersonFileStateResponse fileStateResponse,
+      List<Examination> previousExaminations) {
+    return new ProphylaxisSessionChildExaminationDto(
+        examination.getVersion(),
+        examination.getExternalId(),
         examination.getChild().getExternalId(),
         fileStateResponse.firstName(),
         fileStateResponse.lastName(),
         fileStateResponse.dateOfBirth(),
         examination.getChild().getGroupName().trim(),
         fileStateResponse.gender(),
+        examination.getNote(),
         examination.getChild().getCurrentFluoridationConsent(),
-        ExaminationMapper.mapToDto(examination.getResult()));
+        ExaminationMapper.mapToDto(examination.getResult()),
+        previousExaminations.stream()
+            .map(Examination::getResult)
+            .filter(Objects::nonNull)
+            .map(ExaminationMapper::mapToDto)
+            .toList());
   }
 
   private static List<? extends PerformingPersonDto> mapPersons(
diff --git a/backend/dental/src/main/java/de/eshg/dental/testhelper/ChildrenPopulator.java b/backend/dental/src/main/java/de/eshg/dental/testhelper/ChildrenPopulator.java
index 0a957cf25..1ca6b9283 100644
--- a/backend/dental/src/main/java/de/eshg/dental/testhelper/ChildrenPopulator.java
+++ b/backend/dental/src/main/java/de/eshg/dental/testhelper/ChildrenPopulator.java
@@ -12,8 +12,11 @@ import de.eshg.base.SalutationDto;
 import de.eshg.base.contact.ContactApi;
 import de.eshg.base.testhelper.BaseTestHelperApi;
 import de.eshg.dental.ChildController;
+import de.eshg.dental.api.ChildDetailsDto;
 import de.eshg.dental.api.CreateChildRequest;
 import de.eshg.dental.api.CreateChildResponse;
+import de.eshg.dental.api.FluoridationConsentDto;
+import de.eshg.dental.api.UpdateChildRequest;
 import de.eshg.dental.domain.model.Child;
 import de.eshg.dental.domain.repository.ChildRepository;
 import de.eshg.testhelper.environment.EnvironmentConfig;
@@ -27,6 +30,7 @@ import java.time.Clock;
 import java.time.LocalDate;
 import java.time.Year;
 import java.util.List;
+import java.util.UUID;
 import net.datafaker.Faker;
 import net.datafaker.providers.base.Name;
 
@@ -72,10 +76,38 @@ public class ChildrenPopulator extends DentalPopulator<CreateChildResponse> {
     for (int i = numberOfPastYears; i > 0; i--) {
       Year yearInPast = Year.of(request.year() - i);
       CreateChildRequest requestForPast = withNewYear(request, yearInPast);
-      childController.createChild(requestForPast);
+      UUID childId = childController.createChild(requestForPast).id();
+      updateChild(childId, faker, i);
     }
 
-    return childController.createChild(request);
+    CreateChildResponse child = childController.createChild(request);
+    updateChild(child.id(), faker, numberOfPastYears);
+
+    return child;
+  }
+
+  private void updateChild(UUID childId, Faker faker, int numberOfPastYears) {
+    ChildDetailsDto childDetails = childController.getChild(childId);
+    childController.updateChild(
+        childId,
+        new UpdateChildRequest(
+            childDetails.version(),
+            childDetails.groupName(),
+            childDetails.getCurrentInstitution().id(),
+            randomFluoridationConsent(faker, childDetails.year())));
+  }
+
+  private FluoridationConsentDto randomFluoridationConsent(Faker faker, int year) {
+    Boolean consented = optional(faker, faker.bool().bool());
+    if (consented == null) {
+      return null;
+    }
+
+    Boolean hasAllergy = consented ? optional(faker, false) : optional(faker, faker.bool().bool());
+    LocalDate dateOfConsent =
+        LocalDate.of(year - 1, 1, 1).plusDays(faker.number().numberBetween(1, 350));
+
+    return new FluoridationConsentDto(dateOfConsent, consented, hasAllergy);
   }
 
   private CreateChildRequest randomChild(Faker faker) {
diff --git a/backend/dental/src/main/java/de/eshg/dental/testhelper/ProphylaxisSessionsPopulator.java b/backend/dental/src/main/java/de/eshg/dental/testhelper/ProphylaxisSessionsPopulator.java
index 74feca52c..0bff92c20 100644
--- a/backend/dental/src/main/java/de/eshg/dental/testhelper/ProphylaxisSessionsPopulator.java
+++ b/backend/dental/src/main/java/de/eshg/dental/testhelper/ProphylaxisSessionsPopulator.java
@@ -35,6 +35,7 @@ import de.eshg.dental.domain.repository.ExaminationRepository;
 import de.eshg.dental.domain.repository.ProphylaxisSessionRepository;
 import de.eshg.lib.keycloak.TechnicalGroup;
 import de.eshg.lib.procedure.domain.model.ProcedureStatus;
+import de.eshg.persistence.TransactionHelper;
 import de.eshg.testhelper.environment.EnvironmentConfig;
 import de.eshg.testhelper.population.ListWithTotalNumber;
 import de.eshg.testhelper.population.PopulateWithAccessTokenHelper;
@@ -60,6 +61,7 @@ public class ProphylaxisSessionsPopulator
   private final ExaminationRepository examinationRepository;
   private final ChildController childController;
   private final UserApi userApi;
+  private final TransactionHelper transactionHelper;
 
   public ProphylaxisSessionsPopulator(
       PopulationProperties properties,
@@ -74,7 +76,8 @@ public class ProphylaxisSessionsPopulator
           ChildrenPopulator childrenPopulator,
       ExaminationRepository examinationRepository,
       ChildController childController,
-      UserApi userApi) {
+      UserApi userApi,
+      TransactionHelper transactionHelper) {
     super(
         properties,
         clock,
@@ -89,6 +92,7 @@ public class ProphylaxisSessionsPopulator
     this.examinationRepository = examinationRepository;
     this.childController = childController;
     this.userApi = userApi;
+    this.transactionHelper = transactionHelper;
   }
 
   @Override
@@ -138,7 +142,7 @@ public class ProphylaxisSessionsPopulator
             dentistIds,
             zfaIds);
 
-    randomExaminations(faker);
+    transactionHelper.executeInTransaction(() -> randomExaminations(faker));
 
     return createProphylaxisSessionRequest;
   }
@@ -177,13 +181,16 @@ public class ProphylaxisSessionsPopulator
   private static ExaminationResultDto randomResult(Faker faker, Examination examination) {
     ProphylaxisSession prophylaxisSession = examination.getProphylaxisSession();
     boolean hasFluoridationVarnish = prophylaxisSession.hasFluoridationVarnish();
+    boolean isFluoridationConsentGiven =
+        examination.getChild().isFluoridationConsentCurrentlyGiven();
     if (prophylaxisSession.isScreening()) {
       return new ScreeningExaminationResultDto(
-          hasFluoridationVarnish && faker.bool().bool(),
+          hasFluoridationVarnish && isFluoridationConsentGiven && faker.bool().bool(),
           optional(faker, randomElement(faker, OralHygieneStatusDto.values())),
           randomToothDiagnoses(faker));
     } else if (hasFluoridationVarnish) {
-      return new FluoridationExaminationResultDto(faker.bool().bool());
+      return new FluoridationExaminationResultDto(
+          isFluoridationConsentGiven && faker.bool().bool());
     } else {
       if (faker.random().nextDouble() <= 0.5) {
         return new AbsenceExaminationResultDto(randomElement(faker, ReasonForAbsenceDto.values()));
diff --git a/backend/dental/src/main/resources/migrations/0028_rename_screening.xml b/backend/dental/src/main/resources/migrations/0028_rename_screening.xml
new file mode 100644
index 000000000..2686fe9f3
--- /dev/null
+++ b/backend/dental/src/main/resources/migrations/0028_rename_screening.xml
@@ -0,0 +1,15 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<!--
+ Copyright 2025 cronn GmbH
+ SPDX-License-Identifier: Apache-2.0
+-->
+
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                   xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
+  <changeSet author="GA-Lotse" id="1737988761287-1">
+    <renameColumn tableName="prophylaxis_session" newColumnName="is_screening"
+                  oldColumnName="screening"/>
+  </changeSet>
+</databaseChangeLog>
diff --git a/backend/dental/src/main/resources/migrations/changelog.xml b/backend/dental/src/main/resources/migrations/changelog.xml
index d5edebd10..1a81ab2ee 100644
--- a/backend/dental/src/main/resources/migrations/changelog.xml
+++ b/backend/dental/src/main/resources/migrations/changelog.xml
@@ -35,5 +35,6 @@
   <include file="migrations/0025_add_previous_file_state_id_to_system_progress_entry.xml"/>
   <include file="migrations/0026_add_tooth_diagnoses.xml"/>
   <include file="migrations/0027_add_absence_examination_result.xml"/>
+  <include file="migrations/0028_rename_screening.xml"/>
 
 </databaseChangeLog>
diff --git a/backend/inspection/openApi.json b/backend/inspection/openApi.json
new file mode 100644
index 000000000..75e26b9b8
--- /dev/null
+++ b/backend/inspection/openApi.json
@@ -0,0 +1,10888 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is the api for the inspection module",
+    "title" : "Inspection Module Api",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8081"
+  } ],
+  "paths" : {
+    "/approval-requests/{approvalRequestId}" : {
+      "get" : {
+        "operationId" : "getApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/approval-requests/{approvalRequestId}/decision" : {
+      "put" : {
+        "operationId" : "decideApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/Decision"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/archiving/config" : {
+      "get" : {
+        "operationId" : "getArchivingConfiguration",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetArchivingConfigurationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get archiving configuration",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/procedures" : {
+      "get" : {
+        "operationId" : "getArchivableProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `procedureType` is submitted, only procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `closedAtDay` is set, only procedures are returned which were closed at that date\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "closedAtDay",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `defaultArchivingRelevance` is submitted, only procedures are returned which have one of the submitted default archiving relevances.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "defaultArchivingRelevance",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ArchivingRelevance"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CLOSED_AT`: Sorting by closedAt attribute\n- `PROCEDURE_TYPE`: Sorting by procedureType attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetArchivableProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetArchivableProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetArchivableProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get archivable procedures",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/procedures/bulk-update-archiving-relevance" : {
+      "post" : {
+        "operationId" : "bulkUpdateProceduresArchivingRelevance",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/BulkUpdateProceduresArchivingRelevanceRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/BulkUpdateProceduresArchivingRelevanceResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Bulk update procedures archiving relevance",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/relevant-procedures" : {
+      "get" : {
+        "operationId" : "getRelevantArchivableProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `closedAtDay` is set, only procedures are returned which were closed at that date\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "closedAtDay",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `exported` is true, only procedures are returned which have already been exported.\n- If `exported` is false, only procedures are returned which have not been exported, yet.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "exported",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CLOSED_AT`: Sorting by closedAt attribute\n- `EXPORTED_AT`: Sorting by exportedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetRelevantArchivableProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetRelevantArchivableProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRelevantArchivableProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get relevant archivable procedures",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/relevant-procedures/export" : {
+      "post" : {
+        "operationId" : "exportRelevantProcedures",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ExportArchivingRelevantProceduresRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/checklists/definitions" : {
+      "get" : {
+        "operationId" : "getChecklistDefinitions",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ChecklistDefinitionsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get an overview of all checklist definitions, without version details",
+        "tags" : [ "ChecklistDefinition" ]
+      },
+      "post" : {
+        "description" : "This also creates a first <i>version</i> of the definition. Versions are numbered with integers, starting at 1.",
+        "operationId" : "createNewChecklistDefinition",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateNewChecklistDefinitionRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ChecklistDefinition"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add a new checklist definition",
+        "tags" : [ "ChecklistDefinition" ]
+      }
+    },
+    "/checklists/definitions/central-repository" : {
+      "delete" : {
+        "operationId" : "deleteChecklistDefinitionFromCentralRepo",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "isCoreChecklist",
+          "required" : true,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "in" : "query",
+          "name" : "repositoryID",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "repositoryVersion",
+          "required" : false,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the checklist definition from the central repository",
+        "tags" : [ "ChecklistDefinitionCentralRepo" ]
+      },
+      "get" : {
+        "operationId" : "getNewestChecklistDefinitionsFromCentralRepo",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetNewestChecklistDefinitionsCentralRepoResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get metadata of the newest checklist definitions from the central repository",
+        "tags" : [ "ChecklistDefinitionCentralRepo" ]
+      }
+    },
+    "/checklists/definitions/central-repository/content" : {
+      "get" : {
+        "operationId" : "getChecklistDefinitionFromCentralRepo",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "repositoryID",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "repositoryVersion",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "isCoreChecklist",
+          "required" : true,
+          "schema" : {
+            "type" : "boolean"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetChecklistDefinitionCentralRepoResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the given central repository checklist definition",
+        "tags" : [ "ChecklistDefinitionCentralRepo" ]
+      }
+    },
+    "/checklists/definitions/central-repository/sync" : {
+      "post" : {
+        "operationId" : "updateChecklistDefinitionsFromCentralRepo",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ChecklistDefinitionFromCentralRepoUpdateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ChecklistDefinitionCentralRepoResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Adds the given checklist definition from the central repository to the local checklist definitions",
+        "tags" : [ "ChecklistDefinitionCentralRepo" ]
+      }
+    },
+    "/checklists/definitions/central-repository/{cldId}/{cldVersion}" : {
+      "post" : {
+        "operationId" : "addChecklistDefinitionToCentralRepo",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "cldId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "cldVersion",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ChecklistDefinitionCentralRepoRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ChecklistDefinitionCentralRepoResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Creates the given checklist definition version in the central repository",
+        "tags" : [ "ChecklistDefinitionCentralRepo" ]
+      },
+      "put" : {
+        "operationId" : "updateChecklistDefinitionToCentralRepo",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "cldId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "cldVersion",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ChecklistDefinitionCentralRepoUpdateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ChecklistDefinitionCentralRepoResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Adds the given checklist definition version onto the existing checklist definition in the central repository",
+        "tags" : [ "ChecklistDefinitionCentralRepo" ]
+      }
+    },
+    "/checklists/definitions/versions/{id}" : {
+      "put" : {
+        "operationId" : "editDraftChecklistDefinitionVersion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ChecklistDefinitionVersionRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ChecklistDefinitionVersion"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Edits an existing checklist definition version in draft mode",
+        "tags" : [ "ChecklistDefinition" ]
+      }
+    },
+    "/checklists/definitions/versions/{versionId}" : {
+      "get" : {
+        "operationId" : "getChecklistDefinitionVersion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "versionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ChecklistDefinitionVersion"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a certain version of a checklist definition",
+        "tags" : [ "ChecklistDefinition" ]
+      }
+    },
+    "/checklists/definitions/{id}" : {
+      "post" : {
+        "operationId" : "addChecklistDefinitionVersion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ChecklistDefinitionVersionRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ChecklistDefinitionVersion"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add a new version to a checklist definition",
+        "tags" : [ "ChecklistDefinition" ]
+      }
+    },
+    "/checklists/definitions/{id}/versions" : {
+      "get" : {
+        "operationId" : "getChecklistDefinitionVersions",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ChecklistDefinition"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all versions of a checklist definition, ie. the history of changes",
+        "tags" : [ "ChecklistDefinition" ]
+      }
+    },
+    "/checklists/file/upload" : {
+      "patch" : {
+        "operationId" : "checklistUploadFile",
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "uploadMediaFileRequest" : {
+                    "$ref" : "#/components/schemas/UploadMediaFileRequest"
+                  }
+                },
+                "required" : [ "file", "uploadMediaFileRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/UpdateChecklistResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Upload new file for a checklist",
+        "tags" : [ "Checklist" ]
+      }
+    },
+    "/checklists/file/{externalId}" : {
+      "get" : {
+        "operationId" : "checklistGetFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "externalId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              },
+              "image/jpeg" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              },
+              "image/png" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a file by its external ID",
+        "tags" : [ "Checklist" ]
+      }
+    },
+    "/checklists/{inspectionExternalId}" : {
+      "get" : {
+        "operationId" : "getChecklists",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inspectionExternalId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetChecklistsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Load the checklists for the inspection with the given inspectionExternalId",
+        "tags" : [ "Checklist" ]
+      }
+    },
+    "/checklists/{inspectionExternalId}/checklist/{checklistId}" : {
+      "patch" : {
+        "operationId" : "updateChecklist",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inspectionExternalId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "checklistId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateChecklistRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/UpdateChecklistResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update the data for a checklist of an inspection",
+        "tags" : [ "Checklist" ]
+      }
+    },
+    "/checklists/{inspectionExternalId}/file/{externalId}" : {
+      "delete" : {
+        "operationId" : "checklistDeleteFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inspectionExternalId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "externalId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete a file by inspection and its external ID",
+        "tags" : [ "Checklist" ]
+      }
+    },
+    "/editor/{editorId}" : {
+      "get" : {
+        "operationId" : "loadEditor",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "editorId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Editor"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get editor content",
+        "tags" : [ "Editor" ]
+      }
+    },
+    "/editor/{editorId}/element" : {
+      "post" : {
+        "operationId" : "insertEditorElement",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "editorId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertEditorRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ModifyEditorElementResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Insert an editor element",
+        "tags" : [ "Editor" ]
+      }
+    },
+    "/editor/{editorId}/element/{elementId}" : {
+      "delete" : {
+        "operationId" : "deleteEditorElement",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "editorId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "elementId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete an editor element",
+        "tags" : [ "Editor" ]
+      },
+      "patch" : {
+        "operationId" : "updateEditorElement",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "editorId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "elementId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateEditorRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ModifyEditorElementResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update an editor element",
+        "tags" : [ "Editor" ]
+      }
+    },
+    "/facilities" : {
+      "post" : {
+        "operationId" : "addFacility",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InspAddFacilityRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InspAddFacilityResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add a new facility",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/facilities/base" : {
+      "post" : {
+        "operationId" : "linkBaseFacility",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InspLinkBaseFacilityRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InspLinkBaseFacilityResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get an existing or create a new inspection facility based on facility of the base module",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/facilities/export-banned" : {
+      "get" : {
+        "operationId" : "exportBannedFacilities",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "Exported banned facilities"
+          }
+        },
+        "summary" : "Export banned facilities",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/facilities/pending" : {
+      "get" : {
+        "operationId" : "getPendingFacilities",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "kind",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InspPendingFacilityKind"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "name",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "postalCode",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "city",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "street",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "objectTypeId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "status",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "type",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InspectionType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "phase",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InspectionPhase"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "isBefore",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "isAfter",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "hasDuplicates",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "in" : "query",
+          "name" : "banned",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 0,
+            "type" : "integer",
+            "default" : 0
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 1,
+            "type" : "integer",
+            "default" : 25
+          }
+        }, {
+          "description" : "list of sort criteria",
+          "example" : "?sort=postalCode|asc&sort=status|desc",
+          "in" : "query",
+          "name" : "sort",
+          "required" : false,
+          "schema" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InspPendingFacilitiesOverviewResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "get overview of facilities with pending inspections",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/facilities/websearch" : {
+      "get" : {
+        "operationId" : "getWebSearchOverview",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/WebSearchOverviewResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "get all facility websearch definitions",
+        "tags" : [ "WebSearch" ]
+      },
+      "post" : {
+        "description" : "This does not start the websearch automatically. Use POST /{id}/start to start it. The initial status of the websearch is IDLE.",
+        "operationId" : "createWebSearch",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/WebSearchRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/WebSearch"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "create a new websearch for facilities",
+        "tags" : [ "WebSearch" ]
+      }
+    },
+    "/facilities/websearch/entry/{entryId}" : {
+      "get" : {
+        "operationId" : "getWebSearchEntryById",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "entryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/WebSearchEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "get a facility websearch entry",
+        "tags" : [ "WebSearch" ]
+      },
+      "patch" : {
+        "operationId" : "updateWebSearchEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "entryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateWebSearchEntryRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/WebSearchEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "update a websearch entry, e.g. for setting the ignored flag",
+        "tags" : [ "WebSearch" ]
+      }
+    },
+    "/facilities/websearch/{id}" : {
+      "delete" : {
+        "operationId" : "deleteWebSearchById",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "delete a facility websearch definition",
+        "tags" : [ "WebSearch" ]
+      },
+      "get" : {
+        "operationId" : "getWebSearchById",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/WebSearch"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "get a facility websearch definition",
+        "tags" : [ "WebSearch" ]
+      },
+      "put" : {
+        "description" : "This does not start the updated websearch automatically. It will be started by a background job at a configurable time. Use POST /{id}/start to start it manually.",
+        "operationId" : "updateWebSearchById",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/WebSearchRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/WebSearch"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "update a facility websearch definition",
+        "tags" : [ "WebSearch" ]
+      }
+    },
+    "/facilities/websearch/{id}/search" : {
+      "get" : {
+        "operationId" : "search",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          }
+        }, {
+          "in" : "query",
+          "name" : "name",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "address",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "status",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/WebSearchEntryStatus"
+          }
+        }, {
+          "in" : "query",
+          "name" : "keywords",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "ignored",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sort",
+          "required" : false,
+          "schema" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/WebSearchEntriesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "search inside the results of a stored websearch",
+        "tags" : [ "WebSearch" ]
+      },
+      "put" : {
+        "operationId" : "saveQuery",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/WebSearchSaveQueryRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/WebSearch"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "save a query for a websearch",
+        "tags" : [ "WebSearch" ]
+      }
+    },
+    "/facilities/websearch/{id}/search/{queryId}" : {
+      "delete" : {
+        "operationId" : "deleteQuery",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "queryId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/WebSearch"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "delete a saved query",
+        "tags" : [ "WebSearch" ]
+      }
+    },
+    "/facilities/websearch/{id}/start" : {
+      "post" : {
+        "description" : "The status of the websearch will be set to RUNNING, and when the job is finished to either IDLE or ERRONEOUS again.",
+        "operationId" : "startWebSearch",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/WebSearch"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "start/update a websearch",
+        "tags" : [ "WebSearch" ]
+      }
+    },
+    "/facilities/{id}" : {
+      "put" : {
+        "operationId" : "updateFacility",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InspUpdateFacilityRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InspFacility"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Updates a facility",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/facilities/{id}/history" : {
+      "get" : {
+        "operationId" : "getFacilityHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InspPendingFacilitiesOverviewResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "get history of inspections for the current facility",
+        "tags" : [ "Facility" ]
+      }
+    },
+    "/feature-toggles" : {
+      "get" : {
+        "operationId" : "getFeatureToggles",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInspectionFeatureTogglesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "InspectionFeatureToggles" ]
+      }
+    },
+    "/files/{fileId}" : {
+      "delete" : {
+        "operationId" : "deleteFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Soft deletes the specified file",
+        "tags" : [ "File" ]
+      },
+      "get" : {
+        "operationId" : "getFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/Image"
+                  }, {
+                    "$ref" : "#/components/schemas/Mail"
+                  }, {
+                    "$ref" : "#/components/schemas/Pdf"
+                  } ]
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Retrieves the meta data of the specified file",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/deletion-request" : {
+      "post" : {
+        "operationId" : "requestFileDeletion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateApprovalRequestRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Request deletion of a file entry",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/download" : {
+      "get" : {
+        "operationId" : "downloadFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/meta-data" : {
+      "put" : {
+        "operationId" : "updateFileMetaData",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "oneOf" : [ {
+                  "$ref" : "#/components/schemas/ImageMetaData"
+                }, {
+                  "$ref" : "#/components/schemas/MailMetaData"
+                }, {
+                  "$ref" : "#/components/schemas/PdfMetaData"
+                } ]
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/Image"
+                  }, {
+                    "$ref" : "#/components/schemas/Mail"
+                  }, {
+                    "$ref" : "#/components/schemas/Pdf"
+                  } ]
+                }
+              }
+            },
+            "description" : "Updated file"
+          }
+        },
+        "summary" : "Updates the meta data of the specified file",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/meta-data/history" : {
+      "get" : {
+        "operationId" : "getMetaDataHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetMetaDataHistoryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "File" ]
+      }
+    },
+    "/gdpr-validation-tasks" : {
+      "get" : {
+        "operationId" : "getAllGdprValidationTasks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "status",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAllValidationTasksResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all GDPR validation tasks",
+        "tags" : [ "GdprValidationTask" ]
+      },
+      "post" : {
+        "operationId" : "addGdprValidationTask",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddGdprValidationTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "Add a GDPR validation task"
+          }
+        },
+        "summary" : "Add a GDPR validation task",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/notification-banner" : {
+      "get" : {
+        "operationId" : "getGdprNotificationBanner",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprNotificationBannerResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get data for GDPR notification banner",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}" : {
+      "delete" : {
+        "operationId" : "deleteGdprValidationTaskAndDownloadPackages",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/DeleteDownloadPackagesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the GDPR validation task with gdprProcedureId and GDPR download packages with ids from request",
+        "tags" : [ "GdprValidationTask" ]
+      },
+      "get" : {
+        "operationId" : "getGdprValidationTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprValidationTaskResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get Gdpr Validation Task by Gdpr Procedure Id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures" : {
+      "get" : {
+        "operationId" : "getGdprValidationTaskDetails",
+        "parameters" : [ {
+          "description" : "The Id of the GDPR procedure.",
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprValidationTaskDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a GDPR validation task by id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}" : {
+      "delete" : {
+        "operationId" : "deleteBusinessProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "businessProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the businessProcedure with businessProcedureId for validationTask with gdprProcedureId with type right of erasure",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}/downloadPackage" : {
+      "post" : {
+        "operationId" : "addDownloadPackage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "businessProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Creates a downloadPackage for validationTask with gdprProcedureId with the data from the procedure with businessProcedureId",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/close" : {
+      "post" : {
+        "operationId" : "closeGdprValidationTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Close a GDPR validation task"
+          }
+        },
+        "summary" : "Close a GDPR validation task",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/download-packages" : {
+      "get" : {
+        "operationId" : "getGdprDownloadPackagesInfo",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprDownloadPackagesInfoResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get approved Gdpr Download Packages by Gdpr Procedure Id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}" : {
+      "get" : {
+        "operationId" : "getGdprDownloadPackage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "downloadId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get Gdpr Download Package by the gdprProcedureId and its downloadId",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/import" : {
+      "post" : {
+        "operationId" : "importProcesses",
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  }
+                },
+                "required" : [ "file" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "object"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Start import processes",
+        "tags" : [ "Importer" ]
+      }
+    },
+    "/import/templates/inspection-import-template" : {
+      "get" : {
+        "operationId" : "getInspectionImportTemplate",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the XLSX inspection import template",
+        "tags" : [ "Importer" ]
+      }
+    },
+    "/inbox-procedures" : {
+      "get" : {
+        "description" : "Get all inbox procedures with filter, sort, and pagination options\n",
+        "operationId" : "getInboxProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `inboxProcedureType` is submitted, only inbox procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "inboxProcedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If true, inbox procedures which have no type are returned in addition to the types specified by 'inboxProcedureType'.\n- If false or not submitted, inbox procedures which have no type are not returned.\n",
+          "in" : "query",
+          "name" : "includeUntyped",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `inboxProcedureStatus` is submitted, only inbox procedures are returned which have one of the submitted statuses.\n- If not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "inboxProcedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InboxProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CREATED_AT`: Sorting by createdAt attribute\n- `MODIFIED_AT`: Sorting by modifiedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetInboxProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetInboxProceduresSortOrder"
+          }
+        }, {
+          "description" : "Number of the requested page",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        }, {
+          "description" : "Amount of requested inbox procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInboxProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get inbox procedures",
+        "tags" : [ "InboxProcedure" ]
+      },
+      "post" : {
+        "description" : "Creates an inbox procedure with an optional file upload.\n\n       Permitted file formats:\n        - Image formats: jpeg, png\n        - PDF formats: pdf/a\n        - Mail formats: eml",
+        "operationId" : "addInboxProcedure",
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "createInboxProcedureRequest" : {
+                    "$ref" : "#/components/schemas/CreateInboxProcedureRequest"
+                  },
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  }
+                },
+                "required" : [ "createInboxProcedureRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InboxProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add inbox procedure",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/inbox-procedures/{inboxProcedureId}" : {
+      "get" : {
+        "operationId" : "getInboxProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inboxProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInboxProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get inbox procedure with detailed information",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/inbox-procedures/{inboxProcedureId}/inbox-procedure-status" : {
+      "put" : {
+        "operationId" : "updateInboxProcedureStatus",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inboxProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InboxProcedureStatus"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InboxProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update status of inbox procedure",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/inspections/geo/reversegeocode" : {
+      "get" : {
+        "operationId" : "getReverseGeoCode",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "country",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "city",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "postalcode",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "street",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetReverseGeoCodeResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get geo coordinates of an address",
+        "tags" : [ "InspectionGeo" ]
+      }
+    },
+    "/inspections/report/{reportId}" : {
+      "get" : {
+        "operationId" : "downloadReport",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "reportId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Download an inspection report",
+        "tags" : [ "Inspection" ]
+      }
+    },
+    "/inspections/{id}" : {
+      "get" : {
+        "operationId" : "getInspection",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Inspection"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get details of an inspection",
+        "tags" : [ "Inspection" ]
+      },
+      "patch" : {
+        "operationId" : "updateInspection",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateInspectionRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Inspection"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update attributes of an inspection",
+        "tags" : [ "Inspection" ]
+      },
+      "post" : {
+        "operationId" : "startInspection",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/StartInspectionRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Inspection"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Starts a new inspection",
+        "tags" : [ "Inspection" ]
+      }
+    },
+    "/inspections/{id}/approve" : {
+      "post" : {
+        "operationId" : "approveInspection",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Inspection"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Approve an inspection (after finalization)",
+        "tags" : [ "Inspection" ]
+      }
+    },
+    "/inspections/{id}/cldversions" : {
+      "get" : {
+        "operationId" : "getAvailableCLDs",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InspectionAvailableCLDVersionsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get available checklist definition versions to choose from for this inspection",
+        "tags" : [ "Inspection" ]
+      }
+    },
+    "/inspections/{id}/facility-duplicates" : {
+      "get" : {
+        "operationId" : "getFacilityDuplicates",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/FacilityDuplicateReview"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get facility duplicates of an inspection",
+        "tags" : [ "Inspection" ]
+      }
+    },
+    "/inspections/{id}/finalize" : {
+      "post" : {
+        "operationId" : "finalizeInspection",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "finalizeInspectionRequest" : {
+                    "$ref" : "#/components/schemas/FinalizeInspectionRequest"
+                  },
+                  "signature" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  }
+                },
+                "required" : [ "finalizeInspectionRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Inspection"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Finalize an inspection",
+        "tags" : [ "Inspection" ]
+      }
+    },
+    "/inspections/{id}/inspection-duplicates" : {
+      "get" : {
+        "operationId" : "getInspectionDuplicates",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InspectionDuplicateReview"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get inspection duplicates of an inspection",
+        "tags" : [ "Inspection" ]
+      }
+    },
+    "/inspections/{id}/inventory" : {
+      "put" : {
+        "description" : "To delete an inventory entry, set it's count to 0.",
+        "operationId" : "modifyInventory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateInspectionModifyInventoryRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Inspection"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update an inspection: add, update or remove inventory",
+        "tags" : [ "Inspection" ]
+      }
+    },
+    "/inspections/{id}/pldrevisions" : {
+      "get" : {
+        "operationId" : "getAvailablePLDs",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InspectionAvailablePLDRevisionsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get available packlist definition revisions to choose from for this inspection",
+        "tags" : [ "Inspection" ]
+      }
+    },
+    "/inspections/{id}/resolve-facility-duplicate" : {
+      "post" : {
+        "operationId" : "resolveFacilityDuplicate",
+        "parameters" : [ {
+          "description" : "The id of the inspection",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ResolveFacilityDuplicateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Resolves a facility duplicate for an inspection by choosing a facility",
+        "tags" : [ "Inspection" ]
+      }
+    },
+    "/inspections/{id}/resolve-inspection-duplicate" : {
+      "post" : {
+        "operationId" : "resolveInspectionDuplicate",
+        "parameters" : [ {
+          "description" : "The id of the inspection",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ResolveInspectionDuplicateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Resolves an inspection duplicate for an inspection by choosing whether to keep or discard an inspection",
+        "tags" : [ "Inspection" ]
+      }
+    },
+    "/inspections/{id}/resource" : {
+      "post" : {
+        "description" : "Adds a resource to an inspection. You can not update a resource.",
+        "operationId" : "addResource",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateInspectionAddResourceRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Inspection"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update an inspection: add resource",
+        "tags" : [ "Inspection" ]
+      }
+    },
+    "/inspections/{id}/resource/{resourceId}" : {
+      "delete" : {
+        "description" : "Deletes a resource from an inspection. You can not update a resource.",
+        "operationId" : "deleteResource",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "resourceId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Inspection"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update an inspection: remove resource",
+        "tags" : [ "Inspection" ]
+      }
+    },
+    "/inspections/{id}/sync-file-state" : {
+      "post" : {
+        "operationId" : "syncInspectionFacilityFileState",
+        "parameters" : [ {
+          "description" : "The id of the inspection",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InspectionSyncFileStateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Inspection"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update a differing facility file state by taking over the data from the\nassociated reference facility\n",
+        "tags" : [ "Inspection" ]
+      }
+    },
+    "/inspections/{id}/update-file-state-and-reference" : {
+      "post" : {
+        "operationId" : "updateInspectionFacilityFileStateAndReference",
+        "parameters" : [ {
+          "description" : "The id of the inspection",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PutFacilityRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Inspection"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Perform a consistent update of the existent facility file state and its\nassociated reference facility\n",
+        "tags" : [ "Inspection" ]
+      }
+    },
+    "/inspections/{id}/viewed" : {
+      "post" : {
+        "operationId" : "inspectionViewed",
+        "parameters" : [ {
+          "description" : "The id of the inspection",
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Mark inspection as viewed in audit-log",
+        "tags" : [ "Inspection" ]
+      }
+    },
+    "/inspections/{inspectionId}/incidents" : {
+      "get" : {
+        "operationId" : "getIncidents",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inspectionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInspectionIncidentsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all incidents of an inspection",
+        "tags" : [ "InspectionIncident" ]
+      },
+      "post" : {
+        "operationId" : "createIncident",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inspectionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateInspectionIncidentRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InspectionIncident"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Creates a new incident",
+        "tags" : [ "InspectionIncident" ]
+      }
+    },
+    "/inspections/{inspectionId}/incidents/{incidentId}" : {
+      "delete" : {
+        "operationId" : "deleteIncident",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inspectionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "incidentId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete an incident",
+        "tags" : [ "InspectionIncident" ]
+      },
+      "put" : {
+        "operationId" : "updateIncident",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inspectionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "incidentId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateInspectionIncidentRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InspectionIncident"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update an incident",
+        "tags" : [ "InspectionIncident" ]
+      }
+    },
+    "/objecttypes" : {
+      "get" : {
+        "operationId" : "getObjectTypes",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetObjectTypesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all objecttypes",
+        "tags" : [ "ObjectType" ]
+      }
+    },
+    "/objecttypes/{id}" : {
+      "get" : {
+        "operationId" : "getObjectType",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SingleObjectTypeResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get details of an objecttype",
+        "tags" : [ "ObjectType" ]
+      },
+      "put" : {
+        "operationId" : "updateObjectType",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateObjectTypeRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SingleObjectTypeResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update settings of an objecttype",
+        "tags" : [ "ObjectType" ]
+      }
+    },
+    "/packlists/definitions" : {
+      "get" : {
+        "operationId" : "getPacklistDefinitions",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/PacklistDefinitionsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get an overview of all packlist definitions, without revision details",
+        "tags" : [ "PacklistDefinition" ]
+      },
+      "post" : {
+        "description" : "This also creates a first <i>revision</i> of the definition. Revisions are numbered with integers, starting at 1.",
+        "operationId" : "createNewPacklistDefinition",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateNewPacklistDefinitionRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/PacklistDefinition"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add a new packlist definition",
+        "tags" : [ "PacklistDefinition" ]
+      }
+    },
+    "/packlists/definitions/revisions/{revisionId}" : {
+      "get" : {
+        "operationId" : "getPacklistDefinitionRevision",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "revisionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/PacklistDefinitionRevision"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a certain revision of a packlist definition",
+        "tags" : [ "PacklistDefinition" ]
+      }
+    },
+    "/packlists/definitions/{id}" : {
+      "post" : {
+        "operationId" : "addPacklistDefinitionRevision",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddPacklistDefinitionRevisionRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/PacklistDefinitionRevision"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add a new revision to a packlist definition",
+        "tags" : [ "PacklistDefinition" ]
+      }
+    },
+    "/packlists/definitions/{id}/revisions" : {
+      "get" : {
+        "operationId" : "getPacklistDefinitionRevisions",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/PacklistDefinition"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all revisions of a packlist definition, ie. the history of changes",
+        "tags" : [ "PacklistDefinition" ]
+      }
+    },
+    "/packlists/{inspectionExternalId}" : {
+      "get" : {
+        "operationId" : "getPacklists",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inspectionExternalId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetPacklistsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Load the packlists for the inspection with the given inspectionExternalId",
+        "tags" : [ "Packlist" ]
+      }
+    },
+    "/packlists/{inspectionExternalId}/packlist/{packlistId}/{packlistElementId}" : {
+      "patch" : {
+        "operationId" : "checkPacklistElement",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inspectionExternalId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "packlistId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "packlistElementId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdatePacklistElementRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Packlist"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Check or uncheck packlist element",
+        "tags" : [ "Packlist" ]
+      }
+    },
+    "/procedure-metrics" : {
+      "get" : {
+        "operationId" : "getProcedureMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of procedures"
+          }
+        },
+        "summary" : "Get procedure metrics for procedures created in the given time range",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures" : {
+      "get" : {
+        "description" : "GET operation for retrieving basic information of procedures for the procedure overview.\n",
+        "operationId" : "getProcedures",
+        "parameters" : [ {
+          "description" : "Only procedures are returned where the assigneeId of at least one task equals the `assignedToId`.\nIf not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "assignedToId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureType` is submitted, only procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CREATED_AT`: Sorting by createdAt attribute\n- `MODIFIED_AT`: Sorting by modifiedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/check-file-state-usage" : {
+      "post" : {
+        "operationId" : "checkFileStateUsage",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CheckFileStateUsageRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CheckFileStateUsageResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Identify which file state IDs are still used by active procedures.",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/recent" : {
+      "get" : {
+        "operationId" : "getRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "userId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/recent/self" : {
+      "get" : {
+        "operationId" : "getSelfRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the current users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for the current user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/search" : {
+      "get" : {
+        "operationId" : "searchProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "query",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}" : {
+      "get" : {
+        "operationId" : "getDetailedProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetDetailedProcedureResponse"
+                }
+              }
+            },
+            "description" : "a single procedure with details"
+          }
+        },
+        "summary" : "Get a single procedure with details",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}/approval-requests" : {
+      "get" : {
+        "operationId" : "getApprovalRequests",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureApprovalRequestsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all approval requests related to this procedure",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}/files" : {
+      "get" : {
+        "description" : "This returns all relevant (highest version per keydocument type and non-deleted) files sorted by descending creation date.\nThat is:\n * if an progress entry has a keydocument type set, then its files are only returned if it also has the highest keydocument version of the respective key document type.\n * if an progress entry does not have a keydocument type, then its files are always returned.\n",
+        "operationId" : "getProcedureFileDetails",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureFileDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get relevant procedure files",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries" : {
+      "get" : {
+        "operationId" : "getProgressEntries",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Filter on progressEntryType",
+          "in" : "query",
+          "name" : "progressEntryType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        }, {
+          "description" : "Filter on child class of progressEntry",
+          "in" : "query",
+          "name" : "progressEntryClass",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProgressEntryClass"
+            }
+          }
+        }, {
+          "description" : "If `initiatedBy` is set with a `userId` then the following is returned:\n* Only progressEntries with `createdBy`=`userId` in case `ManualProgressEntry` or `ProcessedInboxProgressEntry`\n* Only progressEntries with `triggeredBy`=`userId` in case `SystemProgressEntry`\n",
+          "in" : "query",
+          "name" : "initiatedBy",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "description" : "Filter on triggerType.\nIf this is set, only SystemProgressEntries are returned since only SystemProgressEntries have this attribute.\n",
+          "in" : "query",
+          "name" : "triggerType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TriggerType"
+            }
+          }
+        }, {
+          "description" : "Sorting on either modifiedAt or createdAt ",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProgressEntrySortBy"
+          }
+        }, {
+          "description" : "Sorting order. Possible options  \"ASC\" for ascending and \"DESC\" for descending.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProgressEntrySortOrder"
+          }
+        }, {
+          "description" : "Maximum number of elements to return",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Index of page to be returned",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProgressEntriesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get list of procedure's progress entries",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "post" : {
+        "description" : "Creates a manual progress entry with an optional file upload.\n\n       Permitted file formats:\n        - Image formats: jpeg, png\n        - PDF formats: pdf/a\n        - Mail formats: eml",
+        "operationId" : "addProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "createManualProgressEntryRequest" : {
+                    "$ref" : "#/components/schemas/CreateManualProgressEntryRequest"
+                  },
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  }
+                },
+                "required" : [ "createManualProgressEntryRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ManualProgressEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}" : {
+      "delete" : {
+        "operationId" : "removeProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Remove a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "get" : {
+        "operationId" : "getProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProgressEntryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a progress entry",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "patch" : {
+        "operationId" : "patchProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchManualProgressEntryRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ManualProgressEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modify a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}/deletion-request" : {
+      "post" : {
+        "operationId" : "requestProgressEntryDeletion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateApprovalRequestRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Request deletion of a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}/history" : {
+      "get" : {
+        "operationId" : "getManualProgressEntryHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetManualProgressEntryHistoryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the history of a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/statistics/procedure-ids" : {
+      "post" : {
+        "operationId" : "getProcedureIds",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetProcedureIdsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureIdsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get procedure ids for procedure references",
+        "tags" : [ "StatisticsProcedureReference" ]
+      }
+    },
+    "/task-metrics" : {
+      "get" : {
+        "operationId" : "getTaskMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTaskMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of a specific procedure type"
+          }
+        },
+        "summary" : "Get tasks metrics for a procedure type of a business module for procedures created in the given time range",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks" : {
+      "get" : {
+        "operationId" : "getTasks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "assigneeId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "assignedById",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "taskTypes",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "taskStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortBy"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortOrder"
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TaskResponse"
+                }
+              }
+            },
+            "description" : "tasks"
+          }
+        },
+        "summary" : "Get tasks",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/dashboard" : {
+      "get" : {
+        "operationId" : "getTasksForDashboard",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TaskResponse"
+                }
+              }
+            },
+            "description" : "tasks"
+          }
+        },
+        "summary" : "Get tasks for the dashboard",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/team-view" : {
+      "get" : {
+        "description" : "Returns all _open_ tasks per module group member.",
+        "operationId" : "getTasksByAssignee",
+        "parameters" : [ {
+          "description" : "If provided, `assignee` must be member of the module group.\nIf not provided, all tasks for all members of the module group are returned.\n",
+          "in" : "query",
+          "name" : "assigneeId",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTaskByUserResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/{taskId}/assignment" : {
+      "put" : {
+        "operationId" : "assignTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "taskId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AssignTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Task"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/{taskId}/self-assignment" : {
+      "put" : {
+        "operationId" : "selfAssignTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "taskId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SelfAssignTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Task"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/test-data/checklists/definitions/test-data" : {
+      "post" : {
+        "operationId" : "createTestCLD",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CreateTestCLDResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create test-data for checklist definitions (CLDs)",
+        "tags" : [ "InspectionTestData" ]
+      }
+    },
+    "/test-data/inspections/test-data" : {
+      "post" : {
+        "operationId" : "createTestData",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create test data for inspections",
+        "tags" : [ "InspectionTestData" ]
+      }
+    },
+    "/test-data/osm/test-data/{filename}" : {
+      "get" : {
+        "operationId" : "downloadOsmTestData",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "filename",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Test method to download some OpenStreetMap *.osm.pbf files",
+        "tags" : [ "InspectionTestData" ]
+      }
+    },
+    "/test-helper/archiving-job" : {
+      "post" : {
+        "operationId" : "runArchivingJob",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/audit-log-storage" : {
+      "delete" : {
+        "operationId" : "clearAuditLogStorageDirectory",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/checklists/make-corrupt" : {
+      "post" : {
+        "operationId" : "makeChecklistsCorrupt",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/enabled-new-features/{featureToDisable}" : {
+      "delete" : {
+        "operationId" : "disableNewFeature",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "featureToDisable",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/InspectionFeature"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/enabled-new-features/{featureToEnable}" : {
+      "post" : {
+        "operationId" : "enableNewFeature",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "featureToEnable",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/InspectionFeature"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/textblocks" : {
+      "get" : {
+        "operationId" : "getTextBlocks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "searchQuery",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/TextBlockSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTextBlocksResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all text blocks, filtered and paginated",
+        "tags" : [ "TextBlock" ]
+      },
+      "post" : {
+        "operationId" : "createTextBlock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TextBlockRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TextBlock"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Creates a new text block",
+        "tags" : [ "TextBlock" ]
+      }
+    },
+    "/textblocks/{textBlockId}" : {
+      "delete" : {
+        "operationId" : "deleteTextBlock",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "textBlockId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete a text block",
+        "tags" : [ "TextBlock" ]
+      },
+      "get" : {
+        "operationId" : "getTextBlock",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "textBlockId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TextBlock"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a text block by its id",
+        "tags" : [ "TextBlock" ]
+      },
+      "patch" : {
+        "operationId" : "updateTextBlock",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "textBlockId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TextBlockRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TextBlock"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update the data for a text block",
+        "tags" : [ "TextBlock" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "AbstractFile" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFileReference"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "createdAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "fileName" : {
+              "type" : "string"
+            },
+            "fileSizeBytes" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "fileType" : {
+              "$ref" : "#/components/schemas/FileType"
+            },
+            "locked" : {
+              "type" : "boolean"
+            },
+            "modifiedAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/ApprovalRequestEntity"
+        } ]
+      },
+      "AbstractFileReference" : {
+        "required" : [ "@type", "deletable", "deleted", "fileId" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "deletable" : {
+            "type" : "boolean"
+          },
+          "deleted" : {
+            "type" : "boolean"
+          },
+          "fileId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "AddFacilityFileStateRequest" : {
+        "required" : [ "dataOrigin", "name" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "referenceFacilityId" : {
+            "type" : "string",
+            "description" : "Id of a referenceFacility. If this Id is provided, a new File State with the input attributes is created for that referenceFacility, regardless of any matching logic.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          }
+        },
+        "description" : "Request used for adding facilities from non-external sources"
+      },
+      "AddGdprValidationTaskRequest" : {
+        "required" : [ "gdprProcedureId", "startedAt", "type" ],
+        "type" : "object",
+        "properties" : {
+          "gdprProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "startedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }
+      },
+      "AddPacklistDefinitionRevisionRequest" : {
+        "required" : [ "elements", "name", "version" ],
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          },
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "Address" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ApprovalRequest" : {
+        "required" : [ "approvalRequestId", "createdAt", "createdBy", "operation", "reason", "status" ],
+        "type" : "object",
+        "properties" : {
+          "approvalRequestId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decidedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "decidedBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decision" : {
+            "$ref" : "#/components/schemas/Decision"
+          },
+          "entity" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/ManualProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "operation" : {
+            "$ref" : "#/components/schemas/Operation"
+          },
+          "reason" : {
+            "type" : "string"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ApprovalRequestStatus"
+          }
+        }
+      },
+      "ApprovalRequestEntity" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ApprovalRequestStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "ArchivingDetails" : {
+        "required" : [ "archivingPeriodYears", "archivingRelevance" ],
+        "type" : "object",
+        "properties" : {
+          "archivingPeriodYears" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          }
+        }
+      },
+      "ArchivingRelevance" : {
+        "type" : "string",
+        "enum" : [ "DEFAULT", "RELEVANT", "IRRELEVANT" ]
+      },
+      "ArchivingRelevanceSettings" : {
+        "required" : [ "archivingRelevance", "defaultArchivingRelevance" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "defaultArchivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          }
+        }
+      },
+      "AssignTaskRequest" : {
+        "required" : [ "assignee", "taskVersion" ],
+        "type" : "object",
+        "properties" : {
+          "assignee" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "taskVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "BulkUpdateProceduresArchivingRelevanceRequest" : {
+        "required" : [ "archivingRelevance", "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "BulkUpdateProceduresArchivingRelevanceResponse" : {
+        "required" : [ "archivingRelevance", "failedProcedures", "updatedProcedures" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "failedProcedures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "updatedProcedures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "BusinessModule" : {
+        "type" : "string",
+        "enum" : [ "INSPECTION", "SCHOOL_ENTRY", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY", "DENTAL", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "BusinessProcedureInclusionStatus" : {
+        "type" : "string",
+        "enum" : [ "INCLUDED", "UNDECIDED" ]
+      },
+      "BusinessProcedureWithInclusionStatus" : {
+        "required" : [ "businessProcedure", "inclusionStatus" ],
+        "type" : "object",
+        "properties" : {
+          "businessProcedure" : {
+            "$ref" : "#/components/schemas/Procedure"
+          },
+          "inclusionStatus" : {
+            "$ref" : "#/components/schemas/BusinessProcedureInclusionStatus"
+          }
+        }
+      },
+      "CLAudioContext" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/CLElementContext"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "help" : {
+              "type" : "string"
+            },
+            "mandatory" : {
+              "type" : "boolean"
+            },
+            "note" : {
+              "type" : "string"
+            },
+            "text" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "CLAudioField" : {
+        "required" : [ "audioMetaData", "context", "id" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/CLElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "audioMetaData" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/CLAudioMetaData"
+              }
+            },
+            "context" : {
+              "$ref" : "#/components/schemas/CLAudioContext"
+            },
+            "id" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "incident" : {
+              "type" : "boolean"
+            }
+          }
+        } ]
+      },
+      "CLAudioMetaData" : {
+        "required" : [ "audioID", "fileDate", "fileName", "fileSize" ],
+        "type" : "object",
+        "properties" : {
+          "audioID" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "fileDate" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "fileName" : {
+            "type" : "string"
+          },
+          "fileSize" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "CLCheckboxContext" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/CLElementContext"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "help" : {
+              "type" : "string"
+            },
+            "mandatory" : {
+              "type" : "boolean"
+            },
+            "note" : {
+              "type" : "string"
+            },
+            "text" : {
+              "type" : "string"
+            },
+            "textModuleFalse" : {
+              "type" : "string"
+            },
+            "textModuleTrue" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "CLCheckboxField" : {
+        "required" : [ "context", "id" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/CLElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "checked" : {
+              "type" : "boolean"
+            },
+            "context" : {
+              "$ref" : "#/components/schemas/CLCheckboxContext"
+            },
+            "id" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "incident" : {
+              "type" : "boolean"
+            }
+          }
+        } ]
+      },
+      "CLContext" : {
+        "required" : [ "defId", "deleted", "expandable", "id", "name", "published", "sections", "version" ],
+        "type" : "object",
+        "properties" : {
+          "defId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "deleted" : {
+            "type" : "boolean"
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "expandable" : {
+            "type" : "boolean"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "lastModified" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "published" : {
+            "type" : "boolean"
+          },
+          "repositoryVersion" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "sections" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CLSectionContext"
+            }
+          },
+          "validFrom" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "validTo" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "CLElement" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "mapping" : {
+            "AUDIO" : "#/components/schemas/CLAudioField",
+            "CHECKBOX" : "#/components/schemas/CLCheckboxField",
+            "IMAGE" : "#/components/schemas/CLImageField",
+            "MULTI_SELECT" : "#/components/schemas/CLMultiSelectField",
+            "SEPARATOR" : "#/components/schemas/CLSeparatorElement",
+            "SINGLE_SELECT" : "#/components/schemas/CLSingleSelectField",
+            "TEXT" : "#/components/schemas/CLTextField"
+          },
+          "propertyName" : "@type"
+        }
+      },
+      "CLElementContext" : {
+        "required" : [ "@type", "id" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "mapping" : {
+            "AUDIO" : "#/components/schemas/CLAudioContext",
+            "CHECKBOX" : "#/components/schemas/CLCheckboxContext",
+            "IMAGE" : "#/components/schemas/CLImageContext",
+            "MULTI_SELECT" : "#/components/schemas/CLMultiSelectContext",
+            "SEPARATOR" : "#/components/schemas/CLSeparatorContext",
+            "SINGLE_SELECT" : "#/components/schemas/CLSingleSelectContext",
+            "TEXT" : "#/components/schemas/CLTextElementContext"
+          },
+          "propertyName" : "@type"
+        }
+      },
+      "CLFieldOptionContext" : {
+        "required" : [ "id", "text" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "text" : {
+            "type" : "string"
+          },
+          "textModuleFalse" : {
+            "type" : "string"
+          },
+          "textModuleTrue" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CLImageContext" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/CLElementContext"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "help" : {
+              "type" : "string"
+            },
+            "mandatory" : {
+              "type" : "boolean"
+            },
+            "note" : {
+              "type" : "string"
+            },
+            "text" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "CLImageField" : {
+        "required" : [ "context", "id", "imageMetaData" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/CLElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "context" : {
+              "$ref" : "#/components/schemas/CLImageContext"
+            },
+            "id" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "imageMetaData" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/CLImageMetaData"
+              }
+            },
+            "incident" : {
+              "type" : "boolean"
+            }
+          }
+        } ]
+      },
+      "CLImageMetaData" : {
+        "required" : [ "fileDate", "fileName", "fileSize", "imageID" ],
+        "type" : "object",
+        "properties" : {
+          "fileDate" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "fileName" : {
+            "type" : "string"
+          },
+          "fileSize" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "imageID" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "CLMultiSelectContext" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/CLElementContext"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "help" : {
+              "type" : "string"
+            },
+            "items" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/CLFieldOptionContext"
+              }
+            },
+            "mandatory" : {
+              "type" : "boolean"
+            },
+            "note" : {
+              "type" : "string"
+            },
+            "text" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "CLMultiSelectField" : {
+        "required" : [ "checkedButtonNames", "context", "id" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/CLElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "checkedButtonNames" : {
+              "type" : "array",
+              "items" : {
+                "type" : "string"
+              }
+            },
+            "context" : {
+              "$ref" : "#/components/schemas/CLMultiSelectContext"
+            },
+            "id" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "incident" : {
+              "type" : "boolean"
+            }
+          }
+        } ]
+      },
+      "CLSection" : {
+        "required" : [ "context", "elements", "id" ],
+        "type" : "object",
+        "properties" : {
+          "context" : {
+            "$ref" : "#/components/schemas/CLSectionContext"
+          },
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/CLAudioField"
+              }, {
+                "$ref" : "#/components/schemas/CLCheckboxField"
+              }, {
+                "$ref" : "#/components/schemas/CLImageField"
+              }, {
+                "$ref" : "#/components/schemas/CLMultiSelectField"
+              }, {
+                "$ref" : "#/components/schemas/CLSeparatorElement"
+              }, {
+                "$ref" : "#/components/schemas/CLSingleSelectField"
+              }, {
+                "$ref" : "#/components/schemas/CLTextField"
+              } ]
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "CLSectionContext" : {
+        "required" : [ "elements", "id" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/CLAudioContext"
+              }, {
+                "$ref" : "#/components/schemas/CLCheckboxContext"
+              }, {
+                "$ref" : "#/components/schemas/CLImageContext"
+              }, {
+                "$ref" : "#/components/schemas/CLMultiSelectContext"
+              }, {
+                "$ref" : "#/components/schemas/CLSeparatorContext"
+              }, {
+                "$ref" : "#/components/schemas/CLSingleSelectContext"
+              }, {
+                "$ref" : "#/components/schemas/CLTextElementContext"
+              } ]
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "title" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CLSeparatorContext" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/CLElementContext"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "title" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "CLSeparatorElement" : {
+        "required" : [ "context" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/CLElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "context" : {
+              "$ref" : "#/components/schemas/CLSeparatorContext"
+            }
+          }
+        } ]
+      },
+      "CLSingleSelectContext" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/CLElementContext"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "help" : {
+              "type" : "string"
+            },
+            "items" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/CLFieldOptionContext"
+              }
+            },
+            "mandatory" : {
+              "type" : "boolean"
+            },
+            "note" : {
+              "type" : "string"
+            },
+            "text" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "CLSingleSelectField" : {
+        "required" : [ "context", "id" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/CLElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "checkedButtonName" : {
+              "type" : "string"
+            },
+            "context" : {
+              "$ref" : "#/components/schemas/CLSingleSelectContext"
+            },
+            "id" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "incident" : {
+              "type" : "boolean"
+            }
+          }
+        } ]
+      },
+      "CLTextElementContext" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/CLElementContext"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "help" : {
+              "type" : "string"
+            },
+            "mandatory" : {
+              "type" : "boolean"
+            },
+            "note" : {
+              "type" : "string"
+            },
+            "text" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "CLTextField" : {
+        "required" : [ "context", "id" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/CLElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "context" : {
+              "$ref" : "#/components/schemas/CLTextElementContext"
+            },
+            "id" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "incident" : {
+              "type" : "boolean"
+            },
+            "input" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "CheckFileStateUsageRequest" : {
+        "required" : [ "fileStatesIds" ],
+        "type" : "object",
+        "properties" : {
+          "fileStatesIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "CheckFileStateUsageResponse" : {
+        "required" : [ "inUse" ],
+        "type" : "object",
+        "properties" : {
+          "inUse" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "Checklist" : {
+        "required" : [ "context", "coreChecklist", "id", "sections" ],
+        "type" : "object",
+        "properties" : {
+          "context" : {
+            "$ref" : "#/components/schemas/CLContext"
+          },
+          "coreChecklist" : {
+            "type" : "boolean"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "sections" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CLSection"
+            }
+          }
+        }
+      },
+      "ChecklistDefinition" : {
+        "required" : [ "coreChecklist", "deleted", "expandable", "id", "lastModified", "mostRecentVersion", "name", "published", "versions" ],
+        "type" : "object",
+        "properties" : {
+          "coreChecklist" : {
+            "type" : "boolean"
+          },
+          "deleted" : {
+            "type" : "boolean"
+          },
+          "expandable" : {
+            "type" : "boolean"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "lastModified" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "mostRecentRepositoryVersion" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "mostRecentVersion" : {
+            "$ref" : "#/components/schemas/ChecklistDefinitionVersion"
+          },
+          "mostRecentVersionBasedOnRepo" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "objectType" : {
+            "$ref" : "#/components/schemas/ObjectTypeRef"
+          },
+          "published" : {
+            "type" : "boolean"
+          },
+          "versions" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ChecklistDefinitionVersion"
+            }
+          }
+        }
+      },
+      "ChecklistDefinitionCentralRepoMetadata" : {
+        "required" : [ "centralRepoId", "createdAt", "isCoreChecklist", "isExpandable", "name", "objectType", "origin", "version" ],
+        "type" : "object",
+        "properties" : {
+          "centralRepoId" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "changeLog" : {
+            "type" : "string"
+          },
+          "cldId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "contact" : {
+            "type" : "string"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "isCoreChecklist" : {
+            "type" : "boolean"
+          },
+          "isExpandable" : {
+            "type" : "boolean"
+          },
+          "localCldRepoVersion" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "objectType" : {
+            "type" : "string"
+          },
+          "origin" : {
+            "type" : "string"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "ChecklistDefinitionCentralRepoRequest" : {
+        "required" : [ "contact", "description" ],
+        "type" : "object",
+        "properties" : {
+          "changeLog" : {
+            "type" : "string"
+          },
+          "contact" : {
+            "type" : "string"
+          },
+          "description" : {
+            "type" : "string"
+          }
+        }
+      },
+      "ChecklistDefinitionCentralRepoResponse" : {
+        "required" : [ "centralRepositoryId", "centralRepositoryVersion", "localCldId", "localCldVersion" ],
+        "type" : "object",
+        "properties" : {
+          "centralRepositoryId" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "centralRepositoryVersion" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "localCldId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "localCldVersion" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "ChecklistDefinitionCentralRepoUpdateRequest" : {
+        "type" : "object",
+        "properties" : {
+          "changeLog" : {
+            "type" : "string"
+          },
+          "contact" : {
+            "type" : "string"
+          },
+          "description" : {
+            "type" : "string"
+          }
+        }
+      },
+      "ChecklistDefinitionFromCentralRepoUpdateRequest" : {
+        "required" : [ "centralRepoId", "centralRepoVersion", "isCoreChecklist" ],
+        "type" : "object",
+        "properties" : {
+          "centralRepoId" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "centralRepoVersion" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "isCoreChecklist" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "ChecklistDefinitionVersion" : {
+        "required" : [ "context" ],
+        "type" : "object",
+        "properties" : {
+          "context" : {
+            "$ref" : "#/components/schemas/CLContext"
+          },
+          "hasDraft" : {
+            "type" : "boolean"
+          },
+          "isCoreChecklist" : {
+            "type" : "boolean"
+          },
+          "modifiedBy" : {
+            "$ref" : "#/components/schemas/User"
+          },
+          "objectType" : {
+            "$ref" : "#/components/schemas/ObjectTypeRef"
+          }
+        }
+      },
+      "ChecklistDefinitionVersionRequest" : {
+        "required" : [ "name", "sections" ],
+        "type" : "object",
+        "properties" : {
+          "deleted" : {
+            "type" : "boolean"
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "isExpandable" : {
+            "type" : "boolean"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "published" : {
+            "type" : "boolean"
+          },
+          "sections" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CLSectionContext"
+            }
+          }
+        }
+      },
+      "ChecklistDefinitionsResponse" : {
+        "required" : [ "definitions" ],
+        "type" : "object",
+        "properties" : {
+          "definitions" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ChecklistDefinition"
+            }
+          }
+        }
+      },
+      "ContactDetails" : {
+        "required" : [ "contactType", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "$ref" : "#/components/schemas/InboxProcedureAddress"
+          },
+          "contactType" : {
+            "$ref" : "#/components/schemas/ContactType"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "emailAddress" : {
+            "type" : "string"
+          },
+          "facilityName" : {
+            "type" : "string"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "lastName" : {
+            "type" : "string"
+          },
+          "phoneNumber" : {
+            "type" : "string"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "$ref" : "#/components/schemas/Title"
+          }
+        }
+      },
+      "ContactType" : {
+        "type" : "string",
+        "enum" : [ "PRIVATE_PERSON", "FACILITY" ]
+      },
+      "CountryCode" : {
+        "type" : "string",
+        "description" : "List of country codes in ISO 3166-1 alpha-2 format. With custom extensions for stateless, non-standard countries, and unknown countries.",
+        "enum" : [ "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW", "XK", "UNKNOWN", "STATELESS" ]
+      },
+      "CreateApprovalRequestRequest" : {
+        "required" : [ "reason" ],
+        "type" : "object",
+        "properties" : {
+          "reason" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateInboxProcedureRequest" : {
+        "required" : [ "contactDetails", "inboxProgressEntry" ],
+        "type" : "object",
+        "properties" : {
+          "contactDetails" : {
+            "$ref" : "#/components/schemas/ContactDetails"
+          },
+          "inboxProcedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "inboxProgressEntry" : {
+            "$ref" : "#/components/schemas/CreateInboxProgressEntry"
+          }
+        }
+      },
+      "CreateInboxProgressEntry" : {
+        "required" : [ "inboxProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProgressEntryType" : {
+            "$ref" : "#/components/schemas/InboxProgressEntryType"
+          },
+          "messageText" : {
+            "type" : "string"
+          },
+          "subject" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateInspectionIncidentRequest" : {
+        "required" : [ "description", "externalId", "title" ],
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          },
+          "externalId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "title" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateManualProgressEntryRequest" : {
+        "required" : [ "manualProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "keyDocumentType" : {
+            "type" : "string"
+          },
+          "manualProgressEntryType" : {
+            "$ref" : "#/components/schemas/ManualProgressEntryType"
+          },
+          "note" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateNewChecklistDefinitionRequest" : {
+        "required" : [ "name", "objectTypeId", "sections" ],
+        "type" : "object",
+        "properties" : {
+          "deleted" : {
+            "type" : "boolean"
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "isCoreChecklist" : {
+            "type" : "boolean"
+          },
+          "isExpandable" : {
+            "type" : "boolean"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "objectTypeId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "published" : {
+            "type" : "boolean"
+          },
+          "sections" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CLSectionContext"
+            }
+          }
+        }
+      },
+      "CreateNewPacklistDefinitionRequest" : {
+        "required" : [ "elements", "name", "objectTypeId" ],
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          },
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "objectTypeId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "CreateTestCLDResponse" : {
+        "required" : [ "clds" ],
+        "type" : "object",
+        "properties" : {
+          "clds" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ChecklistDefinition"
+            }
+          }
+        }
+      },
+      "DataOrigin" : {
+        "type" : "string",
+        "description" : "A list of possible origins of Persons and Facility in the Central Files. EDIT will only be set automatically on changes. EXTERNAL is for entries that come, e.g., from the citizen portal. IMPORT is reserved for automatic imports. MANUAL shall be set for every creation or connection done by an employee.",
+        "enum" : [ "MANUAL", "EXTERNAL", "IMPORT", "EDIT" ]
+      },
+      "Decision" : {
+        "type" : "string",
+        "enum" : [ "GRANTED", "DENIED" ]
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "DeleteDownloadPackagesRequest" : {
+        "required" : [ "downloadIds" ],
+        "type" : "object",
+        "properties" : {
+          "downloadIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "DetailedFacility" : {
+        "required" : [ "facilityFileState", "facilityType" ],
+        "type" : "object",
+        "properties" : {
+          "facilityFileState" : {
+            "$ref" : "#/components/schemas/GetFacilityFileStateResponse"
+          },
+          "facilityType" : {
+            "$ref" : "#/components/schemas/FacilityType"
+          }
+        }
+      },
+      "DetailedPerson" : {
+        "required" : [ "person", "personType" ],
+        "type" : "object",
+        "properties" : {
+          "person" : {
+            "$ref" : "#/components/schemas/GetPersonFileStateResponse"
+          },
+          "personType" : {
+            "$ref" : "#/components/schemas/PersonType"
+          }
+        }
+      },
+      "DetailedTask" : {
+        "required" : [ "task" ],
+        "type" : "object",
+        "properties" : {
+          "assignedByName" : {
+            "type" : "string"
+          },
+          "assigneeName" : {
+            "type" : "string"
+          },
+          "task" : {
+            "$ref" : "#/components/schemas/Task"
+          }
+        }
+      },
+      "DomesticAddress" : {
+        "required" : [ "city", "country", "postalCode", "street" ],
+        "type" : "object",
+        "description" : "A usual domestic address.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "addressAddition" : {
+              "maxLength" : 100,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "A descriptive addition to the address.",
+              "example" : "2.OG links"
+            },
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "houseNumber" : {
+              "maxLength" : 11,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The house number of the address, including extensions.",
+              "example" : "1a"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "street" : {
+              "maxLength" : 55,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the street of the address, without the house number.",
+              "example" : "Beispielweg"
+            }
+          }
+        } ]
+      },
+      "Editor" : {
+        "required" : [ "editorBody", "id" ],
+        "type" : "object",
+        "properties" : {
+          "editorBody" : {
+            "$ref" : "#/components/schemas/EditorBody"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "EditorBody" : {
+        "required" : [ "elements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/EditorElementAudios"
+              }, {
+                "$ref" : "#/components/schemas/EditorElementChapter"
+              }, {
+                "$ref" : "#/components/schemas/EditorElementFullTextBlock"
+              }, {
+                "$ref" : "#/components/schemas/EditorElementImages"
+              }, {
+                "$ref" : "#/components/schemas/EditorElementQA"
+              }, {
+                "$ref" : "#/components/schemas/EditorElementSection"
+              }, {
+                "$ref" : "#/components/schemas/EditorElementSeparator"
+              }, {
+                "$ref" : "#/components/schemas/EditorElementText"
+              }, {
+                "$ref" : "#/components/schemas/EditorElementTextBlock"
+              }, {
+                "$ref" : "#/components/schemas/EditorElementTopLevelTitle"
+              } ]
+            }
+          }
+        }
+      },
+      "EditorElement" : {
+        "required" : [ "@type", "deletable", "editable", "highlighted", "id", "moveable" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "deletable" : {
+            "type" : "boolean"
+          },
+          "editable" : {
+            "type" : "boolean"
+          },
+          "highlighted" : {
+            "type" : "boolean"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "moveable" : {
+            "type" : "boolean"
+          },
+          "referenceID" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "mapping" : {
+            "AUDIOS" : "#/components/schemas/EditorElementAudios",
+            "CHAPTER" : "#/components/schemas/EditorElementChapter",
+            "FULL_TEXT_BLOCK" : "#/components/schemas/EditorElementFullTextBlock",
+            "IMAGES" : "#/components/schemas/EditorElementImages",
+            "QUESTION_AND_ANSWERS" : "#/components/schemas/EditorElementQA",
+            "SECTION" : "#/components/schemas/EditorElementSection",
+            "SEPARATOR" : "#/components/schemas/EditorElementSeparator",
+            "TEXT" : "#/components/schemas/EditorElementText",
+            "TEXT_BLOCK" : "#/components/schemas/EditorElementTextBlock",
+            "TOPLEVEL_TITLE" : "#/components/schemas/EditorElementTopLevelTitle"
+          },
+          "propertyName" : "@type"
+        }
+      },
+      "EditorElementAnswer" : {
+        "required" : [ "answerId", "answerText", "selected" ],
+        "type" : "object",
+        "properties" : {
+          "answerId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "answerText" : {
+            "type" : "string"
+          },
+          "extraText" : {
+            "type" : "string"
+          },
+          "selected" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "EditorElementAudio" : {
+        "required" : [ "externalId" ],
+        "type" : "object",
+        "properties" : {
+          "externalId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "fileDate" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "fileName" : {
+            "type" : "string"
+          },
+          "fileSize" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "EditorElementAudios" : {
+        "required" : [ "audios", "deletable", "editable", "highlighted", "id", "moveable", "title" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "audios" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/EditorElementAudio"
+              }
+            },
+            "title" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "EditorElementChapter" : {
+        "required" : [ "deletable", "editable", "highlighted", "id", "moveable", "title" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "title" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "EditorElementFullTextBlock" : {
+        "required" : [ "deletable", "editable", "highlighted", "id", "moveable", "text", "title" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "text" : {
+              "type" : "string"
+            },
+            "title" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "EditorElementImage" : {
+        "required" : [ "externalId" ],
+        "type" : "object",
+        "properties" : {
+          "externalId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "fileDate" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "fileName" : {
+            "type" : "string"
+          },
+          "fileSize" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "EditorElementImages" : {
+        "required" : [ "deletable", "editable", "highlighted", "id", "images", "moveable", "title" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "images" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/EditorElementImage"
+              }
+            },
+            "title" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "EditorElementQA" : {
+        "required" : [ "answers", "deletable", "editable", "highlighted", "id", "moveable", "title" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "answers" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/EditorElementAnswer"
+              }
+            },
+            "title" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "EditorElementSection" : {
+        "required" : [ "deletable", "editable", "highlighted", "id", "moveable", "title" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "title" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "EditorElementSeparator" : {
+        "required" : [ "deletable", "editable", "highlighted", "id", "moveable" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        } ]
+      },
+      "EditorElementText" : {
+        "required" : [ "deletable", "editable", "highlighted", "id", "moveable", "text" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "text" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "EditorElementTextBlock" : {
+        "required" : [ "deletable", "editable", "highlighted", "id", "moveable", "text", "title" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "text" : {
+              "type" : "string"
+            },
+            "title" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "EditorElementTopLevelTitle" : {
+        "required" : [ "deletable", "editable", "highlighted", "id", "moveable", "title" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "title" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "ExportArchivingRelevantProceduresRequest" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "FacilityContactPerson" : {
+        "required" : [ "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "emailAddress" : {
+            "maxLength" : 254,
+            "minLength" : 6,
+            "type" : "string",
+            "description" : "The email addresses of the Contact Person.",
+            "example" : "mail1@address.de"
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Contact Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Contact Person.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "maxLength" : 23,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The phone number of the Contact Person.",
+            "example" : "+491234567890"
+          },
+          "role" : {
+            "maxLength" : 255,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The role of the Contact Person in the Facility.",
+            "example" : "CEO"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of the Contact Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "FacilityDetails" : {
+        "required" : [ "name" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 0,
+              "type" : "string"
+            }
+          }
+        },
+        "description" : "The data relating to a facility"
+      },
+      "FacilityDuplicateReview" : {
+        "required" : [ "existingFacilities", "importedFacility" ],
+        "type" : "object",
+        "properties" : {
+          "existingFacilities" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityForDuplicateReview"
+            }
+          },
+          "importedFacility" : {
+            "$ref" : "#/components/schemas/FacilityForDuplicateReview"
+          }
+        }
+      },
+      "FacilityForDuplicateReview" : {
+        "required" : [ "city", "emailAddresses", "name", "phoneNumbers", "postalCode", "referenceId", "street" ],
+        "type" : "object",
+        "properties" : {
+          "addressAddition" : {
+            "type" : "string"
+          },
+          "city" : {
+            "type" : "string"
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "houseNo" : {
+            "type" : "string"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "objectType" : {
+            "$ref" : "#/components/schemas/ObjectTypeRef"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "postalCode" : {
+            "type" : "string"
+          },
+          "referenceId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "street" : {
+            "type" : "string"
+          }
+        }
+      },
+      "FacilityType" : {
+        "type" : "string",
+        "enum" : [ "SCHOOL", "INSPECTION", "DAYCARE", "HOSPITAL", "MEDICAL_PRACTICE", "REFUGEE_ACCOMMODATION", "OTHER" ]
+      },
+      "FileMetaData" : {
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          }
+        }
+      },
+      "FileType" : {
+        "type" : "string",
+        "enum" : [ "JPEG", "PNG", "PDF", "EML" ]
+      },
+      "FinalizeInspectionRequest" : {
+        "type" : "object",
+        "properties" : {
+          "signer" : {
+            "type" : "string"
+          }
+        }
+      },
+      "FollowupType" : {
+        "type" : "string",
+        "enum" : [ "REVIEW", "DOCUMENT_INSPECTION" ]
+      },
+      "GdprDownloadPackageInfo" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GdprFacility" : {
+        "required" : [ "address", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "dataTransmitterPseudonymId" : {
+              "type" : "string",
+              "description" : "The 'DatenübermittlerPseudonymId' of the MUK user",
+              "example" : "du-986b2b54ab89cf4ed674ad8c3126b966b54d4872"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Facility.",
+              "example" : "mail@address.de"
+            },
+            "name" : {
+              "maxLength" : 300,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the Facility.",
+              "example" : "123 Example Facility"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The phone number of the Facility.",
+              "example" : "+491234567890"
+            }
+          }
+        } ]
+      },
+      "GdprIdentificationData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "GdprPerson" : {
+        "required" : [ "address", "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "bpk2" : {
+              "type" : "string",
+              "description" : "The bpk2 of the BundId user",
+              "example" : "VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0"
+            },
+            "dateOfBirth" : {
+              "type" : "string",
+              "description" : "The date of birth of the Person.",
+              "format" : "date",
+              "example" : "2000-01-01"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Person.",
+              "example" : "mail@address.de"
+            },
+            "firstName" : {
+              "maxLength" : 80,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The given name(s) of the Person.",
+              "example" : "John"
+            },
+            "lastName" : {
+              "maxLength" : 120,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The last name of the Person.",
+              "example" : "Doe"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 0,
+              "type" : "string",
+              "description" : "The phone number of the Person.",
+              "example" : "+491234567890"
+            },
+            "salutation" : {
+              "$ref" : "#/components/schemas/Salutation"
+            },
+            "title" : {
+              "maxLength" : 119,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The academic title of the Person.",
+              "example" : "Prof. Dr."
+            }
+          }
+        } ]
+      },
+      "GdprProcedureType" : {
+        "type" : "string",
+        "description" : "A list of types of GDPR procedures.",
+        "enum" : [ "RIGHT_OF_ACCESS", "RIGHT_TO_ERASURE" ]
+      },
+      "GdprValidationTask" : {
+        "required" : [ "dueDate", "gdprProcedureId", "identificationData", "status", "type" ],
+        "type" : "object",
+        "properties" : {
+          "dueDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "gdprProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "identificationData" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GdprFacility"
+            }, {
+              "$ref" : "#/components/schemas/GdprPerson"
+            } ]
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }
+      },
+      "GdprValidationTaskSortKey" : {
+        "type" : "string",
+        "enum" : [ "CREATED_AT" ]
+      },
+      "GdprValidationTaskStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "Gender" : {
+        "type" : "string",
+        "description" : "The list of genders as specified in the German Personenstandsgesetz.",
+        "enum" : [ "NOT_SPECIFIED", "DIVERSE", "FEMALE", "MALE" ]
+      },
+      "GenericFileReference" : {
+        "required" : [ "@type", "deletable", "deleted", "fileId" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFileReference"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "GetAllValidationTasksResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GdprValidationTask"
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetArchivableProceduresResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetArchivableProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CLOSED_AT",
+        "enum" : [ "CLOSED_AT", "PROCEDURE_TYPE" ]
+      },
+      "GetArchivableProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetArchivingConfigurationResponse" : {
+        "required" : [ "archivingDetails", "gracePeriodMonths" ],
+        "type" : "object",
+        "properties" : {
+          "archivingDetails" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/ArchivingDetails"
+            }
+          },
+          "gracePeriodMonths" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetChecklistDefinitionCentralRepoResponse" : {
+        "required" : [ "checklistDefinition", "createdAt", "origin" ],
+        "type" : "object",
+        "properties" : {
+          "changeLog" : {
+            "type" : "string"
+          },
+          "checklistDefinition" : {
+            "$ref" : "#/components/schemas/ChecklistDefinition"
+          },
+          "contact" : {
+            "type" : "string"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "localCldRepoVersion" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "origin" : {
+            "type" : "string"
+          }
+        }
+      },
+      "GetChecklistsResponse" : {
+        "required" : [ "checklists" ],
+        "type" : "object",
+        "properties" : {
+          "checklists" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Checklist"
+            }
+          }
+        }
+      },
+      "GetDetailedProcedureResponse" : {
+        "required" : [ "facilities", "persons", "procedure", "tasks" ],
+        "type" : "object",
+        "properties" : {
+          "facilities" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedFacility"
+            }
+          },
+          "persons" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedPerson"
+            }
+          },
+          "procedure" : {
+            "$ref" : "#/components/schemas/Procedure"
+          },
+          "tasks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedTask"
+            }
+          }
+        }
+      },
+      "GetFacilityFileStateResponse" : {
+        "required" : [ "contactPersons", "dataOrigin", "emailAddresses", "id", "name", "phoneNumbers", "referenceVersion" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Facility.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referenceFacility it is connected to.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          }
+        }
+      },
+      "GetGdprDownloadPackagesInfoResponse" : {
+        "required" : [ "downloadPackages" ],
+        "type" : "object",
+        "properties" : {
+          "downloadPackages" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GdprDownloadPackageInfo"
+            }
+          }
+        }
+      },
+      "GetGdprNotificationBannerResponse" : {
+        "required" : [ "openValidationTasksCount" ],
+        "type" : "object",
+        "properties" : {
+          "earliestDueDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "openValidationTasksCount" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetGdprValidationTaskDetailsResponse" : {
+        "required" : [ "proceduresWithStatus", "validationTask" ],
+        "type" : "object",
+        "properties" : {
+          "proceduresWithStatus" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessProcedureWithInclusionStatus"
+            }
+          },
+          "validationTask" : {
+            "$ref" : "#/components/schemas/GdprValidationTask"
+          }
+        }
+      },
+      "GetGdprValidationTaskResponse" : {
+        "required" : [ "status" ],
+        "type" : "object",
+        "properties" : {
+          "status" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          }
+        }
+      },
+      "GetInboxProcedureResponse" : {
+        "required" : [ "inboxProcedure", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProcedure" : {
+            "$ref" : "#/components/schemas/InboxProcedure"
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetInboxProceduresResponse" : {
+        "required" : [ "inboxProcedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProcedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InboxProcedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetInboxProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "CREATED_AT" ]
+      },
+      "GetInboxProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetInspectionFeatureTogglesResponse" : {
+        "required" : [ "disabledOldFeatures", "enabledNewFeatures" ],
+        "type" : "object",
+        "properties" : {
+          "disabledOldFeatures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InspectionFeature"
+            }
+          },
+          "enabledNewFeatures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InspectionFeature"
+            }
+          }
+        }
+      },
+      "GetInspectionIncidentsResponse" : {
+        "type" : "object",
+        "properties" : {
+          "incidents" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InspectionIncident"
+            }
+          }
+        }
+      },
+      "GetManualProgressEntryHistoryResponse" : {
+        "type" : "object",
+        "properties" : {
+          "manualProgressEntryHistory" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ManualProgressEntryHistory"
+            }
+          }
+        }
+      },
+      "GetMetaDataHistoryResponse" : {
+        "type" : "object",
+        "properties" : {
+          "metaDataHistory" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ImageMetaDataHistory"
+              }, {
+                "$ref" : "#/components/schemas/MailMetaDataHistory"
+              }, {
+                "$ref" : "#/components/schemas/PdfMetaDataHistory"
+              } ]
+            }
+          }
+        }
+      },
+      "GetNewestChecklistDefinitionsCentralRepoResponse" : {
+        "required" : [ "cldCentralRepoMetadata" ],
+        "type" : "object",
+        "properties" : {
+          "cldCentralRepoMetadata" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ChecklistDefinitionCentralRepoMetadata"
+            }
+          }
+        }
+      },
+      "GetObjectTypesResponse" : {
+        "required" : [ "objectTypes" ],
+        "type" : "object",
+        "properties" : {
+          "objectTypes" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ObjectType"
+            }
+          }
+        }
+      },
+      "GetPacklistsResponse" : {
+        "required" : [ "packlists" ],
+        "type" : "object",
+        "properties" : {
+          "packlists" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Packlist"
+            }
+          }
+        }
+      },
+      "GetPersonFileStateResponse" : {
+        "required" : [ "dataOrigin", "dateOfBirth", "emailAddresses", "firstName", "gender", "id", "lastName", "phoneNumbers", "referenceVersion", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "The date of birth of the Person.",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Person.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Person.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Person.",
+            "example" : "Doe"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name at birth of the Person.",
+            "example" : "Smith"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referencePerson it is connected to. Set to 'null' if unchecked.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Person.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The place of birth (without country) of the Person.",
+            "example" : "Berlin"
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "GetProcedureApprovalRequestsResponse" : {
+        "required" : [ "approvalRequests", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "approvalRequests" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ApprovalRequest"
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetProcedureFileDetailsResponse" : {
+        "required" : [ "fileDetails", "procedureId" ],
+        "type" : "object",
+        "properties" : {
+          "fileDetails" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProgressEntryReferenceFilePair"
+            }
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GetProcedureIdsRequest" : {
+        "required" : [ "procedureReferences" ],
+        "type" : "object",
+        "properties" : {
+          "procedureReferences" : {
+            "maxItems" : 200,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetProcedureIdsResponse" : {
+        "required" : [ "referenceToId" ],
+        "type" : "object",
+        "properties" : {
+          "referenceToId" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetProcedureMetricsResponse" : {
+        "required" : [ "procedureMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "procedureMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureMetric"
+            }
+          }
+        }
+      },
+      "GetProceduresResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "MODIFIED_AT", "CREATED_AT" ]
+      },
+      "GetProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetProgressEntriesResponse" : {
+        "required" : [ "progressEntries", "resolvedUsers", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "progressEntries" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ManualProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/ProcessedInboxProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/SystemProgressEntry"
+              } ]
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetProgressEntryResponse" : {
+        "required" : [ "progressEntry", "relatedKeyDocumentProgressEntries", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "progressEntry" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/ManualProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/ProcessedInboxProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/SystemProgressEntry"
+            } ]
+          },
+          "relatedKeyDocumentProgressEntries" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ManualProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/SystemProgressEntry"
+              } ]
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetRecentProceduresResponse" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          }
+        }
+      },
+      "GetReferenceFacilityResponse" : {
+        "required" : [ "contactPersons", "dataOrigin", "emailAddresses", "id", "name", "phoneNumbers", "version" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Reference Facility. This Id MUST NOT be persisted in any other database.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "version" : {
+            "type" : "integer",
+            "description" : "Version of the entity. Each time the entity is changed, it is incremented by one.",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetRelevantArchivableProceduresResponse" : {
+        "required" : [ "fileSizeBytes", "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "fileSizeBytes" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetRelevantArchivableProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CLOSED_AT",
+        "enum" : [ "CLOSED_AT", "EXPORTED_AT" ]
+      },
+      "GetRelevantArchivableProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetReverseGeoCodeResponse" : {
+        "required" : [ "locations" ],
+        "type" : "object",
+        "properties" : {
+          "locations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GetReverseGeoCodeResponseLocation"
+            }
+          }
+        }
+      },
+      "GetReverseGeoCodeResponseLocation" : {
+        "required" : [ "latitude", "longitude" ],
+        "type" : "object",
+        "properties" : {
+          "latitude" : {
+            "type" : "string"
+          },
+          "longitude" : {
+            "type" : "string"
+          }
+        }
+      },
+      "GetTaskByUserResponse" : {
+        "required" : [ "resolvedUsers", "tasksByUser" ],
+        "type" : "object",
+        "properties" : {
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "tasksByUser" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/Task"
+              }
+            }
+          }
+        }
+      },
+      "GetTaskMetricsResponse" : {
+        "required" : [ "businessModule", "closedProcedureCount", "fastestProcedures", "procedureType", "slowestProcedures", "taskMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedProcedureCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "fastestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "slowestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "taskMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskMetric"
+            }
+          }
+        }
+      },
+      "GetTasksSortBy" : {
+        "type" : "string",
+        "enum" : [ "PRIORITY", "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "GetTasksSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetTextBlocksResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TextBlock"
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "Image" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/ImageMetaData"
+            }
+          }
+        } ]
+      },
+      "ImageMetaData" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "ImageMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "imageMetaData" : {
+              "$ref" : "#/components/schemas/ImageMetaData"
+            }
+          }
+        } ]
+      },
+      "ImportStatistics" : {
+        "required" : [ "created", "duplicated", "failed", "mergeFailed", "merged", "total" ],
+        "type" : "object",
+        "properties" : {
+          "created" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "duplicated" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "failed" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "mergeFailed" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "merged" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "total" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "InboxProcedure" : {
+        "required" : [ "contactDetails", "createdAt", "createdBy", "inboxProcedureId", "inboxProcedureStatus", "inboxProgressEntry" ],
+        "type" : "object",
+        "properties" : {
+          "closedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "contactDetails" : {
+            "$ref" : "#/components/schemas/ContactDetails"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProcedureStatus" : {
+            "$ref" : "#/components/schemas/InboxProcedureStatus"
+          },
+          "inboxProcedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "inboxProgressEntry" : {
+            "$ref" : "#/components/schemas/InboxProgressEntry"
+          }
+        }
+      },
+      "InboxProcedureAddress" : {
+        "type" : "object",
+        "properties" : {
+          "addressAddition" : {
+            "type" : "string"
+          },
+          "city" : {
+            "type" : "string"
+          },
+          "country" : {
+            "type" : "string"
+          },
+          "houseNumber" : {
+            "type" : "string"
+          },
+          "postalCode" : {
+            "type" : "string"
+          },
+          "postboxNumber" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "street" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InboxProcedureStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "InboxProgressEntry" : {
+        "required" : [ "inboxProgressEntryId", "inboxProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "fileReference" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GenericFileReference"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "inboxProgressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProgressEntryType" : {
+            "$ref" : "#/components/schemas/InboxProgressEntryType"
+          },
+          "messageText" : {
+            "type" : "string"
+          },
+          "subject" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InboxProgressEntryType" : {
+        "type" : "string",
+        "enum" : [ "LETTER", "PHONE_CALL", "EMAIL" ]
+      },
+      "InsertEditorRequest" : {
+        "required" : [ "editorElement" ],
+        "type" : "object",
+        "properties" : {
+          "editorElement" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/EditorElementAudios"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementChapter"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementFullTextBlock"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementImages"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementQA"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementSection"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementSeparator"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementText"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementTextBlock"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementTopLevelTitle"
+            } ]
+          },
+          "insertAfter" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "insertBefore" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "InspAddFacilityRequest" : {
+        "required" : [ "baseFacility" ],
+        "type" : "object",
+        "properties" : {
+          "baseFacility" : {
+            "$ref" : "#/components/schemas/AddFacilityFileStateRequest"
+          },
+          "inboxProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "webSearchEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "InspAddFacilityResponse" : {
+        "required" : [ "isNew", "procedureId", "procedureStatus" ],
+        "type" : "object",
+        "properties" : {
+          "facility" : {
+            "$ref" : "#/components/schemas/InspFacility"
+          },
+          "isNew" : {
+            "type" : "boolean"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "procedureStatus" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          }
+        }
+      },
+      "InspFacility" : {
+        "required" : [ "banned", "baseFacility", "id" ],
+        "type" : "object",
+        "properties" : {
+          "banned" : {
+            "type" : "boolean"
+          },
+          "baseFacility" : {
+            "$ref" : "#/components/schemas/GetFacilityFileStateResponse"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "objectType" : {
+            "$ref" : "#/components/schemas/ObjectType"
+          }
+        }
+      },
+      "InspLinkBaseFacilityRequest" : {
+        "required" : [ "facility" ],
+        "type" : "object",
+        "properties" : {
+          "facility" : {
+            "$ref" : "#/components/schemas/GetReferenceFacilityResponse"
+          },
+          "inboxProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "webSearchEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "InspLinkBaseFacilityResponse" : {
+        "required" : [ "inspectionId", "isNew", "procedureStatus" ],
+        "type" : "object",
+        "properties" : {
+          "inspectionId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "isNew" : {
+            "type" : "boolean"
+          },
+          "procedureStatus" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          }
+        }
+      },
+      "InspPendingFacilitiesOverviewResponse" : {
+        "required" : [ "elements", "numberOfPossibleDuplicates", "totalNumberOfElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InspPendingFacility"
+            }
+          },
+          "numberOfPossibleDuplicates" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "totalNumberOfElements" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "InspPendingFacility" : {
+        "required" : [ "centralFileStateId", "city", "id", "name", "possibleFacilityDuplicate", "postalCode", "street" ],
+        "type" : "object",
+        "properties" : {
+          "addressAddition" : {
+            "type" : "string"
+          },
+          "centralFileStateId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "city" : {
+            "type" : "string"
+          },
+          "executedFrom" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "houseNo" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inspection" : {
+            "$ref" : "#/components/schemas/InspPendingFacilityInspection"
+          },
+          "kind" : {
+            "$ref" : "#/components/schemas/InspPendingFacilityKind"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "objecttype" : {
+            "$ref" : "#/components/schemas/ObjectTypeRef"
+          },
+          "plannedFrom" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "possibleFacilityDuplicate" : {
+            "type" : "boolean"
+          },
+          "postalCode" : {
+            "type" : "string"
+          },
+          "street" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InspPendingFacilityInspection" : {
+        "required" : [ "id", "numberOfIncidents", "phase", "possibleInspectionDuplicate", "status", "type" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "numberOfIncidents" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "phase" : {
+            "$ref" : "#/components/schemas/InspectionPhase"
+          },
+          "possibleInspectionDuplicate" : {
+            "type" : "boolean"
+          },
+          "result" : {
+            "$ref" : "#/components/schemas/InspectionResult"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InspectionType"
+          }
+        }
+      },
+      "InspPendingFacilityKind" : {
+        "type" : "string",
+        "enum" : [ "NEW", "PENDING", "OVERDUE" ]
+      },
+      "InspUpdateFacilityRequest" : {
+        "required" : [ "baseFacility", "procedureId" ],
+        "type" : "object",
+        "properties" : {
+          "banned" : {
+            "type" : "boolean"
+          },
+          "baseFacility" : {
+            "$ref" : "#/components/schemas/AddFacilityFileStateRequest"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "Inspection" : {
+        "required" : [ "challenging", "externalId", "facility", "inventories", "phase", "possibleFacilityDuplicate", "possibleInspectionDuplicate", "resources", "result", "selectedChecklistDefinitionVersions", "selectedPacklistDefinitionRevisions", "status", "title", "type" ],
+        "type" : "object",
+        "properties" : {
+          "announcement" : {
+            "$ref" : "#/components/schemas/InspectionAnnouncement"
+          },
+          "assignee" : {
+            "$ref" : "#/components/schemas/User"
+          },
+          "challenging" : {
+            "type" : "boolean"
+          },
+          "executedAppointment" : {
+            "$ref" : "#/components/schemas/InspectionAppointment"
+          },
+          "externalId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "facility" : {
+            "$ref" : "#/components/schemas/InspFacility"
+          },
+          "followupInfo" : {
+            "$ref" : "#/components/schemas/InspectionFollowupInfo"
+          },
+          "incidents" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InspectionIncident"
+            }
+          },
+          "inventories" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InspectionInventory"
+            }
+          },
+          "lockedByUser" : {
+            "$ref" : "#/components/schemas/User"
+          },
+          "notes" : {
+            "type" : "string"
+          },
+          "phase" : {
+            "$ref" : "#/components/schemas/InspectionPhase"
+          },
+          "plannedAppointment" : {
+            "$ref" : "#/components/schemas/InspectionAppointment"
+          },
+          "possibleFacilityDuplicate" : {
+            "type" : "boolean"
+          },
+          "possibleInspectionDuplicate" : {
+            "type" : "boolean"
+          },
+          "reportId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "reportInfo" : {
+            "$ref" : "#/components/schemas/ReportInfo"
+          },
+          "resources" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InspectionResource"
+            }
+          },
+          "result" : {
+            "$ref" : "#/components/schemas/InspectionResult"
+          },
+          "selectedChecklistDefinitionVersions" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InspectionCLDVersion"
+            }
+          },
+          "selectedPacklistDefinitionRevisions" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InspectionPLDRevision"
+            }
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "title" : {
+            "type" : "string"
+          },
+          "travelTime" : {
+            "$ref" : "#/components/schemas/InspectionTravelTime"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InspectionType"
+          }
+        }
+      },
+      "InspectionAnnouncement" : {
+        "required" : [ "date", "type" ],
+        "type" : "object",
+        "properties" : {
+          "date" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InspectionAnnouncementType"
+          }
+        }
+      },
+      "InspectionAnnouncementType" : {
+        "type" : "string",
+        "enum" : [ "EMAIL", "PHONE" ]
+      },
+      "InspectionAppointment" : {
+        "required" : [ "end", "start" ],
+        "type" : "object",
+        "properties" : {
+          "assignedTo" : {
+            "$ref" : "#/components/schemas/User"
+          },
+          "end" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "start" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "InspectionAvailableCLDVersionsResponse" : {
+        "required" : [ "coreVersions", "isExpandable", "versions" ],
+        "type" : "object",
+        "properties" : {
+          "coreVersions" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InspectionCLDVersion"
+            }
+          },
+          "isExpandable" : {
+            "type" : "boolean"
+          },
+          "versions" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InspectionCLDVersion"
+            }
+          }
+        }
+      },
+      "InspectionAvailablePLDRevisionsResponse" : {
+        "required" : [ "revisions" ],
+        "type" : "object",
+        "properties" : {
+          "revisions" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InspectionPLDRevision"
+            }
+          }
+        }
+      },
+      "InspectionCLDVersion" : {
+        "required" : [ "definitionId", "isCoreChecklist", "isExpandable", "name", "version", "versionId" ],
+        "type" : "object",
+        "properties" : {
+          "definitionId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "isCoreChecklist" : {
+            "type" : "boolean"
+          },
+          "isExpandable" : {
+            "type" : "boolean"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "versionId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "InspectionDuplicateReview" : {
+        "required" : [ "existingInspections", "importedInspection" ],
+        "type" : "object",
+        "properties" : {
+          "existingInspections" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InspectionForDuplicateReview"
+            }
+          },
+          "importedInspection" : {
+            "$ref" : "#/components/schemas/InspectionForDuplicateReview"
+          }
+        }
+      },
+      "InspectionFeature" : {
+        "type" : "string",
+        "enum" : [ "OFFLINE" ]
+      },
+      "InspectionFollowupInfo" : {
+        "type" : "object",
+        "properties" : {
+          "followupDate" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "followupId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "followupType" : {
+            "$ref" : "#/components/schemas/FollowupType"
+          }
+        }
+      },
+      "InspectionForDuplicateReview" : {
+        "required" : [ "executedTime", "externalId", "numberOfIncidents", "result", "title", "type" ],
+        "type" : "object",
+        "properties" : {
+          "executedTime" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "externalId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "numberOfIncidents" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "result" : {
+            "$ref" : "#/components/schemas/InspectionResult"
+          },
+          "title" : {
+            "type" : "string"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InspectionType"
+          }
+        }
+      },
+      "InspectionIncident" : {
+        "required" : [ "description", "incidentId", "inspectionId", "title" ],
+        "type" : "object",
+        "properties" : {
+          "checklistNumber" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "elementNumber" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "incidentId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inspectionId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "sectionNumber" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "title" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InspectionInventory" : {
+        "required" : [ "baseInventoryId", "count", "name", "type" ],
+        "type" : "object",
+        "properties" : {
+          "baseInventoryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "bookingId" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "count" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InventoryItemType"
+          }
+        }
+      },
+      "InspectionPLDRevision" : {
+        "required" : [ "definitionId", "name", "revision", "revisionId" ],
+        "type" : "object",
+        "properties" : {
+          "definitionId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "revision" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "revisionId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "InspectionPhase" : {
+        "type" : "string",
+        "enum" : [ "NEW", "PLANNING", "READY_FOR_EXECUTION", "EXECUTING", "EXECUTED", "CREATING_REPORT_AND_INVOICE", "CLOSED" ]
+      },
+      "InspectionResource" : {
+        "required" : [ "baseResourceId", "end", "name", "start", "type" ],
+        "type" : "object",
+        "properties" : {
+          "baseResourceId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "end" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "start" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/ResourceType"
+          }
+        }
+      },
+      "InspectionResult" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "SUCCESSFUL", "FAILED", "SUCCESSFUL_WITH_INCIDENTS" ]
+      },
+      "InspectionSyncFileStateRequest" : {
+        "required" : [ "facilityVersion" ],
+        "type" : "object",
+        "properties" : {
+          "facilityVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "InspectionTravelTime" : {
+        "type" : "object",
+        "properties" : {
+          "endBufferInMinutes" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "endTime" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "startBufferInMinutes" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "startTime" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "InspectionType" : {
+        "type" : "string",
+        "enum" : [ "REGULAR", "REGULAR_AFTER_INCIDENTS", "REVIEW", "INITIAL", "COMPLAINT", "DOCUMENT_INSPECTION", "IMPORT" ]
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "InventoryItemType" : {
+        "type" : "string",
+        "description" : "The list of possible types under which Inventory Items can be categorized.",
+        "enum" : [ "VACCINE", "PROTECTIVE_EQUIPMENT", "TEST_KIT", "MISC" ]
+      },
+      "KeyDocumentAwareProgressEntry" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "keyDocumentType" : {
+            "type" : "string"
+          },
+          "keyDocumentVersion" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "Mail" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt", "removedInvalidAttachments" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/MailMetaData"
+            },
+            "removedInvalidAttachments" : {
+              "type" : "integer",
+              "format" : "int32"
+            }
+          }
+        } ]
+      },
+      "MailMetaData" : {
+        "required" : [ "mailFrom", "mailTo", "messageText", "sentDate", "subject" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "mailFrom" : {
+              "type" : "string"
+            },
+            "mailTo" : {
+              "type" : "string"
+            },
+            "messageText" : {
+              "type" : "string"
+            },
+            "sentDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "subject" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "MailMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "mailMetaData" : {
+              "$ref" : "#/components/schemas/MailMetaData"
+            }
+          }
+        } ]
+      },
+      "ManualProgressEntry" : {
+        "required" : [ "createdAt", "createdBy", "locked", "manualProgressEntryType", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "keyDocumentType" : {
+              "type" : "string"
+            },
+            "keyDocumentVersion" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "locked" : {
+              "type" : "boolean"
+            },
+            "manualProgressEntryType" : {
+              "$ref" : "#/components/schemas/ManualProgressEntryType"
+            },
+            "note" : {
+              "type" : "string"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/ApprovalRequestEntity"
+        }, {
+          "$ref" : "#/components/schemas/KeyDocumentAwareProgressEntry"
+        } ]
+      },
+      "ManualProgressEntryHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "properties" : {
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "manualProgressEntry" : {
+            "$ref" : "#/components/schemas/ManualProgressEntry"
+          }
+        }
+      },
+      "ManualProgressEntryType" : {
+        "type" : "string",
+        "enum" : [ "LETTER", "PHONE_CALL", "NOTE", "EMAIL", "IMAGE", "DOCUMENT" ]
+      },
+      "MetaData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "description" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "MetaDataHistory" : {
+        "required" : [ "@type", "changedAt" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ModifyEditorElementResponse" : {
+        "required" : [ "element" ],
+        "type" : "object",
+        "properties" : {
+          "element" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/EditorElementAudios"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementChapter"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementFullTextBlock"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementImages"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementQA"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementSection"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementSeparator"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementText"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementTextBlock"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementTopLevelTitle"
+            } ]
+          }
+        }
+      },
+      "MoveOperation" : {
+        "type" : "string",
+        "enum" : [ "UP", "DOWN" ]
+      },
+      "ObjectType" : {
+        "required" : [ "emailAnnouncement", "id", "name" ],
+        "type" : "object",
+        "properties" : {
+          "complaintInterval" : {
+            "maximum" : 9999,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "emailAnnouncement" : {
+            "type" : "boolean"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "routineInterval" : {
+            "maximum" : 9999,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "standardBufferTime" : {
+            "maximum" : 9999,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "standardDuration" : {
+            "maximum" : 99,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "ObjectTypeRef" : {
+        "required" : [ "id", "name" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "Operation" : {
+        "type" : "string",
+        "enum" : [ "DELETE" ]
+      },
+      "Packlist" : {
+        "required" : [ "elements", "id", "revisionId" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/PacklistElementDto"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "revisionId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "PacklistDefinition" : {
+        "required" : [ "id", "mostRecentRevisionId", "mostRecentRevisionNr", "name", "revisions", "version" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "mostRecentRevisionId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "mostRecentRevisionNr" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "objectType" : {
+            "$ref" : "#/components/schemas/ObjectTypeRef"
+          },
+          "revisions" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/PacklistDefinitionRevision"
+            }
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "PacklistDefinitionElement" : {
+        "required" : [ "id", "text" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "text" : {
+            "type" : "string"
+          }
+        }
+      },
+      "PacklistDefinitionRevision" : {
+        "required" : [ "defId", "elements", "id", "name", "revision", "validFrom" ],
+        "type" : "object",
+        "properties" : {
+          "defId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/PacklistDefinitionElement"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "modifiedBy" : {
+            "$ref" : "#/components/schemas/User"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "objectType" : {
+            "$ref" : "#/components/schemas/ObjectTypeRef"
+          },
+          "revision" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "validFrom" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "validTo" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "PacklistDefinitionsResponse" : {
+        "required" : [ "definitions" ],
+        "type" : "object",
+        "properties" : {
+          "definitions" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/PacklistDefinition"
+            }
+          }
+        }
+      },
+      "PacklistElementDto" : {
+        "required" : [ "id", "isChecked", "text" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "isChecked" : {
+            "type" : "boolean"
+          },
+          "text" : {
+            "type" : "string"
+          }
+        }
+      },
+      "PatchManualProgressEntryRequest" : {
+        "type" : "object",
+        "properties" : {
+          "manualProgressEntryType" : {
+            "$ref" : "#/components/schemas/ManualProgressEntryType"
+          },
+          "note" : {
+            "type" : "string",
+            "nullable" : true
+          }
+        }
+      },
+      "Pdf" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/PdfMetaData"
+            }
+          }
+        } ]
+      },
+      "PdfMetaData" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "PdfMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "pdfMetaData" : {
+              "$ref" : "#/components/schemas/PdfMetaData"
+            }
+          }
+        } ]
+      },
+      "PersonType" : {
+        "type" : "string",
+        "enum" : [ "PATIENT", "PARENT", "PROFESSIONAL" ]
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "PostboxAddress" : {
+        "required" : [ "city", "country", "postalCode", "postbox" ],
+        "type" : "object",
+        "description" : "An address which is a postbox.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "postbox" : {
+              "maxLength" : 21,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The number (or name) of the postbox.",
+              "example" : "123"
+            }
+          }
+        } ]
+      },
+      "Procedure" : {
+        "required" : [ "archivingRelevanceSettings", "businessModule", "createdAt", "modifiedAt", "procedureId", "procedureStatus", "procedureType", "summary" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevanceSettings" : {
+            "$ref" : "#/components/schemas/ArchivingRelevanceSettings"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "exportedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "procedureStatus" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "pattern" : "[a-zA-Z0-9.].+",
+            "type" : "string"
+          }
+        }
+      },
+      "ProcedureMetric" : {
+        "required" : [ "abortedCount", "businessModule", "closedCount", "inProgressCount", "openOrDraftCount", "procedureType", "totalCount" ],
+        "type" : "object",
+        "properties" : {
+          "abortedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "inProgressCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "openOrDraftCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "totalCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ProcedureStatus" : {
+        "type" : "string",
+        "enum" : [ "DRAFT", "OPEN", "IN_PROGRESS", "CLOSED", "ABORTED" ]
+      },
+      "ProcedureType" : {
+        "type" : "string",
+        "enum" : [ "REGULAR_EXAMINATION", "CAN_CHILD", "ENTRY_LEVEL", "DRAFT_CITIZEN_OFFICE_IMPORT", "DRAFT_SCHOOL_IMPORT", "INSPECTION", "TM_VACCINATION_CONSULTATION", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY_ENTRY", "MEDICAL_REGISTRY_CITIZEN_DRAFT", "MEDICAL_REGISTRY_EMPLOYEE_DRAFT", "DENTAL_CHILD", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "ProcedureWithDuration" : {
+        "required" : [ "createdAt", "id" ],
+        "type" : "object",
+        "properties" : {
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "duration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ProcessedInboxProgressEntry" : {
+        "required" : [ "createdAt", "createdBy", "inboxProcedureId", "inboxProgressEntryType", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "inboxProcedureId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "inboxProgressEntryType" : {
+              "$ref" : "#/components/schemas/InboxProgressEntryType"
+            },
+            "messageText" : {
+              "type" : "string"
+            },
+            "subject" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "ProgressEntry" : {
+        "required" : [ "@type", "createdAt", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "fileReference" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GenericFileReference"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "progressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ProgressEntryClass" : {
+        "type" : "string",
+        "enum" : [ "MANUAL_PROGRESS_ENTRY", "SYSTEM_PROGRESS_ENTRY", "PROCESSED_INBOX_PROGRESS_ENTRY" ]
+      },
+      "ProgressEntryReferenceFilePair" : {
+        "required" : [ "file", "progressEntryId" ],
+        "type" : "object",
+        "properties" : {
+          "file" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "progressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ProgressEntrySortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "ProgressEntrySortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "PutFacilityRequest" : {
+        "required" : [ "updatedFacility" ],
+        "type" : "object",
+        "properties" : {
+          "updatedFacility" : {
+            "$ref" : "#/components/schemas/FacilityDetails"
+          }
+        },
+        "description" : "Request used for performing a consistent update of file state and associated reference facility"
+      },
+      "ReportInfo" : {
+        "required" : [ "creatorUserId", "fileContentId", "fileName", "fileSize", "reportDate", "reportId" ],
+        "type" : "object",
+        "properties" : {
+          "creatorUserId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "fileContentId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "fileName" : {
+            "type" : "string"
+          },
+          "fileSize" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "reportDate" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "reportId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ResolveFacilityDuplicateRequest" : {
+        "required" : [ "chosenReferenceId" ],
+        "type" : "object",
+        "properties" : {
+          "chosenReferenceId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ResolveInspectionDuplicateRequest" : {
+        "required" : [ "keepInspection" ],
+        "type" : "object",
+        "properties" : {
+          "keepInspection" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "ResourceType" : {
+        "type" : "string",
+        "description" : "The list of possible types under which Resources can be categorized.",
+        "enum" : [ "BICYCLE", "CAR", "ROOM", "CAMERA", "MEASURING_DEVICE", "MEASURING_KIT", "MISC", "TABLET", "LAPTOP" ]
+      },
+      "Salutation" : {
+        "type" : "string",
+        "description" : "A list of categories for the salutation from which specific salutation phrases can be derived. The choice of salutation is free for every citizen and not dependent on gender.",
+        "enum" : [ "NOT_SPECIFIED", "NEUTRAL", "FEMALE", "MALE" ]
+      },
+      "SelfAssignTaskRequest" : {
+        "required" : [ "taskVersion" ],
+        "type" : "object",
+        "properties" : {
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "taskVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "SingleObjectTypeResponse" : {
+        "required" : [ "objectType" ],
+        "type" : "object",
+        "properties" : {
+          "objectType" : {
+            "$ref" : "#/components/schemas/ObjectType"
+          }
+        }
+      },
+      "SortDirection" : {
+        "type" : "string",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "StartInspectionRequest" : {
+        "required" : [ "assigneeId", "type" ],
+        "type" : "object",
+        "properties" : {
+          "assigneeId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "objectTypeId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "progressEntryText" : {
+            "type" : "string"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InspectionType"
+          }
+        }
+      },
+      "SystemProgressEntry" : {
+        "required" : [ "createdAt", "modifiedAt", "progressEntryId", "systemProgressEntryType", "triggerType" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "changeDescription" : {
+              "type" : "string"
+            },
+            "keyDocumentType" : {
+              "type" : "string"
+            },
+            "keyDocumentVersion" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "previousFileStateId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "systemProgressEntryType" : {
+              "type" : "string"
+            },
+            "triggerType" : {
+              "$ref" : "#/components/schemas/TriggerType"
+            },
+            "triggeredBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/KeyDocumentAwareProgressEntry"
+        } ]
+      },
+      "Task" : {
+        "required" : [ "businessModule", "createdAt", "isOverdue", "modifiedAt", "procedureId", "summary", "taskId", "taskStatus", "taskType", "version" ],
+        "type" : "object",
+        "properties" : {
+          "assignedById" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "assigneeId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "isOverdue" : {
+            "type" : "boolean"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "taskId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "taskStatus" : {
+            "$ref" : "#/components/schemas/TaskStatus"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "TaskMetric" : {
+        "required" : [ "moreThanTwoOccurrencesCount", "noOccurrencesCount", "oneOccurrenceCount", "taskType", "twoOccurrencesCount" ],
+        "type" : "object",
+        "properties" : {
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "moreThanTwoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "noOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "oneOccurrenceCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "twoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TaskResponse" : {
+        "required" : [ "count", "tasks" ],
+        "type" : "object",
+        "properties" : {
+          "count" : {
+            "type" : "integer",
+            "description" : "total number of tasks for this query",
+            "format" : "int64"
+          },
+          "tasks" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Task"
+            }
+          }
+        }
+      },
+      "TaskStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "TaskType" : {
+        "type" : "string",
+        "enum" : [ "BOOK_APPOINTMENT", "PERFORM_SCHOOL_ENTRY_EXAMINATION", "INSPECTION_PLANNING", "INSPECTION_EXECUTION", "INSPECTION_REPORT", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      },
+      "TextBlock" : {
+        "required" : [ "content", "id", "name" ],
+        "type" : "object",
+        "properties" : {
+          "content" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "TextBlockRequest" : {
+        "required" : [ "content", "name" ],
+        "type" : "object",
+        "properties" : {
+          "content" : {
+            "type" : "string"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "TextBlockSortKey" : {
+        "type" : "string",
+        "enum" : [ "NAME" ]
+      },
+      "Title" : {
+        "type" : "string",
+        "enum" : [ "DR", "PROF", "PROF_DR" ]
+      },
+      "TriggerType" : {
+        "type" : "string",
+        "enum" : [ "SYSTEM_AUTOMATIC", "EMPLOYEE", "CITIZEN" ]
+      },
+      "UpdateChecklist" : {
+        "required" : [ "elements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/UpdateChecklistAudio"
+              }, {
+                "$ref" : "#/components/schemas/UpdateChecklistCheckbox"
+              }, {
+                "$ref" : "#/components/schemas/UpdateChecklistImage"
+              }, {
+                "$ref" : "#/components/schemas/UpdateChecklistMultiSelect"
+              }, {
+                "$ref" : "#/components/schemas/UpdateChecklistSingleSelect"
+              }, {
+                "$ref" : "#/components/schemas/UpdateChecklistText"
+              } ]
+            }
+          }
+        }
+      },
+      "UpdateChecklistAudio" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/UpdateChecklistElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "audio" : {
+              "type" : "string",
+              "format" : "uuid",
+              "writeOnly" : true
+            },
+            "audioExternalId" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        } ]
+      },
+      "UpdateChecklistCheckbox" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/UpdateChecklistElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "checked" : {
+              "type" : "boolean"
+            }
+          }
+        } ]
+      },
+      "UpdateChecklistElement" : {
+        "required" : [ "@type", "id" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "incident" : {
+            "type" : "boolean"
+          }
+        },
+        "discriminator" : {
+          "mapping" : {
+            "AUDIO" : "#/components/schemas/UpdateChecklistAudio",
+            "CHECKBOX" : "#/components/schemas/UpdateChecklistCheckbox",
+            "IMAGE" : "#/components/schemas/UpdateChecklistImage",
+            "MULTI_SELECT" : "#/components/schemas/UpdateChecklistMultiSelect",
+            "SINGLE_SELECT" : "#/components/schemas/UpdateChecklistSingleSelect",
+            "TEXT" : "#/components/schemas/UpdateChecklistText"
+          },
+          "propertyName" : "@type"
+        }
+      },
+      "UpdateChecklistImage" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/UpdateChecklistElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "image" : {
+              "type" : "string",
+              "format" : "uuid",
+              "writeOnly" : true
+            },
+            "imageExternalId" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        } ]
+      },
+      "UpdateChecklistMultiSelect" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/UpdateChecklistElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "checkedButtonNames" : {
+              "type" : "array",
+              "items" : {
+                "type" : "string"
+              }
+            }
+          }
+        } ]
+      },
+      "UpdateChecklistRequest" : {
+        "type" : "object",
+        "properties" : {
+          "checklist" : {
+            "$ref" : "#/components/schemas/UpdateChecklist"
+          }
+        }
+      },
+      "UpdateChecklistResponse" : {
+        "required" : [ "checklist" ],
+        "type" : "object",
+        "properties" : {
+          "checklist" : {
+            "$ref" : "#/components/schemas/Checklist"
+          }
+        }
+      },
+      "UpdateChecklistSingleSelect" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/UpdateChecklistElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "checkedButtonName" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "UpdateChecklistText" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/UpdateChecklistElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "input" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "UpdateEditorRequest" : {
+        "type" : "object",
+        "properties" : {
+          "answerId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "moveOperation" : {
+            "$ref" : "#/components/schemas/MoveOperation"
+          },
+          "text" : {
+            "type" : "string"
+          },
+          "title" : {
+            "type" : "string"
+          }
+        }
+      },
+      "UpdateInspectionAddResourceRequest" : {
+        "required" : [ "end", "resourceId", "start" ],
+        "type" : "object",
+        "properties" : {
+          "end" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "resourceId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "start" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "UpdateInspectionAppointment" : {
+        "required" : [ "end", "start" ],
+        "type" : "object",
+        "properties" : {
+          "end" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "start" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "UpdateInspectionIncidentRequest" : {
+        "required" : [ "description" ],
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          },
+          "title" : {
+            "type" : "string"
+          }
+        }
+      },
+      "UpdateInspectionModifyInventoryRequest" : {
+        "required" : [ "count", "inventoryId" ],
+        "type" : "object",
+        "properties" : {
+          "bookingId" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "count" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "inventoryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "UpdateInspectionRequest" : {
+        "type" : "object",
+        "properties" : {
+          "announcementDto" : {
+            "$ref" : "#/components/schemas/InspectionAnnouncement"
+          },
+          "assigneeId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "centralFileStateID" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "challenging" : {
+            "type" : "boolean"
+          },
+          "checklistDefinitionVersionIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "executedAppointment" : {
+            "$ref" : "#/components/schemas/UpdateInspectionAppointment"
+          },
+          "followupDate" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "followupType" : {
+            "$ref" : "#/components/schemas/FollowupType"
+          },
+          "lock" : {
+            "type" : "boolean"
+          },
+          "notes" : {
+            "type" : "string"
+          },
+          "packlistDefinitionRevisionIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "plannedAppointment" : {
+            "$ref" : "#/components/schemas/UpdateInspectionAppointment"
+          },
+          "result" : {
+            "$ref" : "#/components/schemas/InspectionResult"
+          },
+          "travelTime" : {
+            "$ref" : "#/components/schemas/UpdateInspectionTravelTime"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InspectionType"
+          }
+        }
+      },
+      "UpdateInspectionTravelTime" : {
+        "type" : "object",
+        "properties" : {
+          "endBufferInMinutes" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "endTime" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "startBufferInMinutes" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "startTime" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "UpdateObjectTypeRequest" : {
+        "type" : "object",
+        "properties" : {
+          "complaintInterval" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "emailAnnouncement" : {
+            "type" : "boolean"
+          },
+          "routineInterval" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "standardBufferTime" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "standardDuration" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "UpdatePacklistElementRequest" : {
+        "required" : [ "checked" ],
+        "type" : "object",
+        "properties" : {
+          "checked" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "UpdateWebSearchEntryRequest" : {
+        "type" : "object",
+        "properties" : {
+          "ignored" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "UploadMediaFileRequest" : {
+        "required" : [ "checklistId", "fileExternalId", "inspectionExternalId", "updateElementDto" ],
+        "type" : "object",
+        "properties" : {
+          "checklistId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "fileExternalId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inspectionExternalId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "updateElementDto" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/UpdateChecklistAudio"
+            }, {
+              "$ref" : "#/components/schemas/UpdateChecklistCheckbox"
+            }, {
+              "$ref" : "#/components/schemas/UpdateChecklistImage"
+            }, {
+              "$ref" : "#/components/schemas/UpdateChecklistMultiSelect"
+            }, {
+              "$ref" : "#/components/schemas/UpdateChecklistSingleSelect"
+            }, {
+              "$ref" : "#/components/schemas/UpdateChecklistText"
+            } ]
+          }
+        }
+      },
+      "User" : {
+        "required" : [ "enabled", "firstName", "lastName", "userId", "username" ],
+        "type" : "object",
+        "properties" : {
+          "email" : {
+            "type" : "string",
+            "description" : "The email address of a user.",
+            "example" : "example@mail.de"
+          },
+          "enabled" : {
+            "type" : "boolean",
+            "description" : "True, if the user can login",
+            "example" : false
+          },
+          "externalChatUsername" : {
+            "type" : "string",
+            "description" : "The chat username of the gematik TI-Messenger (matrix chat).",
+            "example" : "@username:server"
+          },
+          "firstName" : {
+            "type" : "string",
+            "description" : "The given name(s) of a user.",
+            "example" : "John"
+          },
+          "lastName" : {
+            "type" : "string",
+            "description" : "The last name of a user.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "type" : "string",
+            "description" : "The phone number of a user.",
+            "example" : "+491234567890"
+          },
+          "userId" : {
+            "type" : "string",
+            "description" : "The Id of the user.",
+            "format" : "uuid",
+            "example" : "UUID_3"
+          },
+          "username" : {
+            "type" : "string",
+            "description" : "The username which is displayed in the application and can be used for the login.",
+            "example" : "testuser"
+          }
+        }
+      },
+      "WebSearch" : {
+        "required" : [ "basicURL", "id", "name", "queries", "searchCity", "searchStatus" ],
+        "type" : "object",
+        "properties" : {
+          "basicURL" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "lastExecution" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "lastSuccessfulExecution" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "queries" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/WebSearchQuery"
+            }
+          },
+          "runningSince" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "searchCity" : {
+            "type" : "string"
+          },
+          "searchStatus" : {
+            "$ref" : "#/components/schemas/WebSearchStatus"
+          }
+        }
+      },
+      "WebSearchEntriesResponse" : {
+        "required" : [ "entries", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "entries" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/WebSearchEntry"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "WebSearchEntry" : {
+        "required" : [ "city", "id", "ignored", "name", "postalCode", "status", "tags" ],
+        "type" : "object",
+        "properties" : {
+          "addressAddition" : {
+            "type" : "string"
+          },
+          "city" : {
+            "type" : "string"
+          },
+          "email" : {
+            "type" : "string"
+          },
+          "facilityId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "houseNumber" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "ignored" : {
+            "type" : "boolean"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "phoneNumber" : {
+            "type" : "string"
+          },
+          "postalCode" : {
+            "type" : "string"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/WebSearchEntryStatus"
+          },
+          "street" : {
+            "type" : "string"
+          },
+          "tags" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        }
+      },
+      "WebSearchEntryStatus" : {
+        "type" : "string",
+        "enum" : [ "NEW", "SAVED", "CHANGED", "DELETED" ]
+      },
+      "WebSearchOverviewEntry" : {
+        "required" : [ "basicURL", "id", "name", "searchCity", "searchStatus" ],
+        "type" : "object",
+        "properties" : {
+          "basicURL" : {
+            "type" : "string"
+          },
+          "facilityCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "lastExecution" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "lastSuccessfulExecution" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "runningSince" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "searchCity" : {
+            "type" : "string"
+          },
+          "searchStatus" : {
+            "$ref" : "#/components/schemas/WebSearchStatus"
+          }
+        }
+      },
+      "WebSearchOverviewResponse" : {
+        "required" : [ "entries" ],
+        "type" : "object",
+        "properties" : {
+          "entries" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/WebSearchOverviewEntry"
+            }
+          }
+        }
+      },
+      "WebSearchQuery" : {
+        "required" : [ "id", "queryName" ],
+        "type" : "object",
+        "properties" : {
+          "facilityAddress" : {
+            "type" : "string"
+          },
+          "facilityName" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "keywords" : {
+            "type" : "string"
+          },
+          "queryName" : {
+            "type" : "string"
+          }
+        }
+      },
+      "WebSearchRequest" : {
+        "required" : [ "basicURL", "name", "searchCity" ],
+        "type" : "object",
+        "properties" : {
+          "basicURL" : {
+            "pattern" : "^https?://.*$",
+            "type" : "string"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "searchCity" : {
+            "type" : "string"
+          }
+        }
+      },
+      "WebSearchSaveQueryRequest" : {
+        "type" : "object",
+        "properties" : {
+          "facilityAddress" : {
+            "type" : "string"
+          },
+          "facilityName" : {
+            "type" : "string"
+          },
+          "keywords" : {
+            "type" : "string"
+          },
+          "queryId" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "queryName" : {
+            "type" : "string"
+          }
+        }
+      },
+      "WebSearchStatus" : {
+        "type" : "string",
+        "enum" : [ "NEW", "IDLE", "RUNNING", "PAUSED", "ERRONEOUS" ]
+      }
+    }
+  }
+}
diff --git a/backend/inspection/openApi.yaml b/backend/inspection/openApi.yaml
deleted file mode 100644
index ee4b127ff..000000000
--- a/backend/inspection/openApi.yaml
+++ /dev/null
@@ -1,8893 +0,0 @@
-# Copyright 2025 SCOOP Software GmbH, cronn GmbH
-# SPDX-License-Identifier: AGPL-3.0-only
-
-openapi: 3.0.1
-info:
-  description: This is the api for the inspection module
-  title: Inspection Module Api
-  version: "0.1"
-servers:
-- url: http://localhost:8081
-paths:
-  /approval-requests/{approvalRequestId}:
-    get:
-      operationId: getApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      tags:
-      - ApprovalRequest
-  /approval-requests/{approvalRequestId}/decision:
-    put:
-      operationId: decideApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/Decision"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - ApprovalRequest
-  /archiving/config:
-    get:
-      operationId: getArchivingConfiguration
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetArchivingConfigurationResponse"
-          description: OK
-      summary: Get archiving configuration
-      tags:
-      - Archiving
-  /archiving/procedures:
-    get:
-      operationId: getArchivableProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `closedAtDay` is set, only procedures are returned which were closed at that date
-          - If not submitted, no filtering takes place
-        in: query
-        name: closedAtDay
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If `defaultArchivingRelevance` is submitted, only procedures are returned which have one of the submitted default archiving relevances.
-          - If not submitted, no filtering takes place
-        in: query
-        name: defaultArchivingRelevance
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ArchivingRelevance"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CLOSED_AT`: Sorting by closedAt attribute
-          - `PROCEDURE_TYPE`: Sorting by procedureType attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetArchivableProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetArchivableProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetArchivableProceduresResponse"
-          description: OK
-      summary: Get archivable procedures
-      tags:
-      - Archiving
-  /archiving/procedures/bulk-update-archiving-relevance:
-    post:
-      operationId: bulkUpdateProceduresArchivingRelevance
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/BulkUpdateProceduresArchivingRelevanceRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/BulkUpdateProceduresArchivingRelevanceResponse"
-          description: OK
-      summary: Bulk update procedures archiving relevance
-      tags:
-      - Archiving
-  /archiving/relevant-procedures:
-    get:
-      operationId: getRelevantArchivableProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `closedAtDay` is set, only procedures are returned which were closed at that date
-          - If not submitted, no filtering takes place
-        in: query
-        name: closedAtDay
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If `exported` is true, only procedures are returned which have already been exported.
-          - If `exported` is false, only procedures are returned which have not been exported, yet.
-          - If not submitted, no filtering takes place
-        in: query
-        name: exported
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          The following sorting options are available:
-          - `CLOSED_AT`: Sorting by closedAt attribute
-          - `EXPORTED_AT`: Sorting by exportedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetRelevantArchivableProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetRelevantArchivableProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRelevantArchivableProceduresResponse"
-          description: OK
-      summary: Get relevant archivable procedures
-      tags:
-      - Archiving
-  /archiving/relevant-procedures/export:
-    post:
-      operationId: exportRelevantProcedures
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ExportArchivingRelevantProceduresRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - Archiving
-  /checklists/definitions:
-    get:
-      operationId: getChecklistDefinitions
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/ChecklistDefinitionsResponse"
-          description: OK
-      summary: "Get an overview of all checklist definitions, without version details"
-      tags:
-      - ChecklistDefinition
-    post:
-      description: "This also creates a first <i>version</i> of the definition. Versions\
-        \ are numbered with integers, starting at 1."
-      operationId: createNewChecklistDefinition
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateNewChecklistDefinitionRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/ChecklistDefinition"
-          description: OK
-      summary: Add a new checklist definition
-      tags:
-      - ChecklistDefinition
-  /checklists/definitions/central-repository:
-    delete:
-      operationId: deleteChecklistDefinitionFromCentralRepo
-      parameters:
-      - in: query
-        name: isCoreChecklist
-        required: true
-        schema:
-          type: boolean
-      - in: query
-        name: repositoryID
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: repositoryVersion
-        required: false
-        schema:
-          type: integer
-          format: int32
-      responses:
-        "200":
-          description: OK
-      summary: Delete the checklist definition from the central repository
-      tags:
-      - ChecklistDefinitionCentralRepo
-    get:
-      operationId: getNewestChecklistDefinitionsFromCentralRepo
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetNewestChecklistDefinitionsCentralRepoResponse"
-          description: OK
-      summary: Get metadata of the newest checklist definitions from the central repository
-      tags:
-      - ChecklistDefinitionCentralRepo
-  /checklists/definitions/central-repository/content:
-    get:
-      operationId: getChecklistDefinitionFromCentralRepo
-      parameters:
-      - in: query
-        name: repositoryID
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: repositoryVersion
-        required: true
-        schema:
-          type: integer
-          format: int32
-      - in: query
-        name: isCoreChecklist
-        required: true
-        schema:
-          type: boolean
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetChecklistDefinitionCentralRepoResponse"
-          description: OK
-      summary: Get the given central repository checklist definition
-      tags:
-      - ChecklistDefinitionCentralRepo
-  /checklists/definitions/central-repository/sync:
-    post:
-      operationId: updateChecklistDefinitionsFromCentralRepo
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ChecklistDefinitionFromCentralRepoUpdateRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/ChecklistDefinitionCentralRepoResponse"
-          description: OK
-      summary: Adds the given checklist definition from the central repository to
-        the local checklist definitions
-      tags:
-      - ChecklistDefinitionCentralRepo
-  /checklists/definitions/central-repository/{cldId}/{cldVersion}:
-    post:
-      operationId: addChecklistDefinitionToCentralRepo
-      parameters:
-      - in: path
-        name: cldId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: cldVersion
-        required: true
-        schema:
-          type: integer
-          format: int32
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ChecklistDefinitionCentralRepoRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/ChecklistDefinitionCentralRepoResponse"
-          description: OK
-      summary: Creates the given checklist definition version in the central repository
-      tags:
-      - ChecklistDefinitionCentralRepo
-    put:
-      operationId: updateChecklistDefinitionToCentralRepo
-      parameters:
-      - in: path
-        name: cldId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: cldVersion
-        required: true
-        schema:
-          type: integer
-          format: int32
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ChecklistDefinitionCentralRepoUpdateRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/ChecklistDefinitionCentralRepoResponse"
-          description: OK
-      summary: Adds the given checklist definition version onto the existing checklist
-        definition in the central repository
-      tags:
-      - ChecklistDefinitionCentralRepo
-  /checklists/definitions/versions/{id}:
-    put:
-      operationId: editDraftChecklistDefinitionVersion
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ChecklistDefinitionVersionRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/ChecklistDefinitionVersion"
-          description: OK
-      summary: Edits an existing checklist definition version in draft mode
-      tags:
-      - ChecklistDefinition
-  /checklists/definitions/versions/{versionId}:
-    get:
-      operationId: getChecklistDefinitionVersion
-      parameters:
-      - in: path
-        name: versionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/ChecklistDefinitionVersion"
-          description: OK
-      summary: Get a certain version of a checklist definition
-      tags:
-      - ChecklistDefinition
-  /checklists/definitions/{id}:
-    post:
-      operationId: addChecklistDefinitionVersion
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ChecklistDefinitionVersionRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/ChecklistDefinitionVersion"
-          description: OK
-      summary: Add a new version to a checklist definition
-      tags:
-      - ChecklistDefinition
-  /checklists/definitions/{id}/versions:
-    get:
-      operationId: getChecklistDefinitionVersions
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/ChecklistDefinition"
-          description: OK
-      summary: "Get all versions of a checklist definition, ie. the history of changes"
-      tags:
-      - ChecklistDefinition
-  /checklists/file/upload:
-    patch:
-      operationId: checklistUploadFile
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                file:
-                  type: string
-                  format: binary
-                uploadMediaFileRequest:
-                  $ref: "#/components/schemas/UploadMediaFileRequest"
-              required:
-              - file
-              - uploadMediaFileRequest
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/UpdateChecklistResponse"
-          description: OK
-      summary: Upload new file for a checklist
-      tags:
-      - Checklist
-  /checklists/file/{externalId}:
-    get:
-      operationId: checklistGetFile
-      parameters:
-      - in: path
-        name: externalId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: binary
-            image/jpeg:
-              schema:
-                type: string
-                format: binary
-            image/png:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get a file by its external ID
-      tags:
-      - Checklist
-  /checklists/{inspectionExternalId}:
-    get:
-      operationId: getChecklists
-      parameters:
-      - in: path
-        name: inspectionExternalId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetChecklistsResponse"
-          description: OK
-      summary: Load the checklists for the inspection with the given inspectionExternalId
-      tags:
-      - Checklist
-  /checklists/{inspectionExternalId}/checklist/{checklistId}:
-    patch:
-      operationId: updateChecklist
-      parameters:
-      - in: path
-        name: inspectionExternalId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: checklistId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateChecklistRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/UpdateChecklistResponse"
-          description: OK
-      summary: Update the data for a checklist of an inspection
-      tags:
-      - Checklist
-  /checklists/{inspectionExternalId}/file/{externalId}:
-    delete:
-      operationId: checklistDeleteFile
-      parameters:
-      - in: path
-        name: inspectionExternalId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: externalId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Delete a file by inspection and its external ID
-      tags:
-      - Checklist
-  /editor/{editorId}:
-    get:
-      operationId: loadEditor
-      parameters:
-      - in: path
-        name: editorId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Editor"
-          description: OK
-      summary: Get editor content
-      tags:
-      - Editor
-  /editor/{editorId}/element:
-    post:
-      operationId: insertEditorElement
-      parameters:
-      - in: path
-        name: editorId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertEditorRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ModifyEditorElementResponse"
-          description: OK
-      summary: Insert an editor element
-      tags:
-      - Editor
-  /editor/{editorId}/element/{elementId}:
-    delete:
-      operationId: deleteEditorElement
-      parameters:
-      - in: path
-        name: editorId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: elementId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Delete an editor element
-      tags:
-      - Editor
-    patch:
-      operationId: updateEditorElement
-      parameters:
-      - in: path
-        name: editorId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: elementId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateEditorRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ModifyEditorElementResponse"
-          description: OK
-      summary: Update an editor element
-      tags:
-      - Editor
-  /facilities:
-    post:
-      operationId: addFacility
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InspAddFacilityRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/InspAddFacilityResponse"
-          description: OK
-      summary: Add a new facility
-      tags:
-      - Facility
-  /facilities/base:
-    post:
-      operationId: linkBaseFacility
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InspLinkBaseFacilityRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/InspLinkBaseFacilityResponse"
-          description: OK
-      summary: Get an existing or create a new inspection facility based on facility
-        of the base module
-      tags:
-      - Facility
-  /facilities/export-banned:
-    get:
-      operationId: exportBannedFacilities
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: binary
-          description: Exported banned facilities
-      summary: Export banned facilities
-      tags:
-      - Facility
-  /facilities/pending:
-    get:
-      operationId: getPendingFacilities
-      parameters:
-      - in: query
-        name: kind
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/InspPendingFacilityKind"
-          uniqueItems: true
-      - in: query
-        name: name
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: postalCode
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: city
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: street
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: objectTypeId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: status
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: type
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/InspectionType"
-          uniqueItems: true
-      - in: query
-        name: phase
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/InspectionPhase"
-          uniqueItems: true
-      - in: query
-        name: isBefore
-        required: false
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: isAfter
-        required: false
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: hasDuplicates
-        required: false
-        schema:
-          type: boolean
-      - in: query
-        name: banned
-        required: false
-        schema:
-          type: boolean
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          default: 0
-          maximum: 200
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          default: 25
-          maximum: 2000
-          minimum: 1
-      - description: list of sort criteria
-        example: ?sort=postalCode|asc&sort=status|desc
-        in: query
-        name: sort
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/InspPendingFacilitiesOverviewResponse"
-          description: OK
-      summary: get overview of facilities with pending inspections
-      tags:
-      - Facility
-  /facilities/websearch:
-    get:
-      operationId: getWebSearchOverview
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/WebSearchOverviewResponse"
-          description: OK
-      summary: get all facility websearch definitions
-      tags:
-      - WebSearch
-    post:
-      description: "This does not start the websearch automatically. Use POST /{id}/start\
-        \ to start it. The initial status of the websearch is IDLE."
-      operationId: createWebSearch
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/WebSearchRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/WebSearch"
-          description: OK
-      summary: create a new websearch for facilities
-      tags:
-      - WebSearch
-  /facilities/websearch/entry/{entryId}:
-    get:
-      operationId: getWebSearchEntryById
-      parameters:
-      - in: path
-        name: entryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/WebSearchEntry"
-          description: OK
-      summary: get a facility websearch entry
-      tags:
-      - WebSearch
-    patch:
-      operationId: updateWebSearchEntry
-      parameters:
-      - in: path
-        name: entryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateWebSearchEntryRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/WebSearchEntry"
-          description: OK
-      summary: "update a websearch entry, e.g. for setting the ignored flag"
-      tags:
-      - WebSearch
-  /facilities/websearch/{id}:
-    delete:
-      operationId: deleteWebSearchById
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: delete a facility websearch definition
-      tags:
-      - WebSearch
-    get:
-      operationId: getWebSearchById
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/WebSearch"
-          description: OK
-      summary: get a facility websearch definition
-      tags:
-      - WebSearch
-    put:
-      description: "This does not start the updated websearch automatically. It will\
-        \ be started by a background job at a configurable time. Use POST /{id}/start\
-        \ to start it manually."
-      operationId: updateWebSearchById
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/WebSearchRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/WebSearch"
-          description: OK
-      summary: update a facility websearch definition
-      tags:
-      - WebSearch
-  /facilities/websearch/{id}/search:
-    get:
-      operationId: search
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 25
-      - in: query
-        name: name
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: address
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: status
-        required: false
-        schema:
-          $ref: "#/components/schemas/WebSearchEntryStatus"
-      - in: query
-        name: keywords
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: ignored
-        required: false
-        schema:
-          type: boolean
-      - in: query
-        name: sort
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/WebSearchEntriesResponse"
-          description: OK
-      summary: search inside the results of a stored websearch
-      tags:
-      - WebSearch
-    put:
-      operationId: saveQuery
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/WebSearchSaveQueryRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/WebSearch"
-          description: OK
-      summary: save a query for a websearch
-      tags:
-      - WebSearch
-  /facilities/websearch/{id}/search/{queryId}:
-    delete:
-      operationId: deleteQuery
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: queryId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/WebSearch"
-          description: OK
-      summary: delete a saved query
-      tags:
-      - WebSearch
-  /facilities/websearch/{id}/start:
-    post:
-      description: "The status of the websearch will be set to RUNNING, and when the\
-        \ job is finished to either IDLE or ERRONEOUS again."
-      operationId: startWebSearch
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/WebSearch"
-          description: OK
-      summary: start/update a websearch
-      tags:
-      - WebSearch
-  /facilities/{id}:
-    put:
-      operationId: updateFacility
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InspUpdateFacilityRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/InspFacility"
-          description: OK
-      summary: Updates a facility
-      tags:
-      - Facility
-  /facilities/{id}/history:
-    get:
-      operationId: getFacilityHistory
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/InspPendingFacilitiesOverviewResponse"
-          description: OK
-      summary: get history of inspections for the current facility
-      tags:
-      - Facility
-  /feature-toggles:
-    get:
-      operationId: getFeatureToggles
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInspectionFeatureTogglesResponse"
-          description: OK
-      tags:
-      - InspectionFeatureToggles
-  /files/{fileId}:
-    delete:
-      operationId: deleteFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Soft deletes the specified file
-      tags:
-      - File
-    get:
-      operationId: getFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/Image"
-                - $ref: "#/components/schemas/Mail"
-                - $ref: "#/components/schemas/Pdf"
-          description: OK
-      summary: Retrieves the meta data of the specified file
-      tags:
-      - File
-  /files/{fileId}/deletion-request:
-    post:
-      operationId: requestFileDeletion
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateApprovalRequestRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      summary: Request deletion of a file entry
-      tags:
-      - File
-  /files/{fileId}/download:
-    get:
-      operationId: downloadFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - File
-  /files/{fileId}/meta-data:
-    put:
-      operationId: updateFileMetaData
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              oneOf:
-              - $ref: "#/components/schemas/ImageMetaData"
-              - $ref: "#/components/schemas/MailMetaData"
-              - $ref: "#/components/schemas/PdfMetaData"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/Image"
-                - $ref: "#/components/schemas/Mail"
-                - $ref: "#/components/schemas/Pdf"
-          description: Updated file
-      summary: Updates the meta data of the specified file
-      tags:
-      - File
-  /files/{fileId}/meta-data/history:
-    get:
-      operationId: getMetaDataHistory
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetMetaDataHistoryResponse"
-          description: OK
-      tags:
-      - File
-  /gdpr-validation-tasks:
-    get:
-      operationId: getAllGdprValidationTasks
-      parameters:
-      - in: query
-        name: status
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprValidationTaskSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAllValidationTasksResponse"
-          description: OK
-      summary: Get all GDPR validation tasks
-      tags:
-      - GdprValidationTask
-    post:
-      operationId: addGdprValidationTask
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddGdprValidationTaskRequest"
-        required: true
-      responses:
-        "200":
-          description: Add a GDPR validation task
-      summary: Add a GDPR validation task
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/notification-banner:
-    get:
-      operationId: getGdprNotificationBanner
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprNotificationBannerResponse"
-          description: OK
-      summary: Get data for GDPR notification banner
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}:
-    delete:
-      operationId: deleteGdprValidationTaskAndDownloadPackages
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/DeleteDownloadPackagesRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Delete the GDPR validation task with gdprProcedureId and GDPR download
-        packages with ids from request
-      tags:
-      - GdprValidationTask
-    get:
-      operationId: getGdprValidationTask
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprValidationTaskResponse"
-          description: OK
-      summary: Get Gdpr Validation Task by Gdpr Procedure Id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures:
-    get:
-      operationId: getGdprValidationTaskDetails
-      parameters:
-      - description: The Id of the GDPR procedure.
-        in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprValidationTaskDetailsResponse"
-          description: OK
-      summary: Get a GDPR validation task by id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}:
-    delete:
-      operationId: deleteBusinessProcedure
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: businessProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Delete the businessProcedure with businessProcedureId for validationTask
-        with gdprProcedureId with type right of erasure
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}/downloadPackage:
-    post:
-      operationId: addDownloadPackage
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: businessProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Creates a downloadPackage for validationTask with gdprProcedureId with
-        the data from the procedure with businessProcedureId
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/close:
-    post:
-      operationId: closeGdprValidationTask
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Close a GDPR validation task
-      summary: Close a GDPR validation task
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/download-packages:
-    get:
-      operationId: getGdprDownloadPackagesInfo
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprDownloadPackagesInfoResponse"
-          description: OK
-      summary: Get approved Gdpr Download Packages by Gdpr Procedure Id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}:
-    get:
-      operationId: getGdprDownloadPackage
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: downloadId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get Gdpr Download Package by the gdprProcedureId and its downloadId
-      tags:
-      - GdprValidationTask
-  /import:
-    post:
-      operationId: importProcesses
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                file:
-                  type: string
-                  format: binary
-              required:
-              - file
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: object
-          description: OK
-      summary: Start import processes
-      tags:
-      - Importer
-  /import/templates/inspection-import-template:
-    get:
-      operationId: getInspectionImportTemplate
-      responses:
-        "200":
-          content:
-            application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get the XLSX inspection import template
-      tags:
-      - Importer
-  /inbox-procedures:
-    get:
-      description: |
-        Get all inbox procedures with filter, sort, and pagination options
-      operationId: getInboxProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `inboxProcedureType` is submitted, only inbox procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place.
-        in: query
-        name: inboxProcedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If true, inbox procedures which have no type are returned in addition to the types specified by 'inboxProcedureType'.
-          - If false or not submitted, inbox procedures which have no type are not returned.
-        in: query
-        name: includeUntyped
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          Filter logic:
-          - If `inboxProcedureStatus` is submitted, only inbox procedures are returned which have one of the submitted statuses.
-          - If not submitted, no filtering takes place.
-        in: query
-        name: inboxProcedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/InboxProcedureStatus"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CREATED_AT`: Sorting by createdAt attribute
-          - `MODIFIED_AT`: Sorting by modifiedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetInboxProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetInboxProceduresSortOrder"
-      - description: Number of the requested page
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      - description: Amount of requested inbox procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 25
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInboxProceduresResponse"
-          description: OK
-      summary: Get inbox procedures
-      tags:
-      - InboxProcedure
-    post:
-      description: |-
-        Creates an inbox procedure with an optional file upload.
-
-               Permitted file formats:
-                - Image formats: jpeg, png
-                - PDF formats: pdf/a
-                - Mail formats: eml
-      operationId: addInboxProcedure
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                createInboxProcedureRequest:
-                  $ref: "#/components/schemas/CreateInboxProcedureRequest"
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-              required:
-              - createInboxProcedureRequest
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InboxProcedure"
-          description: OK
-      summary: Add inbox procedure
-      tags:
-      - InboxProcedure
-  /inbox-procedures/{inboxProcedureId}:
-    get:
-      operationId: getInboxProcedure
-      parameters:
-      - in: path
-        name: inboxProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInboxProcedureResponse"
-          description: OK
-      summary: Get inbox procedure with detailed information
-      tags:
-      - InboxProcedure
-  /inbox-procedures/{inboxProcedureId}/inbox-procedure-status:
-    put:
-      operationId: updateInboxProcedureStatus
-      parameters:
-      - in: path
-        name: inboxProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InboxProcedureStatus"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InboxProcedure"
-          description: OK
-      summary: Update status of inbox procedure
-      tags:
-      - InboxProcedure
-  /inspections/geo/reversegeocode:
-    get:
-      operationId: getReverseGeoCode
-      parameters:
-      - in: query
-        name: country
-        required: true
-        schema:
-          type: string
-      - in: query
-        name: city
-        required: true
-        schema:
-          type: string
-      - in: query
-        name: postalcode
-        required: true
-        schema:
-          type: string
-      - in: query
-        name: street
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetReverseGeoCodeResponse"
-          description: OK
-      summary: Get geo coordinates of an address
-      tags:
-      - InspectionGeo
-  /inspections/report/{reportId}:
-    get:
-      operationId: downloadReport
-      parameters:
-      - in: path
-        name: reportId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Download an inspection report
-      tags:
-      - Inspection
-  /inspections/{id}:
-    get:
-      operationId: getInspection
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Inspection"
-          description: OK
-      summary: Get details of an inspection
-      tags:
-      - Inspection
-    patch:
-      operationId: updateInspection
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateInspectionRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Inspection"
-          description: OK
-      summary: Update attributes of an inspection
-      tags:
-      - Inspection
-    post:
-      operationId: startInspection
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/StartInspectionRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Inspection"
-          description: OK
-      summary: Starts a new inspection
-      tags:
-      - Inspection
-  /inspections/{id}/approve:
-    post:
-      operationId: approveInspection
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Inspection"
-          description: OK
-      summary: Approve an inspection (after finalization)
-      tags:
-      - Inspection
-  /inspections/{id}/cldversions:
-    get:
-      operationId: getAvailableCLDs
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/InspectionAvailableCLDVersionsResponse"
-          description: OK
-      summary: Get available checklist definition versions to choose from for this
-        inspection
-      tags:
-      - Inspection
-  /inspections/{id}/facility-duplicates:
-    get:
-      operationId: getFacilityDuplicates
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/FacilityDuplicateReview"
-          description: OK
-      summary: Get facility duplicates of an inspection
-      tags:
-      - Inspection
-  /inspections/{id}/finalize:
-    post:
-      operationId: finalizeInspection
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                finalizeInspectionRequest:
-                  $ref: "#/components/schemas/FinalizeInspectionRequest"
-                signature:
-                  type: string
-                  format: binary
-              required:
-              - finalizeInspectionRequest
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Inspection"
-          description: OK
-      summary: Finalize an inspection
-      tags:
-      - Inspection
-  /inspections/{id}/inspection-duplicates:
-    get:
-      operationId: getInspectionDuplicates
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/InspectionDuplicateReview"
-          description: OK
-      summary: Get inspection duplicates of an inspection
-      tags:
-      - Inspection
-  /inspections/{id}/inventory:
-    put:
-      description: "To delete an inventory entry, set it's count to 0."
-      operationId: modifyInventory
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateInspectionModifyInventoryRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Inspection"
-          description: OK
-      summary: "Update an inspection: add, update or remove inventory"
-      tags:
-      - Inspection
-  /inspections/{id}/pldrevisions:
-    get:
-      operationId: getAvailablePLDs
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/InspectionAvailablePLDRevisionsResponse"
-          description: OK
-      summary: Get available packlist definition revisions to choose from for this
-        inspection
-      tags:
-      - Inspection
-  /inspections/{id}/resolve-facility-duplicate:
-    post:
-      operationId: resolveFacilityDuplicate
-      parameters:
-      - description: The id of the inspection
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ResolveFacilityDuplicateRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Resolves a facility duplicate for an inspection by choosing a facility
-      tags:
-      - Inspection
-  /inspections/{id}/resolve-inspection-duplicate:
-    post:
-      operationId: resolveInspectionDuplicate
-      parameters:
-      - description: The id of the inspection
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ResolveInspectionDuplicateRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Resolves an inspection duplicate for an inspection by choosing whether
-        to keep or discard an inspection
-      tags:
-      - Inspection
-  /inspections/{id}/resource:
-    post:
-      description: Adds a resource to an inspection. You can not update a resource.
-      operationId: addResource
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateInspectionAddResourceRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Inspection"
-          description: OK
-      summary: "Update an inspection: add resource"
-      tags:
-      - Inspection
-  /inspections/{id}/resource/{resourceId}:
-    delete:
-      description: Deletes a resource from an inspection. You can not update a resource.
-      operationId: deleteResource
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: resourceId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Inspection"
-          description: OK
-      summary: "Update an inspection: remove resource"
-      tags:
-      - Inspection
-  /inspections/{id}/sync-file-state:
-    post:
-      operationId: syncInspectionFacilityFileState
-      parameters:
-      - description: The id of the inspection
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InspectionSyncFileStateRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Inspection"
-          description: OK
-      summary: |
-        Update a differing facility file state by taking over the data from the
-        associated reference facility
-      tags:
-      - Inspection
-  /inspections/{id}/update-file-state-and-reference:
-    post:
-      operationId: updateInspectionFacilityFileStateAndReference
-      parameters:
-      - description: The id of the inspection
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PutFacilityRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Inspection"
-          description: OK
-      summary: |
-        Perform a consistent update of the existent facility file state and its
-        associated reference facility
-      tags:
-      - Inspection
-  /inspections/{id}/viewed:
-    post:
-      operationId: inspectionViewed
-      parameters:
-      - description: The id of the inspection
-        in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Mark inspection as viewed in audit-log
-      tags:
-      - Inspection
-  /inspections/{inspectionId}/incidents:
-    get:
-      operationId: getIncidents
-      parameters:
-      - in: path
-        name: inspectionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetInspectionIncidentsResponse"
-          description: OK
-      summary: Get all incidents of an inspection
-      tags:
-      - InspectionIncident
-    post:
-      operationId: createIncident
-      parameters:
-      - in: path
-        name: inspectionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateInspectionIncidentRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/InspectionIncident"
-          description: OK
-      summary: Creates a new incident
-      tags:
-      - InspectionIncident
-  /inspections/{inspectionId}/incidents/{incidentId}:
-    delete:
-      operationId: deleteIncident
-      parameters:
-      - in: path
-        name: inspectionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: incidentId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Delete an incident
-      tags:
-      - InspectionIncident
-    put:
-      operationId: updateIncident
-      parameters:
-      - in: path
-        name: inspectionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: incidentId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateInspectionIncidentRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/InspectionIncident"
-          description: OK
-      summary: Update an incident
-      tags:
-      - InspectionIncident
-  /objecttypes:
-    get:
-      operationId: getObjectTypes
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetObjectTypesResponse"
-          description: OK
-      summary: Get all objecttypes
-      tags:
-      - ObjectType
-  /objecttypes/{id}:
-    get:
-      operationId: getObjectType
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/SingleObjectTypeResponse"
-          description: OK
-      summary: Get details of an objecttype
-      tags:
-      - ObjectType
-    put:
-      operationId: updateObjectType
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateObjectTypeRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/SingleObjectTypeResponse"
-          description: OK
-      summary: Update settings of an objecttype
-      tags:
-      - ObjectType
-  /packlists/definitions:
-    get:
-      operationId: getPacklistDefinitions
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/PacklistDefinitionsResponse"
-          description: OK
-      summary: "Get an overview of all packlist definitions, without revision details"
-      tags:
-      - PacklistDefinition
-    post:
-      description: "This also creates a first <i>revision</i> of the definition. Revisions\
-        \ are numbered with integers, starting at 1."
-      operationId: createNewPacklistDefinition
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateNewPacklistDefinitionRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/PacklistDefinition"
-          description: OK
-      summary: Add a new packlist definition
-      tags:
-      - PacklistDefinition
-  /packlists/definitions/revisions/{revisionId}:
-    get:
-      operationId: getPacklistDefinitionRevision
-      parameters:
-      - in: path
-        name: revisionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/PacklistDefinitionRevision"
-          description: OK
-      summary: Get a certain revision of a packlist definition
-      tags:
-      - PacklistDefinition
-  /packlists/definitions/{id}:
-    post:
-      operationId: addPacklistDefinitionRevision
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddPacklistDefinitionRevisionRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/PacklistDefinitionRevision"
-          description: OK
-      summary: Add a new revision to a packlist definition
-      tags:
-      - PacklistDefinition
-  /packlists/definitions/{id}/revisions:
-    get:
-      operationId: getPacklistDefinitionRevisions
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/PacklistDefinition"
-          description: OK
-      summary: "Get all revisions of a packlist definition, ie. the history of changes"
-      tags:
-      - PacklistDefinition
-  /packlists/{inspectionExternalId}:
-    get:
-      operationId: getPacklists
-      parameters:
-      - in: path
-        name: inspectionExternalId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetPacklistsResponse"
-          description: OK
-      summary: Load the packlists for the inspection with the given inspectionExternalId
-      tags:
-      - Packlist
-  /packlists/{inspectionExternalId}/packlist/{packlistId}/{packlistElementId}:
-    patch:
-      operationId: checkPacklistElement
-      parameters:
-      - in: path
-        name: inspectionExternalId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: packlistId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: packlistElementId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdatePacklistElementRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Packlist"
-          description: OK
-      summary: Check or uncheck packlist element
-      tags:
-      - Packlist
-  /procedure-metrics:
-    get:
-      operationId: getProcedureMetrics
-      parameters:
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureMetricsResponse"
-          description: the metrics of procedures
-      summary: Get procedure metrics for procedures created in the given time range
-      tags:
-      - Procedure
-  /procedures:
-    get:
-      description: |
-        GET operation for retrieving basic information of procedures for the procedure overview.
-      operationId: getProcedures
-      parameters:
-      - description: |
-          Only procedures are returned where the assigneeId of at least one task equals the `assignedToId`.
-          If not submitted, no filtering takes place.
-        in: query
-        name: assignedToId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: |
-          Filter logic:
-          - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CREATED_AT`: Sorting by createdAt attribute
-          - `MODIFIED_AT`: Sorting by modifiedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for user
-      tags:
-      - Procedure
-  /procedures/check-file-state-usage:
-    post:
-      operationId: checkFileStateUsage
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CheckFileStateUsageRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CheckFileStateUsageResponse"
-          description: OK
-      summary: Identify which file state IDs are still used by active procedures.
-      tags:
-      - Procedure
-  /procedures/recent:
-    get:
-      operationId: getRecentProcedures
-      parameters:
-      - in: query
-        name: userId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRecentProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for user
-      tags:
-      - Procedure
-  /procedures/recent/self:
-    get:
-      operationId: getSelfRecentProcedures
-      parameters:
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRecentProceduresResponse"
-          description: the current users recent procedures
-      summary: Get recent procedures for the current user
-      tags:
-      - Procedure
-  /procedures/search:
-    get:
-      operationId: searchProcedures
-      parameters:
-      - in: query
-        name: query
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresResponse"
-          description: OK
-      tags:
-      - Procedure
-  /procedures/{id}:
-    get:
-      operationId: getDetailedProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetDetailedProcedureResponse"
-          description: a single procedure with details
-      summary: Get a single procedure with details
-      tags:
-      - Procedure
-  /procedures/{id}/approval-requests:
-    get:
-      operationId: getApprovalRequests
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureApprovalRequestsResponse"
-          description: OK
-      summary: Get all approval requests related to this procedure
-      tags:
-      - Procedure
-  /procedures/{id}/files:
-    get:
-      description: |
-        This returns all relevant (highest version per keydocument type and non-deleted) files sorted by descending creation date.
-        That is:
-         * if an progress entry has a keydocument type set, then its files are only returned if it also has the highest keydocument version of the respective key document type.
-         * if an progress entry does not have a keydocument type, then its files are always returned.
-      operationId: getProcedureFileDetails
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureFileDetailsResponse"
-          description: OK
-      summary: Get relevant procedure files
-      tags:
-      - Procedure
-  /procedures/{procedureId}/progress-entries:
-    get:
-      operationId: getProgressEntries
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - description: Filter on progressEntryType
-        in: query
-        name: progressEntryType
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-          uniqueItems: true
-      - description: Filter on child class of progressEntry
-        in: query
-        name: progressEntryClass
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProgressEntryClass"
-          uniqueItems: true
-      - description: |
-          If `initiatedBy` is set with a `userId` then the following is returned:
-          * Only progressEntries with `createdBy`=`userId` in case `ManualProgressEntry` or `ProcessedInboxProgressEntry`
-          * Only progressEntries with `triggeredBy`=`userId` in case `SystemProgressEntry`
-        in: query
-        name: initiatedBy
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      - description: |
-          Filter on triggerType.
-          If this is set, only SystemProgressEntries are returned since only SystemProgressEntries have this attribute.
-        in: query
-        name: triggerType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TriggerType"
-          uniqueItems: true
-      - description: 'Sorting on either modifiedAt or createdAt '
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProgressEntrySortBy"
-      - description: Sorting order. Possible options  "ASC" for ascending and "DESC"
-          for descending.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProgressEntrySortOrder"
-      - description: Maximum number of elements to return
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Index of page to be returned
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProgressEntriesResponse"
-          description: OK
-      summary: Get list of procedure's progress entries
-      tags:
-      - ProgressEntry
-    post:
-      description: |-
-        Creates a manual progress entry with an optional file upload.
-
-               Permitted file formats:
-                - Image formats: jpeg, png
-                - PDF formats: pdf/a
-                - Mail formats: eml
-      operationId: addProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                createManualProgressEntryRequest:
-                  $ref: "#/components/schemas/CreateManualProgressEntryRequest"
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-              required:
-              - createManualProgressEntryRequest
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ManualProgressEntry"
-          description: OK
-      summary: Create a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}:
-    delete:
-      operationId: removeProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Remove a manual progress entry
-      tags:
-      - ProgressEntry
-    get:
-      operationId: getProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProgressEntryResponse"
-          description: OK
-      summary: Get a progress entry
-      tags:
-      - ProgressEntry
-    patch:
-      operationId: patchProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchManualProgressEntryRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ManualProgressEntry"
-          description: OK
-      summary: Modify a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}/deletion-request:
-    post:
-      operationId: requestProgressEntryDeletion
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateApprovalRequestRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      summary: Request deletion of a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}/history:
-    get:
-      operationId: getManualProgressEntryHistory
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetManualProgressEntryHistoryResponse"
-          description: OK
-      summary: Get the history of a manual progress entry
-      tags:
-      - ProgressEntry
-  /statistics/procedure-ids:
-    post:
-      operationId: getProcedureIds
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GetProcedureIdsRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureIdsResponse"
-          description: OK
-      summary: Get procedure ids for procedure references
-      tags:
-      - StatisticsProcedureReference
-  /task-metrics:
-    get:
-      operationId: getTaskMetrics
-      parameters:
-      - in: query
-        name: procedureType
-        required: true
-        schema:
-          $ref: "#/components/schemas/ProcedureType"
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTaskMetricsResponse"
-          description: the metrics of a specific procedure type
-      summary: Get tasks metrics for a procedure type of a business module for procedures
-        created in the given time range
-      tags:
-      - Task
-  /tasks:
-    get:
-      operationId: getTasks
-      parameters:
-      - in: query
-        name: assigneeId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: assignedById
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      - in: query
-        name: taskTypes
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskType"
-          uniqueItems: true
-      - in: query
-        name: taskStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskStatus"
-          uniqueItems: true
-      - in: query
-        name: sortKey
-        required: true
-        schema:
-          $ref: "#/components/schemas/GetTasksSortBy"
-      - in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetTasksSortOrder"
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TaskResponse"
-          description: tasks
-      summary: Get tasks
-      tags:
-      - Task
-  /tasks/dashboard:
-    get:
-      operationId: getTasksForDashboard
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TaskResponse"
-          description: tasks
-      summary: Get tasks for the dashboard
-      tags:
-      - Task
-  /tasks/team-view:
-    get:
-      description: Returns all _open_ tasks per module group member.
-      operationId: getTasksByAssignee
-      parameters:
-      - description: |
-          If provided, `assignee` must be member of the module group.
-          If not provided, all tasks for all members of the module group are returned.
-        in: query
-        name: assigneeId
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTaskByUserResponse"
-          description: OK
-      tags:
-      - Task
-  /tasks/{taskId}/assignment:
-    put:
-      operationId: assignTask
-      parameters:
-      - in: path
-        name: taskId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AssignTaskRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Task"
-          description: OK
-      tags:
-      - Task
-  /tasks/{taskId}/self-assignment:
-    put:
-      operationId: selfAssignTask
-      parameters:
-      - in: path
-        name: taskId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SelfAssignTaskRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Task"
-          description: OK
-      tags:
-      - Task
-  /test-data/checklists/definitions/test-data:
-    post:
-      operationId: createTestCLD
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CreateTestCLDResponse"
-          description: OK
-      summary: Create test-data for checklist definitions (CLDs)
-      tags:
-      - InspectionTestData
-  /test-data/inspections/test-data:
-    post:
-      operationId: createTestData
-      responses:
-        "200":
-          description: OK
-      summary: Create test data for inspections
-      tags:
-      - InspectionTestData
-  /test-data/osm/test-data/{filename}:
-    get:
-      operationId: downloadOsmTestData
-      parameters:
-      - in: path
-        name: filename
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Test method to download some OpenStreetMap *.osm.pbf files
-      tags:
-      - InspectionTestData
-  /test-helper/archiving-job:
-    post:
-      operationId: runArchivingJob
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/audit-log-storage:
-    delete:
-      operationId: clearAuditLogStorageDirectory
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/checklists/make-corrupt:
-    post:
-      operationId: makeChecklistsCorrupt
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/enabled-new-features/{featureToDisable}:
-    delete:
-      operationId: disableNewFeature
-      parameters:
-      - in: path
-        name: featureToDisable
-        required: true
-        schema:
-          $ref: "#/components/schemas/InspectionFeature"
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/enabled-new-features/{featureToEnable}:
-    post:
-      operationId: enableNewFeature
-      parameters:
-      - in: path
-        name: featureToEnable
-        required: true
-        schema:
-          $ref: "#/components/schemas/InspectionFeature"
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /textblocks:
-    get:
-      operationId: getTextBlocks
-      parameters:
-      - in: query
-        name: searchQuery
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/TextBlockSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTextBlocksResponse"
-          description: OK
-      summary: "Get all text blocks, filtered and paginated"
-      tags:
-      - TextBlock
-    post:
-      operationId: createTextBlock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TextBlockRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TextBlock"
-          description: OK
-      summary: Creates a new text block
-      tags:
-      - TextBlock
-  /textblocks/{textBlockId}:
-    delete:
-      operationId: deleteTextBlock
-      parameters:
-      - in: path
-        name: textBlockId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Delete a text block
-      tags:
-      - TextBlock
-    get:
-      operationId: getTextBlock
-      parameters:
-      - in: path
-        name: textBlockId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TextBlock"
-          description: OK
-      summary: Get a text block by its id
-      tags:
-      - TextBlock
-    patch:
-      operationId: updateTextBlock
-      parameters:
-      - in: path
-        name: textBlockId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TextBlockRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TextBlock"
-          description: OK
-      summary: Update the data for a text block
-      tags:
-      - TextBlock
-components:
-  schemas:
-    AbstractFile:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFileReference"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          createdAt:
-            type: string
-            format: date-time
-          createdBy:
-            type: string
-            format: uuid
-          fileName:
-            type: string
-          fileSizeBytes:
-            type: integer
-            format: int32
-          fileType:
-            $ref: "#/components/schemas/FileType"
-          locked:
-            type: boolean
-          modifiedAt:
-            type: string
-            format: date-time
-      - $ref: "#/components/schemas/ApprovalRequestEntity"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    AbstractFileReference:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        deletable:
-          type: boolean
-        deleted:
-          type: boolean
-        fileId:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - deletable
-      - deleted
-      - fileId
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    AddFacilityFileStateRequest:
-      type: object
-      description: Request used for adding facilities from non-external sources
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        referenceFacilityId:
-          type: string
-          format: uuid
-          description: "Id of a referenceFacility. If this Id is provided, a new File\
-            \ State with the input attributes is created for that referenceFacility,\
-            \ regardless of any matching logic."
-          example: be9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-      required:
-      - dataOrigin
-      - name
-    AddGdprValidationTaskRequest:
-      type: object
-      properties:
-        gdprProcedureId:
-          type: string
-          format: uuid
-        startedAt:
-          type: string
-          format: date-time
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - gdprProcedureId
-      - startedAt
-      - type
-    AddPacklistDefinitionRevisionRequest:
-      type: object
-      properties:
-        description:
-          type: string
-        elements:
-          type: array
-          items:
-            type: string
-        name:
-          type: string
-        version:
-          type: integer
-          format: int64
-      required:
-      - elements
-      - name
-      - version
-    Address:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    ApprovalRequest:
-      type: object
-      properties:
-        approvalRequestId:
-          type: string
-          format: uuid
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-          format: uuid
-        decidedAt:
-          type: string
-          format: date-time
-        decidedBy:
-          type: string
-          format: uuid
-        decision:
-          $ref: "#/components/schemas/Decision"
-        entity:
-          oneOf:
-          - $ref: "#/components/schemas/ManualProgressEntry"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        operation:
-          $ref: "#/components/schemas/Operation"
-        reason:
-          type: string
-        status:
-          $ref: "#/components/schemas/ApprovalRequestStatus"
-      required:
-      - approvalRequestId
-      - createdAt
-      - createdBy
-      - operation
-      - reason
-      - status
-    ApprovalRequestEntity:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    ApprovalRequestStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    ArchivingDetails:
-      type: object
-      properties:
-        archivingPeriodYears:
-          type: integer
-          format: int32
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-      required:
-      - archivingPeriodYears
-      - archivingRelevance
-    ArchivingRelevance:
-      type: string
-      enum:
-      - DEFAULT
-      - RELEVANT
-      - IRRELEVANT
-    ArchivingRelevanceSettings:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        defaultArchivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-      required:
-      - archivingRelevance
-      - defaultArchivingRelevance
-    AssignTaskRequest:
-      type: object
-      properties:
-        assignee:
-          type: string
-          format: uuid
-        dueAt:
-          type: string
-          format: date-time
-        taskVersion:
-          type: integer
-          format: int64
-      required:
-      - assignee
-      - taskVersion
-    BulkUpdateProceduresArchivingRelevanceRequest:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        procedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 200
-          minItems: 1
-          uniqueItems: true
-      required:
-      - archivingRelevance
-      - procedures
-    BulkUpdateProceduresArchivingRelevanceResponse:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        failedProcedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-        updatedProcedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      required:
-      - archivingRelevance
-      - failedProcedures
-      - updatedProcedures
-    BusinessModule:
-      type: string
-      enum:
-      - INSPECTION
-      - SCHOOL_ENTRY
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY
-      - DENTAL
-      - OFFICIAL_MEDICAL_SERVICE
-    BusinessProcedureInclusionStatus:
-      type: string
-      enum:
-      - INCLUDED
-      - UNDECIDED
-    BusinessProcedureWithInclusionStatus:
-      type: object
-      properties:
-        businessProcedure:
-          $ref: "#/components/schemas/Procedure"
-        inclusionStatus:
-          $ref: "#/components/schemas/BusinessProcedureInclusionStatus"
-      required:
-      - businessProcedure
-      - inclusionStatus
-    CLAudioContext:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/CLElementContext"
-      - type: object
-        properties:
-          help:
-            type: string
-          mandatory:
-            type: boolean
-          note:
-            type: string
-          text:
-            type: string
-      required:
-      - id
-    CLAudioField:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/CLElement"
-      - type: object
-        properties:
-          audioMetaData:
-            type: array
-            items:
-              $ref: "#/components/schemas/CLAudioMetaData"
-          context:
-            $ref: "#/components/schemas/CLAudioContext"
-          id:
-            type: string
-            format: uuid
-          incident:
-            type: boolean
-      required:
-      - audioMetaData
-      - context
-      - id
-    CLAudioMetaData:
-      type: object
-      properties:
-        audioID:
-          type: string
-          format: uuid
-        fileDate:
-          type: string
-          format: date-time
-        fileName:
-          type: string
-        fileSize:
-          type: integer
-          format: int64
-      required:
-      - audioID
-      - fileDate
-      - fileName
-      - fileSize
-    CLCheckboxContext:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/CLElementContext"
-      - type: object
-        properties:
-          help:
-            type: string
-          mandatory:
-            type: boolean
-          note:
-            type: string
-          text:
-            type: string
-          textModuleFalse:
-            type: string
-          textModuleTrue:
-            type: string
-      required:
-      - id
-    CLCheckboxField:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/CLElement"
-      - type: object
-        properties:
-          checked:
-            type: boolean
-          context:
-            $ref: "#/components/schemas/CLCheckboxContext"
-          id:
-            type: string
-            format: uuid
-          incident:
-            type: boolean
-      required:
-      - context
-      - id
-    CLContext:
-      type: object
-      properties:
-        defId:
-          type: string
-          format: uuid
-        deleted:
-          type: boolean
-        description:
-          type: string
-        expandable:
-          type: boolean
-        id:
-          type: string
-          format: uuid
-        lastModified:
-          type: string
-          format: date-time
-        name:
-          type: string
-        published:
-          type: boolean
-        repositoryVersion:
-          type: integer
-          format: int32
-        sections:
-          type: array
-          items:
-            $ref: "#/components/schemas/CLSectionContext"
-        validFrom:
-          type: string
-          format: date-time
-        validTo:
-          type: string
-          format: date-time
-        version:
-          type: integer
-          format: int32
-      required:
-      - defId
-      - deleted
-      - expandable
-      - id
-      - name
-      - published
-      - sections
-      - version
-    CLElement:
-      type: object
-      discriminator:
-        mapping:
-          AUDIO: "#/components/schemas/CLAudioField"
-          CHECKBOX: "#/components/schemas/CLCheckboxField"
-          IMAGE: "#/components/schemas/CLImageField"
-          MULTI_SELECT: "#/components/schemas/CLMultiSelectField"
-          SEPARATOR: "#/components/schemas/CLSeparatorElement"
-          SINGLE_SELECT: "#/components/schemas/CLSingleSelectField"
-          TEXT: "#/components/schemas/CLTextField"
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    CLElementContext:
-      type: object
-      discriminator:
-        mapping:
-          AUDIO: "#/components/schemas/CLAudioContext"
-          CHECKBOX: "#/components/schemas/CLCheckboxContext"
-          IMAGE: "#/components/schemas/CLImageContext"
-          MULTI_SELECT: "#/components/schemas/CLMultiSelectContext"
-          SEPARATOR: "#/components/schemas/CLSeparatorContext"
-          SINGLE_SELECT: "#/components/schemas/CLSingleSelectContext"
-          TEXT: "#/components/schemas/CLTextElementContext"
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        id:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - id
-    CLFieldOptionContext:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        text:
-          type: string
-        textModuleFalse:
-          type: string
-        textModuleTrue:
-          type: string
-      required:
-      - id
-      - text
-    CLImageContext:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/CLElementContext"
-      - type: object
-        properties:
-          help:
-            type: string
-          mandatory:
-            type: boolean
-          note:
-            type: string
-          text:
-            type: string
-      required:
-      - id
-    CLImageField:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/CLElement"
-      - type: object
-        properties:
-          context:
-            $ref: "#/components/schemas/CLImageContext"
-          id:
-            type: string
-            format: uuid
-          imageMetaData:
-            type: array
-            items:
-              $ref: "#/components/schemas/CLImageMetaData"
-          incident:
-            type: boolean
-      required:
-      - context
-      - id
-      - imageMetaData
-    CLImageMetaData:
-      type: object
-      properties:
-        fileDate:
-          type: string
-          format: date-time
-        fileName:
-          type: string
-        fileSize:
-          type: integer
-          format: int64
-        imageID:
-          type: string
-          format: uuid
-      required:
-      - fileDate
-      - fileName
-      - fileSize
-      - imageID
-    CLMultiSelectContext:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/CLElementContext"
-      - type: object
-        properties:
-          help:
-            type: string
-          items:
-            type: array
-            items:
-              $ref: "#/components/schemas/CLFieldOptionContext"
-          mandatory:
-            type: boolean
-          note:
-            type: string
-          text:
-            type: string
-      required:
-      - id
-    CLMultiSelectField:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/CLElement"
-      - type: object
-        properties:
-          checkedButtonNames:
-            type: array
-            items:
-              type: string
-          context:
-            $ref: "#/components/schemas/CLMultiSelectContext"
-          id:
-            type: string
-            format: uuid
-          incident:
-            type: boolean
-      required:
-      - checkedButtonNames
-      - context
-      - id
-    CLSection:
-      type: object
-      properties:
-        context:
-          $ref: "#/components/schemas/CLSectionContext"
-        elements:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/CLAudioField"
-            - $ref: "#/components/schemas/CLCheckboxField"
-            - $ref: "#/components/schemas/CLImageField"
-            - $ref: "#/components/schemas/CLMultiSelectField"
-            - $ref: "#/components/schemas/CLSeparatorElement"
-            - $ref: "#/components/schemas/CLSingleSelectField"
-            - $ref: "#/components/schemas/CLTextField"
-        id:
-          type: string
-          format: uuid
-      required:
-      - context
-      - elements
-      - id
-    CLSectionContext:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/CLAudioContext"
-            - $ref: "#/components/schemas/CLCheckboxContext"
-            - $ref: "#/components/schemas/CLImageContext"
-            - $ref: "#/components/schemas/CLMultiSelectContext"
-            - $ref: "#/components/schemas/CLSeparatorContext"
-            - $ref: "#/components/schemas/CLSingleSelectContext"
-            - $ref: "#/components/schemas/CLTextElementContext"
-        id:
-          type: string
-          format: uuid
-        title:
-          type: string
-      required:
-      - elements
-      - id
-    CLSeparatorContext:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/CLElementContext"
-      - type: object
-        properties:
-          title:
-            type: string
-      required:
-      - id
-    CLSeparatorElement:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/CLElement"
-      - type: object
-        properties:
-          context:
-            $ref: "#/components/schemas/CLSeparatorContext"
-      required:
-      - context
-    CLSingleSelectContext:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/CLElementContext"
-      - type: object
-        properties:
-          help:
-            type: string
-          items:
-            type: array
-            items:
-              $ref: "#/components/schemas/CLFieldOptionContext"
-          mandatory:
-            type: boolean
-          note:
-            type: string
-          text:
-            type: string
-      required:
-      - id
-    CLSingleSelectField:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/CLElement"
-      - type: object
-        properties:
-          checkedButtonName:
-            type: string
-          context:
-            $ref: "#/components/schemas/CLSingleSelectContext"
-          id:
-            type: string
-            format: uuid
-          incident:
-            type: boolean
-      required:
-      - context
-      - id
-    CLTextElementContext:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/CLElementContext"
-      - type: object
-        properties:
-          help:
-            type: string
-          mandatory:
-            type: boolean
-          note:
-            type: string
-          text:
-            type: string
-      required:
-      - id
-    CLTextField:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/CLElement"
-      - type: object
-        properties:
-          context:
-            $ref: "#/components/schemas/CLTextElementContext"
-          id:
-            type: string
-            format: uuid
-          incident:
-            type: boolean
-          input:
-            type: string
-      required:
-      - context
-      - id
-    CheckFileStateUsageRequest:
-      type: object
-      properties:
-        fileStatesIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-      required:
-      - fileStatesIds
-    CheckFileStateUsageResponse:
-      type: object
-      properties:
-        inUse:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - inUse
-    Checklist:
-      type: object
-      properties:
-        context:
-          $ref: "#/components/schemas/CLContext"
-        coreChecklist:
-          type: boolean
-        id:
-          type: string
-          format: uuid
-        sections:
-          type: array
-          items:
-            $ref: "#/components/schemas/CLSection"
-      required:
-      - context
-      - coreChecklist
-      - id
-      - sections
-    ChecklistDefinition:
-      type: object
-      properties:
-        coreChecklist:
-          type: boolean
-        deleted:
-          type: boolean
-        expandable:
-          type: boolean
-        id:
-          type: string
-          format: uuid
-        lastModified:
-          type: string
-          format: date-time
-        mostRecentRepositoryVersion:
-          type: integer
-          format: int32
-        mostRecentVersion:
-          $ref: "#/components/schemas/ChecklistDefinitionVersion"
-        mostRecentVersionBasedOnRepo:
-          type: integer
-          format: int32
-        name:
-          type: string
-        objectType:
-          $ref: "#/components/schemas/ObjectTypeRef"
-        published:
-          type: boolean
-        versions:
-          type: array
-          items:
-            $ref: "#/components/schemas/ChecklistDefinitionVersion"
-      required:
-      - coreChecklist
-      - deleted
-      - expandable
-      - id
-      - lastModified
-      - mostRecentVersion
-      - name
-      - published
-      - versions
-    ChecklistDefinitionCentralRepoMetadata:
-      type: object
-      properties:
-        centralRepoId:
-          type: integer
-          format: int64
-        changeLog:
-          type: string
-        cldId:
-          type: string
-          format: uuid
-        contact:
-          type: string
-        createdAt:
-          type: string
-          format: date-time
-        description:
-          type: string
-        isCoreChecklist:
-          type: boolean
-        isExpandable:
-          type: boolean
-        localCldRepoVersion:
-          type: integer
-          format: int32
-        name:
-          type: string
-        objectType:
-          type: string
-        origin:
-          type: string
-        version:
-          type: integer
-          format: int32
-      required:
-      - centralRepoId
-      - createdAt
-      - isCoreChecklist
-      - isExpandable
-      - name
-      - objectType
-      - origin
-      - version
-    ChecklistDefinitionCentralRepoRequest:
-      type: object
-      properties:
-        changeLog:
-          type: string
-        contact:
-          type: string
-        description:
-          type: string
-      required:
-      - contact
-      - description
-    ChecklistDefinitionCentralRepoResponse:
-      type: object
-      properties:
-        centralRepositoryId:
-          type: integer
-          format: int64
-        centralRepositoryVersion:
-          type: integer
-          format: int32
-        localCldId:
-          type: string
-          format: uuid
-        localCldVersion:
-          type: integer
-          format: int32
-      required:
-      - centralRepositoryId
-      - centralRepositoryVersion
-      - localCldId
-      - localCldVersion
-    ChecklistDefinitionCentralRepoUpdateRequest:
-      type: object
-      properties:
-        changeLog:
-          type: string
-        contact:
-          type: string
-        description:
-          type: string
-    ChecklistDefinitionFromCentralRepoUpdateRequest:
-      type: object
-      properties:
-        centralRepoId:
-          type: integer
-          format: int64
-        centralRepoVersion:
-          type: integer
-          format: int32
-        isCoreChecklist:
-          type: boolean
-      required:
-      - centralRepoId
-      - centralRepoVersion
-      - isCoreChecklist
-    ChecklistDefinitionVersion:
-      type: object
-      properties:
-        context:
-          $ref: "#/components/schemas/CLContext"
-        hasDraft:
-          type: boolean
-        isCoreChecklist:
-          type: boolean
-        modifiedBy:
-          $ref: "#/components/schemas/User"
-        objectType:
-          $ref: "#/components/schemas/ObjectTypeRef"
-      required:
-      - context
-    ChecklistDefinitionVersionRequest:
-      type: object
-      properties:
-        deleted:
-          type: boolean
-        description:
-          type: string
-        isExpandable:
-          type: boolean
-        name:
-          type: string
-        published:
-          type: boolean
-        sections:
-          type: array
-          items:
-            $ref: "#/components/schemas/CLSectionContext"
-      required:
-      - name
-      - sections
-    ChecklistDefinitionsResponse:
-      type: object
-      properties:
-        definitions:
-          type: array
-          items:
-            $ref: "#/components/schemas/ChecklistDefinition"
-      required:
-      - definitions
-    ContactDetails:
-      type: object
-      properties:
-        address:
-          $ref: "#/components/schemas/InboxProcedureAddress"
-        contactType:
-          $ref: "#/components/schemas/ContactType"
-        dateOfBirth:
-          type: string
-          format: date
-        emailAddress:
-          type: string
-        facilityName:
-          type: string
-        firstName:
-          type: string
-        lastName:
-          type: string
-        phoneNumber:
-          type: string
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          $ref: "#/components/schemas/Title"
-      required:
-      - contactType
-      - salutation
-    ContactType:
-      type: string
-      enum:
-      - PRIVATE_PERSON
-      - FACILITY
-    CountryCode:
-      type: string
-      description: "List of country codes in ISO 3166-1 alpha-2 format. With custom\
-        \ extensions for stateless, non-standard countries, and unknown countries."
-      enum:
-      - AD
-      - AE
-      - AF
-      - AG
-      - AI
-      - AL
-      - AM
-      - AO
-      - AQ
-      - AR
-      - AS
-      - AT
-      - AU
-      - AW
-      - AX
-      - AZ
-      - BA
-      - BB
-      - BD
-      - BE
-      - BF
-      - BG
-      - BH
-      - BI
-      - BJ
-      - BL
-      - BM
-      - BN
-      - BO
-      - BQ
-      - BR
-      - BS
-      - BT
-      - BV
-      - BW
-      - BY
-      - BZ
-      - CA
-      - CC
-      - CD
-      - CF
-      - CG
-      - CH
-      - CI
-      - CK
-      - CL
-      - CM
-      - CN
-      - CO
-      - CR
-      - CU
-      - CV
-      - CW
-      - CX
-      - CY
-      - CZ
-      - DE
-      - DJ
-      - DK
-      - DM
-      - DO
-      - DZ
-      - EC
-      - EE
-      - EG
-      - EH
-      - ER
-      - ES
-      - ET
-      - FI
-      - FJ
-      - FK
-      - FM
-      - FO
-      - FR
-      - GA
-      - GB
-      - GD
-      - GE
-      - GF
-      - GG
-      - GH
-      - GI
-      - GL
-      - GM
-      - GN
-      - GP
-      - GQ
-      - GR
-      - GS
-      - GT
-      - GU
-      - GW
-      - GY
-      - HK
-      - HM
-      - HN
-      - HR
-      - HT
-      - HU
-      - ID
-      - IE
-      - IL
-      - IM
-      - IN
-      - IO
-      - IQ
-      - IR
-      - IS
-      - IT
-      - JE
-      - JM
-      - JO
-      - JP
-      - KE
-      - KG
-      - KH
-      - KI
-      - KM
-      - KN
-      - KP
-      - KR
-      - KW
-      - KY
-      - KZ
-      - LA
-      - LB
-      - LC
-      - LI
-      - LK
-      - LR
-      - LS
-      - LT
-      - LU
-      - LV
-      - LY
-      - MA
-      - MC
-      - MD
-      - ME
-      - MF
-      - MG
-      - MH
-      - MK
-      - ML
-      - MM
-      - MN
-      - MO
-      - MP
-      - MQ
-      - MR
-      - MS
-      - MT
-      - MU
-      - MV
-      - MW
-      - MX
-      - MY
-      - MZ
-      - NA
-      - NC
-      - NE
-      - NF
-      - NG
-      - NI
-      - NL
-      - "NO"
-      - NP
-      - NR
-      - NU
-      - NZ
-      - OM
-      - PA
-      - PE
-      - PF
-      - PG
-      - PH
-      - PK
-      - PL
-      - PM
-      - PN
-      - PR
-      - PS
-      - PT
-      - PW
-      - PY
-      - QA
-      - RE
-      - RO
-      - RS
-      - RU
-      - RW
-      - SA
-      - SB
-      - SC
-      - SD
-      - SE
-      - SG
-      - SH
-      - SI
-      - SJ
-      - SK
-      - SL
-      - SM
-      - SN
-      - SO
-      - SR
-      - SS
-      - ST
-      - SV
-      - SX
-      - SY
-      - SZ
-      - TC
-      - TD
-      - TF
-      - TG
-      - TH
-      - TJ
-      - TK
-      - TL
-      - TM
-      - TN
-      - TO
-      - TR
-      - TT
-      - TV
-      - TW
-      - TZ
-      - UA
-      - UG
-      - UM
-      - US
-      - UY
-      - UZ
-      - VA
-      - VC
-      - VE
-      - VG
-      - VI
-      - VN
-      - VU
-      - WF
-      - WS
-      - YE
-      - YT
-      - ZA
-      - ZM
-      - ZW
-      - XK
-      - UNKNOWN
-      - STATELESS
-    CreateApprovalRequestRequest:
-      type: object
-      properties:
-        reason:
-          type: string
-      required:
-      - reason
-    CreateInboxProcedureRequest:
-      type: object
-      properties:
-        contactDetails:
-          $ref: "#/components/schemas/ContactDetails"
-        inboxProcedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        inboxProgressEntry:
-          $ref: "#/components/schemas/CreateInboxProgressEntry"
-      required:
-      - contactDetails
-      - inboxProgressEntry
-    CreateInboxProgressEntry:
-      type: object
-      properties:
-        inboxProgressEntryType:
-          $ref: "#/components/schemas/InboxProgressEntryType"
-        messageText:
-          type: string
-        subject:
-          type: string
-      required:
-      - inboxProgressEntryType
-    CreateInspectionIncidentRequest:
-      type: object
-      properties:
-        description:
-          type: string
-        externalId:
-          type: string
-          format: uuid
-        title:
-          type: string
-      required:
-      - description
-      - externalId
-      - title
-    CreateManualProgressEntryRequest:
-      type: object
-      properties:
-        keyDocumentType:
-          type: string
-        manualProgressEntryType:
-          $ref: "#/components/schemas/ManualProgressEntryType"
-        note:
-          type: string
-      required:
-      - manualProgressEntryType
-    CreateNewChecklistDefinitionRequest:
-      type: object
-      properties:
-        deleted:
-          type: boolean
-        description:
-          type: string
-        isCoreChecklist:
-          type: boolean
-        isExpandable:
-          type: boolean
-        name:
-          type: string
-        objectTypeId:
-          type: string
-          format: uuid
-        published:
-          type: boolean
-        sections:
-          type: array
-          items:
-            $ref: "#/components/schemas/CLSectionContext"
-      required:
-      - name
-      - objectTypeId
-      - sections
-    CreateNewPacklistDefinitionRequest:
-      type: object
-      properties:
-        description:
-          type: string
-        elements:
-          type: array
-          items:
-            type: string
-        name:
-          type: string
-        objectTypeId:
-          type: string
-          format: uuid
-      required:
-      - elements
-      - name
-      - objectTypeId
-    CreateTestCLDResponse:
-      type: object
-      properties:
-        clds:
-          type: array
-          items:
-            $ref: "#/components/schemas/ChecklistDefinition"
-      required:
-      - clds
-    DataOrigin:
-      type: string
-      description: "A list of possible origins of Persons and Facility in the Central\
-        \ Files. EDIT will only be set automatically on changes. EXTERNAL is for entries\
-        \ that come, e.g., from the citizen portal. IMPORT is reserved for automatic\
-        \ imports. MANUAL shall be set for every creation or connection done by an\
-        \ employee."
-      enum:
-      - MANUAL
-      - EXTERNAL
-      - IMPORT
-      - EDIT
-    Decision:
-      type: string
-      enum:
-      - GRANTED
-      - DENIED
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    DeleteDownloadPackagesRequest:
-      type: object
-      properties:
-        downloadIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - downloadIds
-    DetailedFacility:
-      type: object
-      properties:
-        facilityFileState:
-          $ref: "#/components/schemas/GetFacilityFileStateResponse"
-        facilityType:
-          $ref: "#/components/schemas/FacilityType"
-      required:
-      - facilityFileState
-      - facilityType
-    DetailedPerson:
-      type: object
-      properties:
-        person:
-          $ref: "#/components/schemas/GetPersonFileStateResponse"
-        personType:
-          $ref: "#/components/schemas/PersonType"
-      required:
-      - person
-      - personType
-    DetailedTask:
-      type: object
-      properties:
-        assignedByName:
-          type: string
-        assigneeName:
-          type: string
-        task:
-          $ref: "#/components/schemas/Task"
-      required:
-      - task
-    DomesticAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          addressAddition:
-            type: string
-            description: A descriptive addition to the address.
-            example: 2.OG links
-            maxLength: 100
-            minLength: 1
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          houseNumber:
-            type: string
-            description: "The house number of the address, including extensions."
-            example: 1a
-            maxLength: 11
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          street:
-            type: string
-            description: "The name of the street of the address, without the house\
-              \ number."
-            example: Beispielweg
-            maxLength: 55
-            minLength: 1
-      description: A usual domestic address.
-      required:
-      - city
-      - country
-      - postalCode
-      - street
-    Editor:
-      type: object
-      properties:
-        editorBody:
-          $ref: "#/components/schemas/EditorBody"
-        id:
-          type: string
-          format: uuid
-      required:
-      - editorBody
-      - id
-    EditorBody:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/EditorElementAudios"
-            - $ref: "#/components/schemas/EditorElementChapter"
-            - $ref: "#/components/schemas/EditorElementFullTextBlock"
-            - $ref: "#/components/schemas/EditorElementImages"
-            - $ref: "#/components/schemas/EditorElementQA"
-            - $ref: "#/components/schemas/EditorElementSection"
-            - $ref: "#/components/schemas/EditorElementSeparator"
-            - $ref: "#/components/schemas/EditorElementText"
-            - $ref: "#/components/schemas/EditorElementTextBlock"
-            - $ref: "#/components/schemas/EditorElementTopLevelTitle"
-      required:
-      - elements
-    EditorElement:
-      type: object
-      discriminator:
-        mapping:
-          AUDIOS: "#/components/schemas/EditorElementAudios"
-          CHAPTER: "#/components/schemas/EditorElementChapter"
-          FULL_TEXT_BLOCK: "#/components/schemas/EditorElementFullTextBlock"
-          IMAGES: "#/components/schemas/EditorElementImages"
-          QUESTION_AND_ANSWERS: "#/components/schemas/EditorElementQA"
-          SECTION: "#/components/schemas/EditorElementSection"
-          SEPARATOR: "#/components/schemas/EditorElementSeparator"
-          TEXT: "#/components/schemas/EditorElementText"
-          TEXT_BLOCK: "#/components/schemas/EditorElementTextBlock"
-          TOPLEVEL_TITLE: "#/components/schemas/EditorElementTopLevelTitle"
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        deletable:
-          type: boolean
-        editable:
-          type: boolean
-        highlighted:
-          type: boolean
-        id:
-          type: string
-          format: uuid
-        moveable:
-          type: boolean
-        referenceID:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-    EditorElementAnswer:
-      type: object
-      properties:
-        answerId:
-          type: string
-          format: uuid
-        answerText:
-          type: string
-        extraText:
-          type: string
-        selected:
-          type: boolean
-      required:
-      - answerId
-      - answerText
-      - selected
-    EditorElementAudio:
-      type: object
-      properties:
-        externalId:
-          type: string
-          format: uuid
-        fileDate:
-          type: string
-          format: date-time
-        fileName:
-          type: string
-        fileSize:
-          type: integer
-          format: int64
-      required:
-      - externalId
-    EditorElementAudios:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      - type: object
-        properties:
-          audios:
-            type: array
-            items:
-              $ref: "#/components/schemas/EditorElementAudio"
-          title:
-            type: string
-      required:
-      - audios
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-      - title
-    EditorElementChapter:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      - type: object
-        properties:
-          title:
-            type: string
-      required:
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-      - title
-    EditorElementFullTextBlock:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      - type: object
-        properties:
-          text:
-            type: string
-          title:
-            type: string
-      required:
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-      - text
-      - title
-    EditorElementImage:
-      type: object
-      properties:
-        externalId:
-          type: string
-          format: uuid
-        fileDate:
-          type: string
-          format: date-time
-        fileName:
-          type: string
-        fileSize:
-          type: integer
-          format: int64
-      required:
-      - externalId
-    EditorElementImages:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      - type: object
-        properties:
-          images:
-            type: array
-            items:
-              $ref: "#/components/schemas/EditorElementImage"
-          title:
-            type: string
-      required:
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - images
-      - moveable
-      - title
-    EditorElementQA:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      - type: object
-        properties:
-          answers:
-            type: array
-            items:
-              $ref: "#/components/schemas/EditorElementAnswer"
-          title:
-            type: string
-      required:
-      - answers
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-      - title
-    EditorElementSection:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      - type: object
-        properties:
-          title:
-            type: string
-      required:
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-      - title
-    EditorElementSeparator:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      required:
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-    EditorElementText:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      - type: object
-        properties:
-          text:
-            type: string
-      required:
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-      - text
-    EditorElementTextBlock:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      - type: object
-        properties:
-          text:
-            type: string
-          title:
-            type: string
-      required:
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-      - text
-      - title
-    EditorElementTopLevelTitle:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      - type: object
-        properties:
-          title:
-            type: string
-      required:
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-      - title
-    ExportArchivingRelevantProceduresRequest:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-          uniqueItems: true
-      required:
-      - procedures
-    FacilityContactPerson:
-      type: object
-      properties:
-        emailAddress:
-          type: string
-          description: The email addresses of the Contact Person.
-          example: mail1@address.de
-          maxLength: 254
-          minLength: 6
-        firstName:
-          type: string
-          description: The given name(s) of the Contact Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: The last name of the Contact Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        phoneNumber:
-          type: string
-          description: The phone number of the Contact Person.
-          example: "+491234567890"
-          maxLength: 23
-          minLength: 1
-        role:
-          type: string
-          description: The role of the Contact Person in the Facility.
-          example: CEO
-          maxLength: 255
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of the Contact Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - lastName
-    FacilityDetails:
-      type: object
-      description: The data relating to a facility
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 0
-      required:
-      - name
-    FacilityDuplicateReview:
-      type: object
-      properties:
-        existingFacilities:
-          type: array
-          items:
-            $ref: "#/components/schemas/FacilityForDuplicateReview"
-        importedFacility:
-          $ref: "#/components/schemas/FacilityForDuplicateReview"
-      required:
-      - existingFacilities
-      - importedFacility
-    FacilityForDuplicateReview:
-      type: object
-      properties:
-        addressAddition:
-          type: string
-        city:
-          type: string
-        emailAddresses:
-          type: array
-          items:
-            type: string
-        houseNo:
-          type: string
-        name:
-          type: string
-        objectType:
-          $ref: "#/components/schemas/ObjectTypeRef"
-        phoneNumbers:
-          type: array
-          items:
-            type: string
-        postalCode:
-          type: string
-        referenceId:
-          type: string
-          format: uuid
-        street:
-          type: string
-      required:
-      - city
-      - emailAddresses
-      - name
-      - phoneNumbers
-      - postalCode
-      - referenceId
-      - street
-    FacilityType:
-      type: string
-      enum:
-      - SCHOOL
-      - INSPECTION
-      - DAYCARE
-      - HOSPITAL
-      - MEDICAL_PRACTICE
-      - REFUGEE_ACCOMMODATION
-      - OTHER
-    FileMetaData:
-      type: object
-      properties:
-        description:
-          type: string
-    FileType:
-      type: string
-      enum:
-      - JPEG
-      - PNG
-      - PDF
-      - EML
-    FinalizeInspectionRequest:
-      type: object
-      properties:
-        signer:
-          type: string
-    FollowupType:
-      type: string
-      enum:
-      - REVIEW
-      - DOCUMENT_INSPECTION
-    GdprDownloadPackageInfo:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-      required:
-      - id
-    GdprFacility:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          dataTransmitterPseudonymId:
-            type: string
-            description: The 'DatenübermittlerPseudonymId' of the MUK user
-            example: du-986b2b54ab89cf4ed674ad8c3126b966b54d4872
-          emailAddress:
-            type: string
-            description: The email addresses of the Facility.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          name:
-            type: string
-            description: The name of the Facility.
-            example: 123 Example Facility
-            maxLength: 300
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Facility.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 1
-      required:
-      - address
-      - name
-    GdprIdentificationData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    GdprPerson:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          bpk2:
-            type: string
-            description: The bpk2 of the BundId user
-            example: VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0
-          dateOfBirth:
-            type: string
-            format: date
-            description: The date of birth of the Person.
-            example: 2000-01-01
-          emailAddress:
-            type: string
-            description: The email addresses of the Person.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          firstName:
-            type: string
-            description: The given name(s) of the Person.
-            example: John
-            maxLength: 80
-            minLength: 1
-          lastName:
-            type: string
-            description: The last name of the Person.
-            example: Doe
-            maxLength: 120
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Person.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 0
-          salutation:
-            $ref: "#/components/schemas/Salutation"
-          title:
-            type: string
-            description: The academic title of the Person.
-            example: Prof. Dr.
-            maxLength: 119
-            minLength: 1
-      required:
-      - address
-      - dateOfBirth
-      - firstName
-      - lastName
-    GdprProcedureType:
-      type: string
-      description: A list of types of GDPR procedures.
-      enum:
-      - RIGHT_OF_ACCESS
-      - RIGHT_TO_ERASURE
-    GdprValidationTask:
-      type: object
-      properties:
-        dueDate:
-          type: string
-          format: date
-        gdprProcedureId:
-          type: string
-          format: uuid
-        identificationData:
-          oneOf:
-          - $ref: "#/components/schemas/GdprFacility"
-          - $ref: "#/components/schemas/GdprPerson"
-        status:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - dueDate
-      - gdprProcedureId
-      - identificationData
-      - status
-      - type
-    GdprValidationTaskSortKey:
-      type: string
-      enum:
-      - CREATED_AT
-    GdprValidationTaskStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    Gender:
-      type: string
-      description: The list of genders as specified in the German Personenstandsgesetz.
-      enum:
-      - NOT_SPECIFIED
-      - DIVERSE
-      - FEMALE
-      - MALE
-    GenericFileReference:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFileReference"
-      - type: object
-        properties:
-          '@type':
-            type: string
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - deletable
-      - deleted
-      - fileId
-    GetAllValidationTasksResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/GdprValidationTask"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          minimum: 0
-      required:
-      - elements
-      - totalNumberOfElements
-    GetArchivableProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetArchivableProceduresSortBy:
-      type: string
-      default: CLOSED_AT
-      enum:
-      - CLOSED_AT
-      - PROCEDURE_TYPE
-    GetArchivableProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetArchivingConfigurationResponse:
-      type: object
-      properties:
-        archivingDetails:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/ArchivingDetails"
-        gracePeriodMonths:
-          type: integer
-          format: int32
-      required:
-      - archivingDetails
-      - gracePeriodMonths
-    GetChecklistDefinitionCentralRepoResponse:
-      type: object
-      properties:
-        changeLog:
-          type: string
-        checklistDefinition:
-          $ref: "#/components/schemas/ChecklistDefinition"
-        contact:
-          type: string
-        createdAt:
-          type: string
-          format: date-time
-        description:
-          type: string
-        localCldRepoVersion:
-          type: integer
-          format: int32
-        origin:
-          type: string
-      required:
-      - checklistDefinition
-      - createdAt
-      - origin
-    GetChecklistsResponse:
-      type: object
-      properties:
-        checklists:
-          type: array
-          items:
-            $ref: "#/components/schemas/Checklist"
-      required:
-      - checklists
-    GetDetailedProcedureResponse:
-      type: object
-      properties:
-        facilities:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedFacility"
-        persons:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedPerson"
-        procedure:
-          $ref: "#/components/schemas/Procedure"
-        tasks:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedTask"
-      required:
-      - facilities
-      - persons
-      - procedure
-      - tasks
-    GetFacilityFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        id:
-          type: string
-          format: uuid
-          description: Id of the Facility.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referenceFacility
-            it is connected to.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-      required:
-      - contactPersons
-      - dataOrigin
-      - emailAddresses
-      - id
-      - name
-      - phoneNumbers
-      - referenceVersion
-    GetGdprDownloadPackagesInfoResponse:
-      type: object
-      properties:
-        downloadPackages:
-          type: array
-          items:
-            $ref: "#/components/schemas/GdprDownloadPackageInfo"
-      required:
-      - downloadPackages
-    GetGdprNotificationBannerResponse:
-      type: object
-      properties:
-        earliestDueDate:
-          type: string
-          format: date
-        openValidationTasksCount:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - openValidationTasksCount
-    GetGdprValidationTaskDetailsResponse:
-      type: object
-      properties:
-        proceduresWithStatus:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessProcedureWithInclusionStatus"
-        validationTask:
-          $ref: "#/components/schemas/GdprValidationTask"
-      required:
-      - proceduresWithStatus
-      - validationTask
-    GetGdprValidationTaskResponse:
-      type: object
-      properties:
-        status:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-      required:
-      - status
-    GetInboxProcedureResponse:
-      type: object
-      properties:
-        inboxProcedure:
-          $ref: "#/components/schemas/InboxProcedure"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - inboxProcedure
-      - resolvedUsers
-    GetInboxProceduresResponse:
-      type: object
-      properties:
-        inboxProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/InboxProcedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - inboxProcedures
-      - totalElements
-      - totalPages
-    GetInboxProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - CREATED_AT
-    GetInboxProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetInspectionFeatureTogglesResponse:
-      type: object
-      properties:
-        disabledOldFeatures:
-          type: array
-          items:
-            $ref: "#/components/schemas/InspectionFeature"
-          uniqueItems: true
-        enabledNewFeatures:
-          type: array
-          items:
-            $ref: "#/components/schemas/InspectionFeature"
-          uniqueItems: true
-      required:
-      - disabledOldFeatures
-      - enabledNewFeatures
-    GetInspectionIncidentsResponse:
-      type: object
-      properties:
-        incidents:
-          type: array
-          items:
-            $ref: "#/components/schemas/InspectionIncident"
-    GetManualProgressEntryHistoryResponse:
-      type: object
-      properties:
-        manualProgressEntryHistory:
-          type: array
-          items:
-            $ref: "#/components/schemas/ManualProgressEntryHistory"
-    GetMetaDataHistoryResponse:
-      type: object
-      properties:
-        metaDataHistory:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ImageMetaDataHistory"
-            - $ref: "#/components/schemas/MailMetaDataHistory"
-            - $ref: "#/components/schemas/PdfMetaDataHistory"
-    GetNewestChecklistDefinitionsCentralRepoResponse:
-      type: object
-      properties:
-        cldCentralRepoMetadata:
-          type: array
-          items:
-            $ref: "#/components/schemas/ChecklistDefinitionCentralRepoMetadata"
-      required:
-      - cldCentralRepoMetadata
-    GetObjectTypesResponse:
-      type: object
-      properties:
-        objectTypes:
-          type: array
-          items:
-            $ref: "#/components/schemas/ObjectType"
-      required:
-      - objectTypes
-    GetPacklistsResponse:
-      type: object
-      properties:
-        packlists:
-          type: array
-          items:
-            $ref: "#/components/schemas/Packlist"
-      required:
-      - packlists
-    GetPersonFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        dateOfBirth:
-          type: string
-          format: date
-          description: The date of birth of the Person.
-          example: 2000-01-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Person.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: The given name(s) of the Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        id:
-          type: string
-          format: uuid
-          description: Id of the Person.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        lastName:
-          type: string
-          description: The last name of the Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          description: The last name at birth of the Person.
-          example: Smith
-          maxLength: 40
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referencePerson
-            it is connected to. Set to 'null' if unchecked.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Person.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          description: The place of birth (without country) of the Person.
-          example: Berlin
-          maxLength: 50
-          minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - dataOrigin
-      - dateOfBirth
-      - emailAddresses
-      - firstName
-      - gender
-      - id
-      - lastName
-      - phoneNumbers
-      - referenceVersion
-      - salutation
-    GetProcedureApprovalRequestsResponse:
-      type: object
-      properties:
-        approvalRequests:
-          type: array
-          items:
-            $ref: "#/components/schemas/ApprovalRequest"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - approvalRequests
-      - resolvedUsers
-    GetProcedureFileDetailsResponse:
-      type: object
-      properties:
-        fileDetails:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProgressEntryReferenceFilePair"
-        procedureId:
-          type: string
-          format: uuid
-      required:
-      - fileDetails
-      - procedureId
-    GetProcedureIdsRequest:
-      type: object
-      properties:
-        procedureReferences:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 200
-          minItems: 1
-      required:
-      - procedureReferences
-    GetProcedureIdsResponse:
-      type: object
-      properties:
-        referenceToId:
-          type: object
-          additionalProperties:
-            type: string
-            format: uuid
-      required:
-      - referenceToId
-    GetProcedureMetricsResponse:
-      type: object
-      properties:
-        procedureMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureMetric"
-      required:
-      - procedureMetrics
-    GetProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - MODIFIED_AT
-      - CREATED_AT
-    GetProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetProgressEntriesResponse:
-      type: object
-      properties:
-        progressEntries:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ManualProgressEntry"
-            - $ref: "#/components/schemas/ProcessedInboxProgressEntry"
-            - $ref: "#/components/schemas/SystemProgressEntry"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - progressEntries
-      - totalElements
-      - totalPages
-    GetProgressEntryResponse:
-      type: object
-      properties:
-        progressEntry:
-          oneOf:
-          - $ref: "#/components/schemas/ManualProgressEntry"
-          - $ref: "#/components/schemas/ProcessedInboxProgressEntry"
-          - $ref: "#/components/schemas/SystemProgressEntry"
-        relatedKeyDocumentProgressEntries:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ManualProgressEntry"
-            - $ref: "#/components/schemas/SystemProgressEntry"
-      required:
-      - progressEntry
-      - relatedKeyDocumentProgressEntries
-    GetRecentProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-      required:
-      - procedures
-    GetReferenceFacilityResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        id:
-          type: string
-          format: uuid
-          description: Id of the Reference Facility. This Id MUST NOT be persisted
-            in any other database.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        version:
-          type: integer
-          format: int64
-          description: "Version of the entity. Each time the entity is changed, it\
-            \ is incremented by one."
-      required:
-      - contactPersons
-      - dataOrigin
-      - emailAddresses
-      - id
-      - name
-      - phoneNumbers
-      - version
-    GetRelevantArchivableProceduresResponse:
-      type: object
-      properties:
-        fileSizeBytes:
-          type: integer
-          format: int32
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - fileSizeBytes
-      - procedures
-      - totalElements
-      - totalPages
-    GetRelevantArchivableProceduresSortBy:
-      type: string
-      default: CLOSED_AT
-      enum:
-      - CLOSED_AT
-      - EXPORTED_AT
-    GetRelevantArchivableProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetReverseGeoCodeResponse:
-      type: object
-      properties:
-        locations:
-          type: array
-          items:
-            $ref: "#/components/schemas/GetReverseGeoCodeResponseLocation"
-      required:
-      - locations
-    GetReverseGeoCodeResponseLocation:
-      type: object
-      properties:
-        latitude:
-          type: string
-        longitude:
-          type: string
-      required:
-      - latitude
-      - longitude
-    GetTaskByUserResponse:
-      type: object
-      properties:
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-        tasksByUser:
-          type: object
-          additionalProperties:
-            type: array
-            items:
-              $ref: "#/components/schemas/Task"
-      required:
-      - resolvedUsers
-      - tasksByUser
-    GetTaskMetricsResponse:
-      type: object
-      properties:
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedProcedureCount:
-          type: integer
-          format: int64
-        fastestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        slowestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        taskMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskMetric"
-      required:
-      - businessModule
-      - closedProcedureCount
-      - fastestProcedures
-      - procedureType
-      - slowestProcedures
-      - taskMetrics
-    GetTasksSortBy:
-      type: string
-      enum:
-      - PRIORITY
-      - CREATED_AT
-      - MODIFIED_AT
-    GetTasksSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetTextBlocksResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/TextBlock"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          minimum: 0
-      required:
-      - elements
-      - totalNumberOfElements
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    Image:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/ImageMetaData"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    ImageMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          createdDate:
-            type: string
-            format: date-time
-    ImageMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          imageMetaData:
-            $ref: "#/components/schemas/ImageMetaData"
-      required:
-      - changedAt
-    ImportStatistics:
-      type: object
-      properties:
-        created:
-          type: integer
-          format: int32
-          minimum: 0
-        duplicated:
-          type: integer
-          format: int32
-          minimum: 0
-        failed:
-          type: integer
-          format: int32
-          minimum: 0
-        mergeFailed:
-          type: integer
-          format: int32
-          minimum: 0
-        merged:
-          type: integer
-          format: int32
-          minimum: 0
-        total:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - created
-      - duplicated
-      - failed
-      - mergeFailed
-      - merged
-      - total
-    InboxProcedure:
-      type: object
-      properties:
-        closedAt:
-          type: string
-          format: date-time
-        contactDetails:
-          $ref: "#/components/schemas/ContactDetails"
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-          format: uuid
-        inboxProcedureId:
-          type: string
-          format: uuid
-        inboxProcedureStatus:
-          $ref: "#/components/schemas/InboxProcedureStatus"
-        inboxProcedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        inboxProgressEntry:
-          $ref: "#/components/schemas/InboxProgressEntry"
-      required:
-      - contactDetails
-      - createdAt
-      - createdBy
-      - inboxProcedureId
-      - inboxProcedureStatus
-      - inboxProgressEntry
-    InboxProcedureAddress:
-      type: object
-      properties:
-        addressAddition:
-          type: string
-        city:
-          type: string
-        country:
-          type: string
-        houseNumber:
-          type: string
-        postalCode:
-          type: string
-        postboxNumber:
-          type: integer
-          format: int32
-        street:
-          type: string
-    InboxProcedureStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    InboxProgressEntry:
-      type: object
-      properties:
-        fileReference:
-          oneOf:
-          - $ref: "#/components/schemas/GenericFileReference"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        inboxProgressEntryId:
-          type: string
-          format: uuid
-        inboxProgressEntryType:
-          $ref: "#/components/schemas/InboxProgressEntryType"
-        messageText:
-          type: string
-        subject:
-          type: string
-      required:
-      - inboxProgressEntryId
-      - inboxProgressEntryType
-    InboxProgressEntryType:
-      type: string
-      enum:
-      - LETTER
-      - PHONE_CALL
-      - EMAIL
-    InsertEditorRequest:
-      type: object
-      properties:
-        editorElement:
-          oneOf:
-          - $ref: "#/components/schemas/EditorElementAudios"
-          - $ref: "#/components/schemas/EditorElementChapter"
-          - $ref: "#/components/schemas/EditorElementFullTextBlock"
-          - $ref: "#/components/schemas/EditorElementImages"
-          - $ref: "#/components/schemas/EditorElementQA"
-          - $ref: "#/components/schemas/EditorElementSection"
-          - $ref: "#/components/schemas/EditorElementSeparator"
-          - $ref: "#/components/schemas/EditorElementText"
-          - $ref: "#/components/schemas/EditorElementTextBlock"
-          - $ref: "#/components/schemas/EditorElementTopLevelTitle"
-        insertAfter:
-          type: integer
-          format: int32
-          minimum: 0
-        insertBefore:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - editorElement
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    InspAddFacilityRequest:
-      type: object
-      properties:
-        baseFacility:
-          $ref: "#/components/schemas/AddFacilityFileStateRequest"
-        inboxProcedureId:
-          type: string
-          format: uuid
-        webSearchEntryId:
-          type: string
-          format: uuid
-      required:
-      - baseFacility
-    InspAddFacilityResponse:
-      type: object
-      properties:
-        facility:
-          $ref: "#/components/schemas/InspFacility"
-        isNew:
-          type: boolean
-        procedureId:
-          type: string
-          format: uuid
-        procedureStatus:
-          $ref: "#/components/schemas/ProcedureStatus"
-      required:
-      - isNew
-      - procedureId
-      - procedureStatus
-    InspFacility:
-      type: object
-      properties:
-        banned:
-          type: boolean
-        baseFacility:
-          $ref: "#/components/schemas/GetFacilityFileStateResponse"
-        id:
-          type: string
-          format: uuid
-        objectType:
-          $ref: "#/components/schemas/ObjectType"
-      required:
-      - banned
-      - baseFacility
-      - id
-    InspLinkBaseFacilityRequest:
-      type: object
-      properties:
-        facility:
-          $ref: "#/components/schemas/GetReferenceFacilityResponse"
-        inboxProcedureId:
-          type: string
-          format: uuid
-        webSearchEntryId:
-          type: string
-          format: uuid
-      required:
-      - facility
-    InspLinkBaseFacilityResponse:
-      type: object
-      properties:
-        inspectionId:
-          type: string
-          format: uuid
-        isNew:
-          type: boolean
-        procedureStatus:
-          $ref: "#/components/schemas/ProcedureStatus"
-      required:
-      - inspectionId
-      - isNew
-      - procedureStatus
-    InspPendingFacilitiesOverviewResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/InspPendingFacility"
-        numberOfPossibleDuplicates:
-          type: integer
-          format: int64
-        totalNumberOfElements:
-          type: integer
-          format: int64
-        totalPages:
-          type: integer
-          format: int32
-      required:
-      - elements
-      - numberOfPossibleDuplicates
-      - totalNumberOfElements
-      - totalPages
-    InspPendingFacility:
-      type: object
-      properties:
-        addressAddition:
-          type: string
-        centralFileStateId:
-          type: string
-          format: uuid
-        city:
-          type: string
-        executedFrom:
-          type: string
-          format: date-time
-        houseNo:
-          type: string
-        id:
-          type: string
-          format: uuid
-        inspection:
-          $ref: "#/components/schemas/InspPendingFacilityInspection"
-        kind:
-          $ref: "#/components/schemas/InspPendingFacilityKind"
-        name:
-          type: string
-        objecttype:
-          $ref: "#/components/schemas/ObjectTypeRef"
-        plannedFrom:
-          type: string
-          format: date-time
-        possibleFacilityDuplicate:
-          type: boolean
-        postalCode:
-          type: string
-        street:
-          type: string
-      required:
-      - centralFileStateId
-      - city
-      - id
-      - name
-      - possibleFacilityDuplicate
-      - postalCode
-      - street
-    InspPendingFacilityInspection:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        numberOfIncidents:
-          type: integer
-          format: int32
-        phase:
-          $ref: "#/components/schemas/InspectionPhase"
-        possibleInspectionDuplicate:
-          type: boolean
-        result:
-          $ref: "#/components/schemas/InspectionResult"
-        status:
-          $ref: "#/components/schemas/ProcedureStatus"
-        type:
-          $ref: "#/components/schemas/InspectionType"
-      required:
-      - id
-      - numberOfIncidents
-      - phase
-      - possibleInspectionDuplicate
-      - status
-      - type
-    InspPendingFacilityKind:
-      type: string
-      enum:
-      - NEW
-      - PENDING
-      - OVERDUE
-    InspUpdateFacilityRequest:
-      type: object
-      properties:
-        banned:
-          type: boolean
-        baseFacility:
-          $ref: "#/components/schemas/AddFacilityFileStateRequest"
-        procedureId:
-          type: string
-          format: uuid
-      required:
-      - baseFacility
-      - procedureId
-    Inspection:
-      type: object
-      properties:
-        announcement:
-          $ref: "#/components/schemas/InspectionAnnouncement"
-        assignee:
-          $ref: "#/components/schemas/User"
-        challenging:
-          type: boolean
-        executedAppointment:
-          $ref: "#/components/schemas/InspectionAppointment"
-        externalId:
-          type: string
-          format: uuid
-        facility:
-          $ref: "#/components/schemas/InspFacility"
-        followupInfo:
-          $ref: "#/components/schemas/InspectionFollowupInfo"
-        incidents:
-          type: array
-          items:
-            $ref: "#/components/schemas/InspectionIncident"
-        inventories:
-          type: array
-          items:
-            $ref: "#/components/schemas/InspectionInventory"
-        lockedByUser:
-          $ref: "#/components/schemas/User"
-        notes:
-          type: string
-        phase:
-          $ref: "#/components/schemas/InspectionPhase"
-        plannedAppointment:
-          $ref: "#/components/schemas/InspectionAppointment"
-        possibleFacilityDuplicate:
-          type: boolean
-        possibleInspectionDuplicate:
-          type: boolean
-        reportId:
-          type: string
-          format: uuid
-        reportInfo:
-          $ref: "#/components/schemas/ReportInfo"
-        resources:
-          type: array
-          items:
-            $ref: "#/components/schemas/InspectionResource"
-        result:
-          $ref: "#/components/schemas/InspectionResult"
-        selectedChecklistDefinitionVersions:
-          type: array
-          items:
-            $ref: "#/components/schemas/InspectionCLDVersion"
-        selectedPacklistDefinitionRevisions:
-          type: array
-          items:
-            $ref: "#/components/schemas/InspectionPLDRevision"
-        status:
-          $ref: "#/components/schemas/ProcedureStatus"
-        title:
-          type: string
-        travelTime:
-          $ref: "#/components/schemas/InspectionTravelTime"
-        type:
-          $ref: "#/components/schemas/InspectionType"
-      required:
-      - challenging
-      - externalId
-      - facility
-      - inventories
-      - phase
-      - possibleFacilityDuplicate
-      - possibleInspectionDuplicate
-      - resources
-      - result
-      - selectedChecklistDefinitionVersions
-      - selectedPacklistDefinitionRevisions
-      - status
-      - title
-      - type
-    InspectionAnnouncement:
-      type: object
-      properties:
-        date:
-          type: string
-          format: date-time
-        type:
-          $ref: "#/components/schemas/InspectionAnnouncementType"
-      required:
-      - date
-      - type
-    InspectionAnnouncementType:
-      type: string
-      enum:
-      - EMAIL
-      - PHONE
-    InspectionAppointment:
-      type: object
-      properties:
-        assignedTo:
-          $ref: "#/components/schemas/User"
-        end:
-          type: string
-          format: date-time
-        start:
-          type: string
-          format: date-time
-      required:
-      - end
-      - start
-    InspectionAvailableCLDVersionsResponse:
-      type: object
-      properties:
-        coreVersions:
-          type: array
-          items:
-            $ref: "#/components/schemas/InspectionCLDVersion"
-        isExpandable:
-          type: boolean
-        versions:
-          type: array
-          items:
-            $ref: "#/components/schemas/InspectionCLDVersion"
-      required:
-      - coreVersions
-      - isExpandable
-      - versions
-    InspectionAvailablePLDRevisionsResponse:
-      type: object
-      properties:
-        revisions:
-          type: array
-          items:
-            $ref: "#/components/schemas/InspectionPLDRevision"
-      required:
-      - revisions
-    InspectionCLDVersion:
-      type: object
-      properties:
-        definitionId:
-          type: string
-          format: uuid
-        description:
-          type: string
-        isCoreChecklist:
-          type: boolean
-        isExpandable:
-          type: boolean
-        name:
-          type: string
-        version:
-          type: integer
-          format: int32
-        versionId:
-          type: string
-          format: uuid
-      required:
-      - definitionId
-      - isCoreChecklist
-      - isExpandable
-      - name
-      - version
-      - versionId
-    InspectionDuplicateReview:
-      type: object
-      properties:
-        existingInspections:
-          type: array
-          items:
-            $ref: "#/components/schemas/InspectionForDuplicateReview"
-        importedInspection:
-          $ref: "#/components/schemas/InspectionForDuplicateReview"
-      required:
-      - existingInspections
-      - importedInspection
-    InspectionFeature:
-      type: string
-      enum:
-      - OFFLINE
-    InspectionFollowupInfo:
-      type: object
-      properties:
-        followupDate:
-          type: string
-          format: date-time
-        followupId:
-          type: string
-          format: uuid
-        followupType:
-          $ref: "#/components/schemas/FollowupType"
-    InspectionForDuplicateReview:
-      type: object
-      properties:
-        executedTime:
-          type: string
-          format: date-time
-        externalId:
-          type: string
-          format: uuid
-        numberOfIncidents:
-          type: integer
-          format: int32
-        result:
-          $ref: "#/components/schemas/InspectionResult"
-        title:
-          type: string
-        type:
-          $ref: "#/components/schemas/InspectionType"
-      required:
-      - executedTime
-      - externalId
-      - numberOfIncidents
-      - result
-      - title
-      - type
-    InspectionIncident:
-      type: object
-      properties:
-        checklistNumber:
-          type: integer
-          format: int32
-        description:
-          type: string
-        elementNumber:
-          type: integer
-          format: int32
-        incidentId:
-          type: string
-          format: uuid
-        inspectionId:
-          type: string
-          format: uuid
-        sectionNumber:
-          type: integer
-          format: int32
-        title:
-          type: string
-      required:
-      - description
-      - incidentId
-      - inspectionId
-      - title
-    InspectionInventory:
-      type: object
-      properties:
-        baseInventoryId:
-          type: string
-          format: uuid
-        bookingId:
-          type: integer
-          format: int64
-        count:
-          type: integer
-          format: int32
-        name:
-          type: string
-        type:
-          $ref: "#/components/schemas/InventoryItemType"
-      required:
-      - baseInventoryId
-      - count
-      - name
-      - type
-    InspectionPLDRevision:
-      type: object
-      properties:
-        definitionId:
-          type: string
-          format: uuid
-        description:
-          type: string
-        name:
-          type: string
-        revision:
-          type: integer
-          format: int32
-        revisionId:
-          type: string
-          format: uuid
-      required:
-      - definitionId
-      - name
-      - revision
-      - revisionId
-    InspectionPhase:
-      type: string
-      enum:
-      - NEW
-      - PLANNING
-      - READY_FOR_EXECUTION
-      - EXECUTING
-      - EXECUTED
-      - CREATING_REPORT_AND_INVOICE
-      - CLOSED
-    InspectionResource:
-      type: object
-      properties:
-        baseResourceId:
-          type: string
-          format: uuid
-        end:
-          type: string
-          format: date-time
-        name:
-          type: string
-        start:
-          type: string
-          format: date-time
-        type:
-          $ref: "#/components/schemas/ResourceType"
-      required:
-      - baseResourceId
-      - end
-      - name
-      - start
-      - type
-    InspectionResult:
-      type: string
-      enum:
-      - OPEN
-      - SUCCESSFUL
-      - FAILED
-      - SUCCESSFUL_WITH_INCIDENTS
-    InspectionSyncFileStateRequest:
-      type: object
-      properties:
-        facilityVersion:
-          type: integer
-          format: int64
-      required:
-      - facilityVersion
-    InspectionTravelTime:
-      type: object
-      properties:
-        endBufferInMinutes:
-          type: integer
-          format: int32
-        endTime:
-          type: string
-          format: date-time
-        startBufferInMinutes:
-          type: integer
-          format: int32
-        startTime:
-          type: string
-          format: date-time
-    InspectionType:
-      type: string
-      enum:
-      - REGULAR
-      - REGULAR_AFTER_INCIDENTS
-      - REVIEW
-      - INITIAL
-      - COMPLAINT
-      - DOCUMENT_INSPECTION
-      - IMPORT
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    InventoryItemType:
-      type: string
-      description: The list of possible types under which Inventory Items can be categorized.
-      enum:
-      - VACCINE
-      - PROTECTIVE_EQUIPMENT
-      - TEST_KIT
-      - MISC
-    KeyDocumentAwareProgressEntry:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        keyDocumentType:
-          type: string
-        keyDocumentVersion:
-          type: integer
-          format: int32
-      required:
-      - '@type'
-    Mail:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/MailMetaData"
-          removedInvalidAttachments:
-            type: integer
-            format: int32
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-      - removedInvalidAttachments
-    MailMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          mailFrom:
-            type: string
-          mailTo:
-            type: string
-          messageText:
-            type: string
-          sentDate:
-            type: string
-            format: date-time
-          subject:
-            type: string
-      required:
-      - mailFrom
-      - mailTo
-      - messageText
-      - sentDate
-      - subject
-    MailMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          mailMetaData:
-            $ref: "#/components/schemas/MailMetaData"
-      required:
-      - changedAt
-    ManualProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          createdByUserFirstName:
-            type: string
-          createdByUserLastName:
-            type: string
-          keyDocumentType:
-            type: string
-          keyDocumentVersion:
-            type: integer
-            format: int32
-          locked:
-            type: boolean
-          manualProgressEntryType:
-            $ref: "#/components/schemas/ManualProgressEntryType"
-          note:
-            type: string
-      - $ref: "#/components/schemas/ApprovalRequestEntity"
-      - $ref: "#/components/schemas/KeyDocumentAwareProgressEntry"
-      required:
-      - createdAt
-      - createdBy
-      - locked
-      - manualProgressEntryType
-      - modifiedAt
-      - progressEntryId
-    ManualProgressEntryHistory:
-      type: object
-      properties:
-        changedAt:
-          type: string
-          format: date-time
-        manualProgressEntry:
-          $ref: "#/components/schemas/ManualProgressEntry"
-      required:
-      - changedAt
-    ManualProgressEntryType:
-      type: string
-      enum:
-      - LETTER
-      - PHONE_CALL
-      - NOTE
-      - EMAIL
-      - IMAGE
-      - DOCUMENT
-    MetaData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        description:
-          type: string
-      required:
-      - '@type'
-    MetaDataHistory:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        changedAt:
-          type: string
-          format: date-time
-      required:
-      - '@type'
-      - changedAt
-    ModifyEditorElementResponse:
-      type: object
-      properties:
-        element:
-          oneOf:
-          - $ref: "#/components/schemas/EditorElementAudios"
-          - $ref: "#/components/schemas/EditorElementChapter"
-          - $ref: "#/components/schemas/EditorElementFullTextBlock"
-          - $ref: "#/components/schemas/EditorElementImages"
-          - $ref: "#/components/schemas/EditorElementQA"
-          - $ref: "#/components/schemas/EditorElementSection"
-          - $ref: "#/components/schemas/EditorElementSeparator"
-          - $ref: "#/components/schemas/EditorElementText"
-          - $ref: "#/components/schemas/EditorElementTextBlock"
-          - $ref: "#/components/schemas/EditorElementTopLevelTitle"
-      required:
-      - element
-    MoveOperation:
-      type: string
-      enum:
-      - UP
-      - DOWN
-    ObjectType:
-      type: object
-      properties:
-        complaintInterval:
-          type: integer
-          format: int32
-          maximum: 9999
-          minimum: 1
-        emailAnnouncement:
-          type: boolean
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-        routineInterval:
-          type: integer
-          format: int32
-          maximum: 9999
-          minimum: 1
-        standardBufferTime:
-          type: integer
-          format: int32
-          maximum: 9999
-          minimum: 0
-        standardDuration:
-          type: integer
-          format: int32
-          maximum: 99
-          minimum: 1
-      required:
-      - emailAnnouncement
-      - id
-      - name
-    ObjectTypeRef:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-      required:
-      - id
-      - name
-    Operation:
-      type: string
-      enum:
-      - DELETE
-    Packlist:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/PacklistElementDto"
-        id:
-          type: string
-          format: uuid
-        revisionId:
-          type: string
-          format: uuid
-      required:
-      - elements
-      - id
-      - revisionId
-    PacklistDefinition:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        mostRecentRevisionId:
-          type: string
-          format: uuid
-        mostRecentRevisionNr:
-          type: integer
-          format: int32
-        name:
-          type: string
-        objectType:
-          $ref: "#/components/schemas/ObjectTypeRef"
-        revisions:
-          type: array
-          items:
-            $ref: "#/components/schemas/PacklistDefinitionRevision"
-        version:
-          type: integer
-          format: int64
-      required:
-      - id
-      - mostRecentRevisionId
-      - mostRecentRevisionNr
-      - name
-      - revisions
-      - version
-    PacklistDefinitionElement:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        text:
-          type: string
-      required:
-      - id
-      - text
-    PacklistDefinitionRevision:
-      type: object
-      properties:
-        defId:
-          type: string
-          format: uuid
-        description:
-          type: string
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/PacklistDefinitionElement"
-        id:
-          type: string
-          format: uuid
-        modifiedBy:
-          $ref: "#/components/schemas/User"
-        name:
-          type: string
-        objectType:
-          $ref: "#/components/schemas/ObjectTypeRef"
-        revision:
-          type: integer
-          format: int32
-        validFrom:
-          type: string
-          format: date-time
-        validTo:
-          type: string
-          format: date-time
-      required:
-      - defId
-      - elements
-      - id
-      - name
-      - revision
-      - validFrom
-    PacklistDefinitionsResponse:
-      type: object
-      properties:
-        definitions:
-          type: array
-          items:
-            $ref: "#/components/schemas/PacklistDefinition"
-      required:
-      - definitions
-    PacklistElementDto:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        isChecked:
-          type: boolean
-        text:
-          type: string
-      required:
-      - id
-      - isChecked
-      - text
-    PatchManualProgressEntryRequest:
-      type: object
-      properties:
-        manualProgressEntryType:
-          $ref: "#/components/schemas/ManualProgressEntryType"
-        note:
-          type: string
-          nullable: true
-    Pdf:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/PdfMetaData"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    PdfMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          createdDate:
-            type: string
-            format: date-time
-    PdfMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          pdfMetaData:
-            $ref: "#/components/schemas/PdfMetaData"
-      required:
-      - changedAt
-    PersonType:
-      type: string
-      enum:
-      - PATIENT
-      - PARENT
-      - PROFESSIONAL
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    PostboxAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          postbox:
-            type: string
-            description: The number (or name) of the postbox.
-            example: "123"
-            maxLength: 21
-            minLength: 1
-      description: An address which is a postbox.
-      required:
-      - city
-      - country
-      - postalCode
-      - postbox
-    Procedure:
-      type: object
-      properties:
-        archivingRelevanceSettings:
-          $ref: "#/components/schemas/ArchivingRelevanceSettings"
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedAt:
-          type: string
-          format: date-time
-        createdAt:
-          type: string
-          format: date-time
-        exportedAt:
-          type: string
-          format: date-time
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        procedureStatus:
-          $ref: "#/components/schemas/ProcedureStatus"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-          pattern: "[a-zA-Z0-9.].+"
-      required:
-      - archivingRelevanceSettings
-      - businessModule
-      - createdAt
-      - modifiedAt
-      - procedureId
-      - procedureStatus
-      - procedureType
-      - summary
-    ProcedureMetric:
-      type: object
-      properties:
-        abortedCount:
-          type: integer
-          format: int64
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedCount:
-          type: integer
-          format: int64
-        inProgressCount:
-          type: integer
-          format: int64
-        openOrDraftCount:
-          type: integer
-          format: int64
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        totalCount:
-          type: integer
-          format: int64
-      required:
-      - abortedCount
-      - businessModule
-      - closedCount
-      - inProgressCount
-      - openOrDraftCount
-      - procedureType
-      - totalCount
-    ProcedureStatus:
-      type: string
-      enum:
-      - DRAFT
-      - OPEN
-      - IN_PROGRESS
-      - CLOSED
-      - ABORTED
-    ProcedureType:
-      type: string
-      enum:
-      - REGULAR_EXAMINATION
-      - CAN_CHILD
-      - ENTRY_LEVEL
-      - DRAFT_CITIZEN_OFFICE_IMPORT
-      - DRAFT_SCHOOL_IMPORT
-      - INSPECTION
-      - TM_VACCINATION_CONSULTATION
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY_ENTRY
-      - MEDICAL_REGISTRY_CITIZEN_DRAFT
-      - MEDICAL_REGISTRY_EMPLOYEE_DRAFT
-      - DENTAL_CHILD
-      - OFFICIAL_MEDICAL_SERVICE
-    ProcedureWithDuration:
-      type: object
-      properties:
-        createdAt:
-          type: string
-          format: date-time
-        duration:
-          type: string
-          description: A duration in ISO 8601
-        id:
-          type: string
-          format: uuid
-      required:
-      - createdAt
-      - id
-    ProcessedInboxProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          createdByUserFirstName:
-            type: string
-          createdByUserLastName:
-            type: string
-          inboxProcedureId:
-            type: string
-            format: uuid
-          inboxProgressEntryType:
-            $ref: "#/components/schemas/InboxProgressEntryType"
-          messageText:
-            type: string
-          subject:
-            type: string
-      required:
-      - createdAt
-      - createdBy
-      - inboxProcedureId
-      - inboxProgressEntryType
-      - modifiedAt
-      - progressEntryId
-    ProgressEntry:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        createdAt:
-          type: string
-          format: date-time
-        fileReference:
-          oneOf:
-          - $ref: "#/components/schemas/GenericFileReference"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        modifiedAt:
-          type: string
-          format: date-time
-        progressEntryId:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - createdAt
-      - modifiedAt
-      - progressEntryId
-    ProgressEntryClass:
-      type: string
-      enum:
-      - MANUAL_PROGRESS_ENTRY
-      - SYSTEM_PROGRESS_ENTRY
-      - PROCESSED_INBOX_PROGRESS_ENTRY
-    ProgressEntryReferenceFilePair:
-      type: object
-      properties:
-        file:
-          oneOf:
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        progressEntryId:
-          type: string
-          format: uuid
-      required:
-      - file
-      - progressEntryId
-    ProgressEntrySortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - CREATED_AT
-      - MODIFIED_AT
-    ProgressEntrySortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    PutFacilityRequest:
-      type: object
-      description: Request used for performing a consistent update of file state and
-        associated reference facility
-      properties:
-        updatedFacility:
-          $ref: "#/components/schemas/FacilityDetails"
-      required:
-      - updatedFacility
-    ReportInfo:
-      type: object
-      properties:
-        creatorUserId:
-          type: string
-          format: uuid
-        fileContentId:
-          type: string
-          format: uuid
-        fileName:
-          type: string
-        fileSize:
-          type: integer
-          format: int64
-        reportDate:
-          type: string
-          format: date-time
-        reportId:
-          type: string
-          format: uuid
-      required:
-      - creatorUserId
-      - fileContentId
-      - fileName
-      - fileSize
-      - reportDate
-      - reportId
-    ResolveFacilityDuplicateRequest:
-      type: object
-      properties:
-        chosenReferenceId:
-          type: string
-          format: uuid
-      required:
-      - chosenReferenceId
-    ResolveInspectionDuplicateRequest:
-      type: object
-      properties:
-        keepInspection:
-          type: boolean
-      required:
-      - keepInspection
-    ResourceType:
-      type: string
-      description: The list of possible types under which Resources can be categorized.
-      enum:
-      - BICYCLE
-      - CAR
-      - ROOM
-      - CAMERA
-      - MEASURING_DEVICE
-      - MEASURING_KIT
-      - MISC
-      - TABLET
-      - LAPTOP
-    Salutation:
-      type: string
-      description: A list of categories for the salutation from which specific salutation
-        phrases can be derived. The choice of salutation is free for every citizen
-        and not dependent on gender.
-      enum:
-      - NOT_SPECIFIED
-      - NEUTRAL
-      - FEMALE
-      - MALE
-    SelfAssignTaskRequest:
-      type: object
-      properties:
-        dueAt:
-          type: string
-          format: date-time
-        taskVersion:
-          type: integer
-          format: int64
-      required:
-      - taskVersion
-    SingleObjectTypeResponse:
-      type: object
-      properties:
-        objectType:
-          $ref: "#/components/schemas/ObjectType"
-      required:
-      - objectType
-    SortDirection:
-      type: string
-      enum:
-      - ASC
-      - DESC
-    StartInspectionRequest:
-      type: object
-      properties:
-        assigneeId:
-          type: string
-          format: uuid
-        objectTypeId:
-          type: string
-          format: uuid
-        progressEntryText:
-          type: string
-        type:
-          $ref: "#/components/schemas/InspectionType"
-      required:
-      - assigneeId
-      - type
-    SystemProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          changeDescription:
-            type: string
-          keyDocumentType:
-            type: string
-          keyDocumentVersion:
-            type: integer
-            format: int32
-          previousFileStateId:
-            type: string
-            format: uuid
-          systemProgressEntryType:
-            type: string
-          triggerType:
-            $ref: "#/components/schemas/TriggerType"
-          triggeredBy:
-            type: string
-            format: uuid
-          triggeredByUserFirstName:
-            type: string
-          triggeredByUserLastName:
-            type: string
-      - $ref: "#/components/schemas/KeyDocumentAwareProgressEntry"
-      required:
-      - createdAt
-      - modifiedAt
-      - progressEntryId
-      - systemProgressEntryType
-      - triggerType
-    Task:
-      type: object
-      properties:
-        assignedById:
-          type: string
-          format: uuid
-        assigneeId:
-          type: string
-          format: uuid
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        createdAt:
-          type: string
-          format: date-time
-        dueAt:
-          type: string
-          format: date-time
-        isOverdue:
-          type: boolean
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-        taskId:
-          type: string
-          format: uuid
-        taskStatus:
-          $ref: "#/components/schemas/TaskStatus"
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        version:
-          type: integer
-          format: int64
-      required:
-      - businessModule
-      - createdAt
-      - isOverdue
-      - modifiedAt
-      - procedureId
-      - summary
-      - taskId
-      - taskStatus
-      - taskType
-      - version
-    TaskMetric:
-      type: object
-      properties:
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        moreThanTwoOccurrencesCount:
-          type: integer
-          format: int32
-        noOccurrencesCount:
-          type: integer
-          format: int32
-        oneOccurrenceCount:
-          type: integer
-          format: int32
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        twoOccurrencesCount:
-          type: integer
-          format: int32
-      required:
-      - moreThanTwoOccurrencesCount
-      - noOccurrencesCount
-      - oneOccurrenceCount
-      - taskType
-      - twoOccurrencesCount
-    TaskResponse:
-      type: object
-      properties:
-        count:
-          type: integer
-          format: int64
-          description: total number of tasks for this query
-        tasks:
-          type: array
-          items:
-            $ref: "#/components/schemas/Task"
-          maxItems: 200
-          minItems: 0
-      required:
-      - count
-      - tasks
-    TaskStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    TaskType:
-      type: string
-      enum:
-      - BOOK_APPOINTMENT
-      - PERFORM_SCHOOL_ENTRY_EXAMINATION
-      - INSPECTION_PLANNING
-      - INSPECTION_EXECUTION
-      - INSPECTION_REPORT
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - OFFICIAL_MEDICAL_SERVICE
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
-    TextBlock:
-      type: object
-      properties:
-        content:
-          type: string
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-      required:
-      - content
-      - id
-      - name
-    TextBlockRequest:
-      type: object
-      properties:
-        content:
-          type: string
-        name:
-          type: string
-      required:
-      - content
-      - name
-    TextBlockSortKey:
-      type: string
-      enum:
-      - NAME
-    Title:
-      type: string
-      enum:
-      - DR
-      - PROF
-      - PROF_DR
-    TriggerType:
-      type: string
-      enum:
-      - SYSTEM_AUTOMATIC
-      - EMPLOYEE
-      - CITIZEN
-    UpdateChecklist:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/UpdateChecklistAudio"
-            - $ref: "#/components/schemas/UpdateChecklistCheckbox"
-            - $ref: "#/components/schemas/UpdateChecklistImage"
-            - $ref: "#/components/schemas/UpdateChecklistMultiSelect"
-            - $ref: "#/components/schemas/UpdateChecklistSingleSelect"
-            - $ref: "#/components/schemas/UpdateChecklistText"
-      required:
-      - elements
-    UpdateChecklistAudio:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/UpdateChecklistElement"
-      - type: object
-        properties:
-          audio:
-            type: string
-            format: uuid
-            writeOnly: true
-          audioExternalId:
-            type: string
-            format: uuid
-      required:
-      - id
-    UpdateChecklistCheckbox:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/UpdateChecklistElement"
-      - type: object
-        properties:
-          checked:
-            type: boolean
-      required:
-      - id
-    UpdateChecklistElement:
-      type: object
-      discriminator:
-        mapping:
-          AUDIO: "#/components/schemas/UpdateChecklistAudio"
-          CHECKBOX: "#/components/schemas/UpdateChecklistCheckbox"
-          IMAGE: "#/components/schemas/UpdateChecklistImage"
-          MULTI_SELECT: "#/components/schemas/UpdateChecklistMultiSelect"
-          SINGLE_SELECT: "#/components/schemas/UpdateChecklistSingleSelect"
-          TEXT: "#/components/schemas/UpdateChecklistText"
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        id:
-          type: string
-          format: uuid
-        incident:
-          type: boolean
-      required:
-      - '@type'
-      - id
-    UpdateChecklistImage:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/UpdateChecklistElement"
-      - type: object
-        properties:
-          image:
-            type: string
-            format: uuid
-            writeOnly: true
-          imageExternalId:
-            type: string
-            format: uuid
-      required:
-      - id
-    UpdateChecklistMultiSelect:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/UpdateChecklistElement"
-      - type: object
-        properties:
-          checkedButtonNames:
-            type: array
-            items:
-              type: string
-      required:
-      - id
-    UpdateChecklistRequest:
-      type: object
-      properties:
-        checklist:
-          $ref: "#/components/schemas/UpdateChecklist"
-    UpdateChecklistResponse:
-      type: object
-      properties:
-        checklist:
-          $ref: "#/components/schemas/Checklist"
-      required:
-      - checklist
-    UpdateChecklistSingleSelect:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/UpdateChecklistElement"
-      - type: object
-        properties:
-          checkedButtonName:
-            type: string
-      required:
-      - id
-    UpdateChecklistText:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/UpdateChecklistElement"
-      - type: object
-        properties:
-          input:
-            type: string
-      required:
-      - id
-    UpdateEditorRequest:
-      type: object
-      properties:
-        answerId:
-          type: string
-          format: uuid
-        moveOperation:
-          $ref: "#/components/schemas/MoveOperation"
-        text:
-          type: string
-        title:
-          type: string
-    UpdateInspectionAddResourceRequest:
-      type: object
-      properties:
-        end:
-          type: string
-          format: date-time
-        resourceId:
-          type: string
-          format: uuid
-        start:
-          type: string
-          format: date-time
-      required:
-      - end
-      - resourceId
-      - start
-    UpdateInspectionAppointment:
-      type: object
-      properties:
-        end:
-          type: string
-          format: date-time
-        start:
-          type: string
-          format: date-time
-      required:
-      - end
-      - start
-    UpdateInspectionIncidentRequest:
-      type: object
-      properties:
-        description:
-          type: string
-        title:
-          type: string
-      required:
-      - description
-    UpdateInspectionModifyInventoryRequest:
-      type: object
-      properties:
-        bookingId:
-          type: integer
-          format: int64
-        count:
-          type: integer
-          format: int32
-          minimum: 0
-        inventoryId:
-          type: string
-          format: uuid
-      required:
-      - count
-      - inventoryId
-    UpdateInspectionRequest:
-      type: object
-      properties:
-        announcementDto:
-          $ref: "#/components/schemas/InspectionAnnouncement"
-        assigneeId:
-          type: string
-          format: uuid
-        centralFileStateID:
-          type: string
-          format: uuid
-        challenging:
-          type: boolean
-        checklistDefinitionVersionIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-        executedAppointment:
-          $ref: "#/components/schemas/UpdateInspectionAppointment"
-        followupDate:
-          type: string
-          format: date-time
-        followupType:
-          $ref: "#/components/schemas/FollowupType"
-        lock:
-          type: boolean
-        notes:
-          type: string
-        packlistDefinitionRevisionIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-        plannedAppointment:
-          $ref: "#/components/schemas/UpdateInspectionAppointment"
-        result:
-          $ref: "#/components/schemas/InspectionResult"
-        travelTime:
-          $ref: "#/components/schemas/UpdateInspectionTravelTime"
-        type:
-          $ref: "#/components/schemas/InspectionType"
-    UpdateInspectionTravelTime:
-      type: object
-      properties:
-        endBufferInMinutes:
-          type: integer
-          format: int32
-        endTime:
-          type: string
-          format: date-time
-        startBufferInMinutes:
-          type: integer
-          format: int32
-        startTime:
-          type: string
-          format: date-time
-    UpdateObjectTypeRequest:
-      type: object
-      properties:
-        complaintInterval:
-          type: integer
-          format: int32
-        emailAnnouncement:
-          type: boolean
-        routineInterval:
-          type: integer
-          format: int32
-        standardBufferTime:
-          type: integer
-          format: int32
-        standardDuration:
-          type: integer
-          format: int32
-    UpdatePacklistElementRequest:
-      type: object
-      properties:
-        checked:
-          type: boolean
-      required:
-      - checked
-    UpdateWebSearchEntryRequest:
-      type: object
-      properties:
-        ignored:
-          type: boolean
-    UploadMediaFileRequest:
-      type: object
-      properties:
-        checklistId:
-          type: string
-          format: uuid
-        fileExternalId:
-          type: string
-          format: uuid
-        inspectionExternalId:
-          type: string
-          format: uuid
-        updateElementDto:
-          oneOf:
-          - $ref: "#/components/schemas/UpdateChecklistAudio"
-          - $ref: "#/components/schemas/UpdateChecklistCheckbox"
-          - $ref: "#/components/schemas/UpdateChecklistImage"
-          - $ref: "#/components/schemas/UpdateChecklistMultiSelect"
-          - $ref: "#/components/schemas/UpdateChecklistSingleSelect"
-          - $ref: "#/components/schemas/UpdateChecklistText"
-      required:
-      - checklistId
-      - fileExternalId
-      - inspectionExternalId
-      - updateElementDto
-    User:
-      type: object
-      properties:
-        email:
-          type: string
-          description: The email address of a user.
-          example: example@mail.de
-        enabled:
-          type: boolean
-          description: "True, if the user can login"
-          example: false
-        externalChatUsername:
-          type: string
-          description: The chat username of the gematik TI-Messenger (matrix chat).
-          example: '@username:server'
-        firstName:
-          type: string
-          description: The given name(s) of a user.
-          example: John
-        lastName:
-          type: string
-          description: The last name of a user.
-          example: Doe
-        phoneNumber:
-          type: string
-          description: The phone number of a user.
-          example: "+491234567890"
-        userId:
-          type: string
-          format: uuid
-          description: The Id of the user.
-          example: fe9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        username:
-          type: string
-          description: The username which is displayed in the application and can
-            be used for the login.
-          example: testuser
-      required:
-      - enabled
-      - firstName
-      - lastName
-      - userId
-      - username
-    WebSearch:
-      type: object
-      properties:
-        basicURL:
-          type: string
-        id:
-          type: string
-          format: uuid
-        lastExecution:
-          type: string
-          format: date-time
-        lastSuccessfulExecution:
-          type: string
-          format: date-time
-        name:
-          type: string
-        queries:
-          type: array
-          items:
-            $ref: "#/components/schemas/WebSearchQuery"
-        runningSince:
-          type: string
-          format: date-time
-        searchCity:
-          type: string
-        searchStatus:
-          $ref: "#/components/schemas/WebSearchStatus"
-      required:
-      - basicURL
-      - id
-      - name
-      - queries
-      - searchCity
-      - searchStatus
-    WebSearchEntriesResponse:
-      type: object
-      properties:
-        entries:
-          type: array
-          items:
-            $ref: "#/components/schemas/WebSearchEntry"
-        totalElements:
-          type: integer
-          format: int64
-        totalPages:
-          type: integer
-          format: int32
-      required:
-      - entries
-      - totalElements
-      - totalPages
-    WebSearchEntry:
-      type: object
-      properties:
-        addressAddition:
-          type: string
-        city:
-          type: string
-        email:
-          type: string
-        facilityId:
-          type: string
-          format: uuid
-        houseNumber:
-          type: string
-        id:
-          type: string
-          format: uuid
-        ignored:
-          type: boolean
-        name:
-          type: string
-        phoneNumber:
-          type: string
-        postalCode:
-          type: string
-        status:
-          $ref: "#/components/schemas/WebSearchEntryStatus"
-        street:
-          type: string
-        tags:
-          type: array
-          items:
-            type: string
-      required:
-      - city
-      - id
-      - ignored
-      - name
-      - postalCode
-      - status
-      - tags
-    WebSearchEntryStatus:
-      type: string
-      enum:
-      - NEW
-      - SAVED
-      - CHANGED
-      - DELETED
-    WebSearchOverviewEntry:
-      type: object
-      properties:
-        basicURL:
-          type: string
-        facilityCount:
-          type: integer
-          format: int32
-        id:
-          type: string
-          format: uuid
-        lastExecution:
-          type: string
-          format: date-time
-        lastSuccessfulExecution:
-          type: string
-          format: date-time
-        name:
-          type: string
-        runningSince:
-          type: string
-          format: date-time
-        searchCity:
-          type: string
-        searchStatus:
-          $ref: "#/components/schemas/WebSearchStatus"
-      required:
-      - basicURL
-      - id
-      - name
-      - searchCity
-      - searchStatus
-    WebSearchOverviewResponse:
-      type: object
-      properties:
-        entries:
-          type: array
-          items:
-            $ref: "#/components/schemas/WebSearchOverviewEntry"
-      required:
-      - entries
-    WebSearchQuery:
-      type: object
-      properties:
-        facilityAddress:
-          type: string
-        facilityName:
-          type: string
-        id:
-          type: integer
-          format: int64
-        keywords:
-          type: string
-        queryName:
-          type: string
-      required:
-      - id
-      - queryName
-    WebSearchRequest:
-      type: object
-      properties:
-        basicURL:
-          type: string
-          pattern: ^https?://.*$
-        name:
-          type: string
-        searchCity:
-          type: string
-      required:
-      - basicURL
-      - name
-      - searchCity
-    WebSearchSaveQueryRequest:
-      type: object
-      properties:
-        facilityAddress:
-          type: string
-        facilityName:
-          type: string
-        keywords:
-          type: string
-        queryId:
-          type: integer
-          format: int64
-        queryName:
-          type: string
-    WebSearchStatus:
-      type: string
-      enum:
-      - NEW
-      - IDLE
-      - RUNNING
-      - PAUSED
-      - ERRONEOUS
diff --git a/backend/lib-appointmentblock/build.gradle b/backend/lib-appointmentblock/build.gradle
index d32a2af84..f377be50e 100644
--- a/backend/lib-appointmentblock/build.gradle
+++ b/backend/lib-appointmentblock/build.gradle
@@ -19,8 +19,6 @@ dependencies {
 
     testImplementation testFixtures(project(':business-module-persistence-commons'))
     testImplementation 'org.springframework.boot:spring-boot-starter-data-jpa'
-    testImplementation "org.testcontainers:junit-jupiter"
-    testImplementation 'org.testcontainers:postgresql'
 
     testRuntimeOnly project(':lib-base-client')
     testRuntimeOnly 'org.postgresql:postgresql'
diff --git a/backend/lib-appointmentblock/gradle.lockfile b/backend/lib-appointmentblock/gradle.lockfile
index a31751b22..4fb93e1d6 100644
--- a/backend/lib-appointmentblock/gradle.lockfile
+++ b/backend/lib-appointmentblock/gradle.lockfile
@@ -189,10 +189,9 @@ org.springframework:spring-test:6.2.1=testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-tx:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-web:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-webmvc:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-org.testcontainers:database-commons:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:jdbc:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:junit-jupiter:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:postgresql:1.20.4=testCompileClasspath,testRuntimeClasspath
+org.testcontainers:database-commons:1.20.4=testRuntimeClasspath
+org.testcontainers:jdbc:1.20.4=testRuntimeClasspath
+org.testcontainers:postgresql:1.20.4=testRuntimeClasspath
 org.testcontainers:testcontainers:1.20.4=testCompileClasspath,testRuntimeClasspath
 org.xmlunit:xmlunit-core:2.10.0=testCompileClasspath,testRuntimeClasspath
 org.yaml:snakeyaml:2.3=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
diff --git a/backend/lib-appointmentblock/openApi.json b/backend/lib-appointmentblock/openApi.json
new file mode 100644
index 000000000..af595e4b5
--- /dev/null
+++ b/backend/lib-appointmentblock/openApi.json
@@ -0,0 +1,850 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is a the generic API for all business modules",
+    "title" : "The generic appointmentblock library API for business modules",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8080"
+  } ],
+  "paths" : {
+    "/appointment-blocks/appointment-block-groups" : {
+      "get" : {
+        "operationId" : "getAppointmentBlockGroups",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/AppointmentBlockSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAppointmentBlockGroupsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all appointment block groups.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-blocks/daily-appointment-block-groups" : {
+      "post" : {
+        "operationId" : "createDailyAppointmentBlocksForGroup",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CreateAppointmentBlockGroupResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create appointment group with blocks for week days.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-blocks/daily-appointment-block-groups/validate" : {
+      "post" : {
+        "operationId" : "validateDailyAppointmentBlocksForGroup",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ValidateAppointmentBlockGroupResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create appointment group with blocks for week days.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-blocks/free-appointments" : {
+      "get" : {
+        "operationId" : "getFreeAppointments",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "appointmentType",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "earliestDate",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "physicianId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFreeAppointmentsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get free appointments for an appointment type.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-types" : {
+      "get" : {
+        "operationId" : "getAppointmentTypes",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAppointmentTypesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets all Appointment Types",
+        "tags" : [ "AppointmentType" ]
+      }
+    },
+    "/appointment-types/{id}" : {
+      "get" : {
+        "operationId" : "getOneAppointmentType",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AppointmentTypeConfig"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets one Appointment Type by ID",
+        "tags" : [ "AppointmentType" ]
+      },
+      "put" : {
+        "operationId" : "updateAppointmentType",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateAppointmentTypeRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AppointmentTypeConfig"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modifies an existing Appointment Type",
+        "tags" : [ "AppointmentType" ]
+      }
+    },
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "Appointment" : {
+        "required" : [ "end", "start" ],
+        "type" : "object",
+        "properties" : {
+          "end" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "start" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        },
+        "description" : "Appointment of a procedure."
+      },
+      "AppointmentBlockSortKey" : {
+        "type" : "string",
+        "enum" : [ "START", "END" ]
+      },
+      "AppointmentLocation" : {
+        "required" : [ "id", "name" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "AppointmentType" : {
+        "type" : "string",
+        "enum" : [ "CONSULTATION", "VACCINATION", "REGULAR_EXAMINATION", "CAN_CHILD", "ENTRY_LEVEL", "SPECIAL_NEEDS", "PROOF_SUBMISSION", "HIV_STI_CONSULTATION", "SEX_WORK", "RESULTS_REVIEW", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "AppointmentTypeConfig" : {
+        "required" : [ "appointmentTypeDto", "id", "standardDurationInMinutes" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentTypeDto" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "standardDurationInMinutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "CreateAppointmentBlockGroupResponse" : {
+        "required" : [ "appointmentBlockIds", "id" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlockIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the AppointmentBlockGroup.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          }
+        }
+      },
+      "CreateDailyAppointmentBlock" : {
+        "required" : [ "daysOfWeek", "end", "start" ],
+        "type" : "object",
+        "properties" : {
+          "daysOfWeek" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DayOfWeek"
+            }
+          },
+          "end" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block ends.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:45:00.123456+01:00"
+          },
+          "start" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block starts.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:00:00.123456+01:00"
+          }
+        }
+      },
+      "CreateDailyAppointmentBlockGroupRequest" : {
+        "required" : [ "appointmentBlocks", "parallelExaminations", "type" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlocks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CreateDailyAppointmentBlock"
+            }
+          },
+          "consultants" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "locationId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "mfas" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "parallelExaminations" : {
+            "maximum" : 10,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "physicians" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }
+      },
+      "DayOfWeek" : {
+        "type" : "string",
+        "enum" : [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ]
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "GetAppointmentBlock" : {
+        "required" : [ "end", "id", "numberOfBookedAppointments", "numberOfFreeAppointments", "start" ],
+        "type" : "object",
+        "properties" : {
+          "end" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block ends.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:45:00.123456+01:00"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the AppointmentBlock.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "numberOfBookedAppointments" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "numberOfFreeAppointments" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "start" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block starts.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:00:00.123456+01:00"
+          }
+        },
+        "description" : "A planned appointment block. Appointment blocks offer a set of bookable appointments at different times within the timeframe of the appointment block."
+      },
+      "GetAppointmentBlockGroup" : {
+        "required" : [ "appointmentBlocks", "id", "parallelExaminations", "type" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlocks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GetAppointmentBlock"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the AppointmentBlockGroup.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "location" : {
+            "$ref" : "#/components/schemas/AppointmentLocation"
+          },
+          "parallelExaminations" : {
+            "maximum" : 10,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }
+      },
+      "GetAppointmentBlockGroupsResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GetAppointmentBlockGroup"
+            }
+          },
+          "totalNumberOfElements" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetAppointmentTypesResponse" : {
+        "required" : [ "appointmentTypeConfigDtos" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentTypeConfigDtos" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AppointmentTypeConfig"
+            }
+          }
+        }
+      },
+      "GetFreeAppointmentsResponse" : {
+        "required" : [ "appointments" ],
+        "type" : "object",
+        "properties" : {
+          "appointments" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Appointment"
+            }
+          }
+        }
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "SortDirection" : {
+        "type" : "string",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      },
+      "UpdateAppointmentTypeRequest" : {
+        "required" : [ "standardDurationInMinutes" ],
+        "type" : "object",
+        "properties" : {
+          "standardDurationInMinutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "ValidateAppointmentBlockGroupResponse" : {
+        "required" : [ "userIdsWithEventConflicts", "userIdsWithoutEventConflicts" ],
+        "type" : "object",
+        "properties" : {
+          "userIdsWithEventConflicts" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "userIdsWithoutEventConflicts" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/backend/lib-appointmentblock/openApi.yaml b/backend/lib-appointmentblock/openApi.yaml
deleted file mode 100644
index d8de40986..000000000
--- a/backend/lib-appointmentblock/openApi.yaml
+++ /dev/null
@@ -1,681 +0,0 @@
-# Copyright 2025 cronn GmbH
-# SPDX-License-Identifier: Apache-2.0
-
-openapi: 3.0.1
-info:
-  description: This is a the generic API for all business modules
-  title: The generic appointmentblock library API for business modules
-  version: "0.1"
-servers:
-- url: http://localhost:8080
-paths:
-  /appointment-blocks/appointment-block-groups:
-    get:
-      operationId: getAppointmentBlockGroups
-      parameters:
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/AppointmentBlockSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAppointmentBlockGroupsResponse"
-          description: OK
-      summary: Get all appointment block groups.
-      tags:
-      - AppointmentBlock
-  /appointment-blocks/daily-appointment-block-groups:
-    post:
-      operationId: createDailyAppointmentBlocksForGroup
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CreateAppointmentBlockGroupResponse"
-          description: OK
-      summary: Create appointment group with blocks for week days.
-      tags:
-      - AppointmentBlock
-  /appointment-blocks/daily-appointment-block-groups/validate:
-    post:
-      operationId: validateDailyAppointmentBlocksForGroup
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ValidateAppointmentBlockGroupResponse"
-          description: OK
-      summary: Create appointment group with blocks for week days.
-      tags:
-      - AppointmentBlock
-  /appointment-blocks/free-appointments:
-    get:
-      operationId: getFreeAppointments
-      parameters:
-      - in: query
-        name: appointmentType
-        required: true
-        schema:
-          $ref: "#/components/schemas/AppointmentType"
-      - in: query
-        name: earliestDate
-        required: false
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: physicianId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetFreeAppointmentsResponse"
-          description: OK
-      summary: Get free appointments for an appointment type.
-      tags:
-      - AppointmentBlock
-  /appointment-types:
-    get:
-      operationId: getAppointmentTypes
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAppointmentTypesResponse"
-          description: OK
-      summary: Gets all Appointment Types
-      tags:
-      - AppointmentType
-  /appointment-types/{id}:
-    get:
-      operationId: getOneAppointmentType
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AppointmentTypeConfig"
-          description: OK
-      summary: Gets one Appointment Type by ID
-      tags:
-      - AppointmentType
-    put:
-      operationId: updateAppointmentType
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateAppointmentTypeRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AppointmentTypeConfig"
-          description: OK
-      summary: Modifies an existing Appointment Type
-      tags:
-      - AppointmentType
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-components:
-  schemas:
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    Appointment:
-      type: object
-      description: Appointment of a procedure.
-      properties:
-        end:
-          type: string
-          format: date-time
-        start:
-          type: string
-          format: date-time
-      required:
-      - end
-      - start
-    AppointmentBlockSortKey:
-      type: string
-      enum:
-      - START
-      - END
-    AppointmentLocation:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-      required:
-      - id
-      - name
-    AppointmentType:
-      type: string
-      enum:
-      - CONSULTATION
-      - VACCINATION
-      - REGULAR_EXAMINATION
-      - CAN_CHILD
-      - ENTRY_LEVEL
-      - SPECIAL_NEEDS
-      - PROOF_SUBMISSION
-      - HIV_STI_CONSULTATION
-      - SEX_WORK
-      - RESULTS_REVIEW
-      - OFFICIAL_MEDICAL_SERVICE
-    AppointmentTypeConfig:
-      type: object
-      properties:
-        appointmentTypeDto:
-          $ref: "#/components/schemas/AppointmentType"
-        id:
-          type: string
-          format: uuid
-        standardDurationInMinutes:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - appointmentTypeDto
-      - id
-      - standardDurationInMinutes
-    CreateAppointmentBlockGroupResponse:
-      type: object
-      properties:
-        appointmentBlockIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-        id:
-          type: string
-          format: uuid
-          description: Id of the AppointmentBlockGroup.
-          example: a765534d-760a-417d-8639-5e2fd59246e2
-      required:
-      - appointmentBlockIds
-      - id
-    CreateDailyAppointmentBlock:
-      type: object
-      properties:
-        daysOfWeek:
-          type: array
-          items:
-            $ref: "#/components/schemas/DayOfWeek"
-        end:
-          type: string
-          format: date-time
-          description: Time at which the appointment block ends.
-          example: 2016-01-01T01:45:00.123456+01:00
-        start:
-          type: string
-          format: date-time
-          description: Time at which the appointment block starts.
-          example: 2016-01-01T01:00:00.123456+01:00
-      required:
-      - daysOfWeek
-      - end
-      - start
-    CreateDailyAppointmentBlockGroupRequest:
-      type: object
-      properties:
-        appointmentBlocks:
-          type: array
-          items:
-            $ref: "#/components/schemas/CreateDailyAppointmentBlock"
-        consultants:
-          type: array
-          items:
-            type: string
-            format: uuid
-        locationId:
-          type: string
-          format: uuid
-        mfas:
-          type: array
-          items:
-            type: string
-            format: uuid
-        parallelExaminations:
-          type: integer
-          format: int32
-          maximum: 10
-          minimum: 1
-        physicians:
-          type: array
-          items:
-            type: string
-            format: uuid
-        type:
-          $ref: "#/components/schemas/AppointmentType"
-      required:
-      - appointmentBlocks
-      - parallelExaminations
-      - type
-    DayOfWeek:
-      type: string
-      enum:
-      - MONDAY
-      - TUESDAY
-      - WEDNESDAY
-      - THURSDAY
-      - FRIDAY
-      - SATURDAY
-      - SUNDAY
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    GetAppointmentBlock:
-      type: object
-      description: A planned appointment block. Appointment blocks offer a set of
-        bookable appointments at different times within the timeframe of the appointment
-        block.
-      properties:
-        end:
-          type: string
-          format: date-time
-          description: Time at which the appointment block ends.
-          example: 2016-01-01T01:45:00.123456+01:00
-        id:
-          type: string
-          format: uuid
-          description: Id of the AppointmentBlock.
-          example: a765534d-760a-417d-8639-5e2fd59246e2
-        numberOfBookedAppointments:
-          type: integer
-          format: int64
-          minimum: 0
-        numberOfFreeAppointments:
-          type: integer
-          format: int64
-          minimum: 0
-        start:
-          type: string
-          format: date-time
-          description: Time at which the appointment block starts.
-          example: 2016-01-01T01:00:00.123456+01:00
-      required:
-      - end
-      - id
-      - numberOfBookedAppointments
-      - numberOfFreeAppointments
-      - start
-    GetAppointmentBlockGroup:
-      type: object
-      properties:
-        appointmentBlocks:
-          type: array
-          items:
-            $ref: "#/components/schemas/GetAppointmentBlock"
-        id:
-          type: string
-          format: uuid
-          description: Id of the AppointmentBlockGroup.
-          example: a765534d-760a-417d-8639-5e2fd59246e2
-        location:
-          $ref: "#/components/schemas/AppointmentLocation"
-        parallelExaminations:
-          type: integer
-          format: int32
-          maximum: 10
-          minimum: 1
-        type:
-          $ref: "#/components/schemas/AppointmentType"
-      required:
-      - appointmentBlocks
-      - id
-      - parallelExaminations
-      - type
-    GetAppointmentBlockGroupsResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/GetAppointmentBlockGroup"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-      required:
-      - elements
-      - totalNumberOfElements
-    GetAppointmentTypesResponse:
-      type: object
-      properties:
-        appointmentTypeConfigDtos:
-          type: array
-          items:
-            $ref: "#/components/schemas/AppointmentTypeConfig"
-      required:
-      - appointmentTypeConfigDtos
-    GetFreeAppointmentsResponse:
-      type: object
-      properties:
-        appointments:
-          type: array
-          items:
-            $ref: "#/components/schemas/Appointment"
-      required:
-      - appointments
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    SortDirection:
-      type: string
-      enum:
-      - ASC
-      - DESC
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
-    UpdateAppointmentTypeRequest:
-      type: object
-      properties:
-        standardDurationInMinutes:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - standardDurationInMinutes
-    ValidateAppointmentBlockGroupResponse:
-      type: object
-      properties:
-        userIdsWithEventConflicts:
-          type: array
-          items:
-            type: string
-            format: uuid
-        userIdsWithoutEventConflicts:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - userIdsWithEventConflicts
-      - userIdsWithoutEventConflicts
diff --git a/backend/lib-editor/openApi.json b/backend/lib-editor/openApi.json
new file mode 100644
index 000000000..db9bf0d22
--- /dev/null
+++ b/backend/lib-editor/openApi.json
@@ -0,0 +1,775 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is the API for the editor library 'lib-editor'",
+    "title" : "The editor library API",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8080"
+  } ],
+  "paths" : {
+    "/editor/{editorId}" : {
+      "get" : {
+        "operationId" : "loadEditor",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "editorId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Editor"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get editor content",
+        "tags" : [ "Editor" ]
+      }
+    },
+    "/editor/{editorId}/element" : {
+      "post" : {
+        "operationId" : "insertEditorElement",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "editorId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertEditorRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ModifyEditorElementResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Insert an editor element",
+        "tags" : [ "Editor" ]
+      }
+    },
+    "/editor/{editorId}/element/{elementId}" : {
+      "delete" : {
+        "operationId" : "deleteEditorElement",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "editorId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "elementId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete an editor element",
+        "tags" : [ "Editor" ]
+      },
+      "patch" : {
+        "operationId" : "updateEditorElement",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "editorId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "elementId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateEditorRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ModifyEditorElementResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update an editor element",
+        "tags" : [ "Editor" ]
+      }
+    },
+    "/textblocks" : {
+      "get" : {
+        "operationId" : "getTextBlocks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "searchQuery",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/TextBlockSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTextBlocksResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all text blocks, filtered and paginated",
+        "tags" : [ "TextBlock" ]
+      },
+      "post" : {
+        "operationId" : "createTextBlock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TextBlockRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TextBlock"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Creates a new text block",
+        "tags" : [ "TextBlock" ]
+      }
+    },
+    "/textblocks/{textBlockId}" : {
+      "delete" : {
+        "operationId" : "deleteTextBlock",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "textBlockId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete a text block",
+        "tags" : [ "TextBlock" ]
+      },
+      "get" : {
+        "operationId" : "getTextBlock",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "textBlockId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TextBlock"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a text block by its id",
+        "tags" : [ "TextBlock" ]
+      },
+      "patch" : {
+        "operationId" : "updateTextBlock",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "textBlockId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TextBlockRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TextBlock"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update the data for a text block",
+        "tags" : [ "TextBlock" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "Editor" : {
+        "required" : [ "editorBody", "id" ],
+        "type" : "object",
+        "properties" : {
+          "editorBody" : {
+            "$ref" : "#/components/schemas/EditorBody"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "EditorBody" : {
+        "required" : [ "elements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/EditorElementAudios"
+              }, {
+                "$ref" : "#/components/schemas/EditorElementChapter"
+              }, {
+                "$ref" : "#/components/schemas/EditorElementFullTextBlock"
+              }, {
+                "$ref" : "#/components/schemas/EditorElementImages"
+              }, {
+                "$ref" : "#/components/schemas/EditorElementQA"
+              }, {
+                "$ref" : "#/components/schemas/EditorElementSection"
+              }, {
+                "$ref" : "#/components/schemas/EditorElementSeparator"
+              }, {
+                "$ref" : "#/components/schemas/EditorElementText"
+              }, {
+                "$ref" : "#/components/schemas/EditorElementTextBlock"
+              }, {
+                "$ref" : "#/components/schemas/EditorElementTopLevelTitle"
+              } ]
+            }
+          }
+        }
+      },
+      "EditorElement" : {
+        "required" : [ "@type", "deletable", "editable", "highlighted", "id", "moveable" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "deletable" : {
+            "type" : "boolean"
+          },
+          "editable" : {
+            "type" : "boolean"
+          },
+          "highlighted" : {
+            "type" : "boolean"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "moveable" : {
+            "type" : "boolean"
+          },
+          "referenceID" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "mapping" : {
+            "AUDIOS" : "#/components/schemas/EditorElementAudios",
+            "CHAPTER" : "#/components/schemas/EditorElementChapter",
+            "FULL_TEXT_BLOCK" : "#/components/schemas/EditorElementFullTextBlock",
+            "IMAGES" : "#/components/schemas/EditorElementImages",
+            "QUESTION_AND_ANSWERS" : "#/components/schemas/EditorElementQA",
+            "SECTION" : "#/components/schemas/EditorElementSection",
+            "SEPARATOR" : "#/components/schemas/EditorElementSeparator",
+            "TEXT" : "#/components/schemas/EditorElementText",
+            "TEXT_BLOCK" : "#/components/schemas/EditorElementTextBlock",
+            "TOPLEVEL_TITLE" : "#/components/schemas/EditorElementTopLevelTitle"
+          },
+          "propertyName" : "@type"
+        }
+      },
+      "EditorElementAnswer" : {
+        "required" : [ "answerId", "answerText", "selected" ],
+        "type" : "object",
+        "properties" : {
+          "answerId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "answerText" : {
+            "type" : "string"
+          },
+          "extraText" : {
+            "type" : "string"
+          },
+          "selected" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "EditorElementAudio" : {
+        "required" : [ "externalId" ],
+        "type" : "object",
+        "properties" : {
+          "externalId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "fileDate" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "fileName" : {
+            "type" : "string"
+          },
+          "fileSize" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "EditorElementAudios" : {
+        "required" : [ "audios", "deletable", "editable", "highlighted", "id", "moveable", "title" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "audios" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/EditorElementAudio"
+              }
+            },
+            "title" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "EditorElementChapter" : {
+        "required" : [ "deletable", "editable", "highlighted", "id", "moveable", "title" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "title" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "EditorElementFullTextBlock" : {
+        "required" : [ "deletable", "editable", "highlighted", "id", "moveable", "text", "title" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "text" : {
+              "type" : "string"
+            },
+            "title" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "EditorElementImage" : {
+        "required" : [ "externalId" ],
+        "type" : "object",
+        "properties" : {
+          "externalId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "fileDate" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "fileName" : {
+            "type" : "string"
+          },
+          "fileSize" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "EditorElementImages" : {
+        "required" : [ "deletable", "editable", "highlighted", "id", "images", "moveable", "title" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "images" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/EditorElementImage"
+              }
+            },
+            "title" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "EditorElementQA" : {
+        "required" : [ "answers", "deletable", "editable", "highlighted", "id", "moveable", "title" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "answers" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/EditorElementAnswer"
+              }
+            },
+            "title" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "EditorElementSection" : {
+        "required" : [ "deletable", "editable", "highlighted", "id", "moveable", "title" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "title" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "EditorElementSeparator" : {
+        "required" : [ "deletable", "editable", "highlighted", "id", "moveable" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        } ]
+      },
+      "EditorElementText" : {
+        "required" : [ "deletable", "editable", "highlighted", "id", "moveable", "text" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "text" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "EditorElementTextBlock" : {
+        "required" : [ "deletable", "editable", "highlighted", "id", "moveable", "text", "title" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "text" : {
+              "type" : "string"
+            },
+            "title" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "EditorElementTopLevelTitle" : {
+        "required" : [ "deletable", "editable", "highlighted", "id", "moveable", "title" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/EditorElement"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "title" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "GetTextBlocksResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TextBlock"
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "InsertEditorRequest" : {
+        "required" : [ "editorElement" ],
+        "type" : "object",
+        "properties" : {
+          "editorElement" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/EditorElementAudios"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementChapter"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementFullTextBlock"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementImages"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementQA"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementSection"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementSeparator"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementText"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementTextBlock"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementTopLevelTitle"
+            } ]
+          },
+          "insertAfter" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "insertBefore" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "ModifyEditorElementResponse" : {
+        "required" : [ "element" ],
+        "type" : "object",
+        "properties" : {
+          "element" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/EditorElementAudios"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementChapter"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementFullTextBlock"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementImages"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementQA"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementSection"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementSeparator"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementText"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementTextBlock"
+            }, {
+              "$ref" : "#/components/schemas/EditorElementTopLevelTitle"
+            } ]
+          }
+        }
+      },
+      "MoveOperation" : {
+        "type" : "string",
+        "enum" : [ "UP", "DOWN" ]
+      },
+      "SortDirection" : {
+        "type" : "string",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "TextBlock" : {
+        "required" : [ "content", "id", "name" ],
+        "type" : "object",
+        "properties" : {
+          "content" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "TextBlockRequest" : {
+        "required" : [ "content", "name" ],
+        "type" : "object",
+        "properties" : {
+          "content" : {
+            "type" : "string"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "TextBlockSortKey" : {
+        "type" : "string",
+        "enum" : [ "NAME" ]
+      },
+      "UpdateEditorRequest" : {
+        "type" : "object",
+        "properties" : {
+          "answerId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "moveOperation" : {
+            "$ref" : "#/components/schemas/MoveOperation"
+          },
+          "text" : {
+            "type" : "string"
+          },
+          "title" : {
+            "type" : "string"
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/backend/lib-editor/openApi.yaml b/backend/lib-editor/openApi.yaml
deleted file mode 100644
index 4cdf88c46..000000000
--- a/backend/lib-editor/openApi.yaml
+++ /dev/null
@@ -1,622 +0,0 @@
-# Copyright 2025 SCOOP Software GmbH, cronn GmbH
-# SPDX-License-Identifier: Apache-2.0
-
-openapi: 3.0.1
-info:
-  description: This is the API for the editor library 'lib-editor'
-  title: The editor library API
-  version: "0.1"
-servers:
-- url: http://localhost:8080
-paths:
-  /editor/{editorId}:
-    get:
-      operationId: loadEditor
-      parameters:
-      - in: path
-        name: editorId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Editor"
-          description: OK
-      summary: Get editor content
-      tags:
-      - Editor
-  /editor/{editorId}/element:
-    post:
-      operationId: insertEditorElement
-      parameters:
-      - in: path
-        name: editorId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertEditorRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ModifyEditorElementResponse"
-          description: OK
-      summary: Insert an editor element
-      tags:
-      - Editor
-  /editor/{editorId}/element/{elementId}:
-    delete:
-      operationId: deleteEditorElement
-      parameters:
-      - in: path
-        name: editorId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: elementId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Delete an editor element
-      tags:
-      - Editor
-    patch:
-      operationId: updateEditorElement
-      parameters:
-      - in: path
-        name: editorId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: elementId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateEditorRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ModifyEditorElementResponse"
-          description: OK
-      summary: Update an editor element
-      tags:
-      - Editor
-  /textblocks:
-    get:
-      operationId: getTextBlocks
-      parameters:
-      - in: query
-        name: searchQuery
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/TextBlockSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTextBlocksResponse"
-          description: OK
-      summary: "Get all text blocks, filtered and paginated"
-      tags:
-      - TextBlock
-    post:
-      operationId: createTextBlock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TextBlockRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TextBlock"
-          description: OK
-      summary: Creates a new text block
-      tags:
-      - TextBlock
-  /textblocks/{textBlockId}:
-    delete:
-      operationId: deleteTextBlock
-      parameters:
-      - in: path
-        name: textBlockId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Delete a text block
-      tags:
-      - TextBlock
-    get:
-      operationId: getTextBlock
-      parameters:
-      - in: path
-        name: textBlockId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TextBlock"
-          description: OK
-      summary: Get a text block by its id
-      tags:
-      - TextBlock
-    patch:
-      operationId: updateTextBlock
-      parameters:
-      - in: path
-        name: textBlockId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TextBlockRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TextBlock"
-          description: OK
-      summary: Update the data for a text block
-      tags:
-      - TextBlock
-components:
-  schemas:
-    Editor:
-      type: object
-      properties:
-        editorBody:
-          $ref: "#/components/schemas/EditorBody"
-        id:
-          type: string
-          format: uuid
-      required:
-      - editorBody
-      - id
-    EditorBody:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/EditorElementAudios"
-            - $ref: "#/components/schemas/EditorElementChapter"
-            - $ref: "#/components/schemas/EditorElementFullTextBlock"
-            - $ref: "#/components/schemas/EditorElementImages"
-            - $ref: "#/components/schemas/EditorElementQA"
-            - $ref: "#/components/schemas/EditorElementSection"
-            - $ref: "#/components/schemas/EditorElementSeparator"
-            - $ref: "#/components/schemas/EditorElementText"
-            - $ref: "#/components/schemas/EditorElementTextBlock"
-            - $ref: "#/components/schemas/EditorElementTopLevelTitle"
-      required:
-      - elements
-    EditorElement:
-      type: object
-      discriminator:
-        mapping:
-          AUDIOS: "#/components/schemas/EditorElementAudios"
-          CHAPTER: "#/components/schemas/EditorElementChapter"
-          FULL_TEXT_BLOCK: "#/components/schemas/EditorElementFullTextBlock"
-          IMAGES: "#/components/schemas/EditorElementImages"
-          QUESTION_AND_ANSWERS: "#/components/schemas/EditorElementQA"
-          SECTION: "#/components/schemas/EditorElementSection"
-          SEPARATOR: "#/components/schemas/EditorElementSeparator"
-          TEXT: "#/components/schemas/EditorElementText"
-          TEXT_BLOCK: "#/components/schemas/EditorElementTextBlock"
-          TOPLEVEL_TITLE: "#/components/schemas/EditorElementTopLevelTitle"
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        deletable:
-          type: boolean
-        editable:
-          type: boolean
-        highlighted:
-          type: boolean
-        id:
-          type: string
-          format: uuid
-        moveable:
-          type: boolean
-        referenceID:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-    EditorElementAnswer:
-      type: object
-      properties:
-        answerId:
-          type: string
-          format: uuid
-        answerText:
-          type: string
-        extraText:
-          type: string
-        selected:
-          type: boolean
-      required:
-      - answerId
-      - answerText
-      - selected
-    EditorElementAudio:
-      type: object
-      properties:
-        externalId:
-          type: string
-          format: uuid
-        fileDate:
-          type: string
-          format: date-time
-        fileName:
-          type: string
-        fileSize:
-          type: integer
-          format: int64
-      required:
-      - externalId
-    EditorElementAudios:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      - type: object
-        properties:
-          audios:
-            type: array
-            items:
-              $ref: "#/components/schemas/EditorElementAudio"
-          title:
-            type: string
-      required:
-      - audios
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-      - title
-    EditorElementChapter:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      - type: object
-        properties:
-          title:
-            type: string
-      required:
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-      - title
-    EditorElementFullTextBlock:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      - type: object
-        properties:
-          text:
-            type: string
-          title:
-            type: string
-      required:
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-      - text
-      - title
-    EditorElementImage:
-      type: object
-      properties:
-        externalId:
-          type: string
-          format: uuid
-        fileDate:
-          type: string
-          format: date-time
-        fileName:
-          type: string
-        fileSize:
-          type: integer
-          format: int64
-      required:
-      - externalId
-    EditorElementImages:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      - type: object
-        properties:
-          images:
-            type: array
-            items:
-              $ref: "#/components/schemas/EditorElementImage"
-          title:
-            type: string
-      required:
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - images
-      - moveable
-      - title
-    EditorElementQA:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      - type: object
-        properties:
-          answers:
-            type: array
-            items:
-              $ref: "#/components/schemas/EditorElementAnswer"
-          title:
-            type: string
-      required:
-      - answers
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-      - title
-    EditorElementSection:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      - type: object
-        properties:
-          title:
-            type: string
-      required:
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-      - title
-    EditorElementSeparator:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      required:
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-    EditorElementText:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      - type: object
-        properties:
-          text:
-            type: string
-      required:
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-      - text
-    EditorElementTextBlock:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      - type: object
-        properties:
-          text:
-            type: string
-          title:
-            type: string
-      required:
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-      - text
-      - title
-    EditorElementTopLevelTitle:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/EditorElement"
-      - type: object
-        properties:
-          title:
-            type: string
-      required:
-      - deletable
-      - editable
-      - highlighted
-      - id
-      - moveable
-      - title
-    GetTextBlocksResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/TextBlock"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          minimum: 0
-      required:
-      - elements
-      - totalNumberOfElements
-    InsertEditorRequest:
-      type: object
-      properties:
-        editorElement:
-          oneOf:
-          - $ref: "#/components/schemas/EditorElementAudios"
-          - $ref: "#/components/schemas/EditorElementChapter"
-          - $ref: "#/components/schemas/EditorElementFullTextBlock"
-          - $ref: "#/components/schemas/EditorElementImages"
-          - $ref: "#/components/schemas/EditorElementQA"
-          - $ref: "#/components/schemas/EditorElementSection"
-          - $ref: "#/components/schemas/EditorElementSeparator"
-          - $ref: "#/components/schemas/EditorElementText"
-          - $ref: "#/components/schemas/EditorElementTextBlock"
-          - $ref: "#/components/schemas/EditorElementTopLevelTitle"
-        insertAfter:
-          type: integer
-          format: int32
-          minimum: 0
-        insertBefore:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - editorElement
-    ModifyEditorElementResponse:
-      type: object
-      properties:
-        element:
-          oneOf:
-          - $ref: "#/components/schemas/EditorElementAudios"
-          - $ref: "#/components/schemas/EditorElementChapter"
-          - $ref: "#/components/schemas/EditorElementFullTextBlock"
-          - $ref: "#/components/schemas/EditorElementImages"
-          - $ref: "#/components/schemas/EditorElementQA"
-          - $ref: "#/components/schemas/EditorElementSection"
-          - $ref: "#/components/schemas/EditorElementSeparator"
-          - $ref: "#/components/schemas/EditorElementText"
-          - $ref: "#/components/schemas/EditorElementTextBlock"
-          - $ref: "#/components/schemas/EditorElementTopLevelTitle"
-      required:
-      - element
-    MoveOperation:
-      type: string
-      enum:
-      - UP
-      - DOWN
-    SortDirection:
-      type: string
-      enum:
-      - ASC
-      - DESC
-    TextBlock:
-      type: object
-      properties:
-        content:
-          type: string
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-      required:
-      - content
-      - id
-      - name
-    TextBlockRequest:
-      type: object
-      properties:
-        content:
-          type: string
-        name:
-          type: string
-      required:
-      - content
-      - name
-    TextBlockSortKey:
-      type: string
-      enum:
-      - NAME
-    UpdateEditorRequest:
-      type: object
-      properties:
-        answerId:
-          type: string
-          format: uuid
-        moveOperation:
-          $ref: "#/components/schemas/MoveOperation"
-        text:
-          type: string
-        title:
-          type: string
diff --git a/backend/lib-four-eyes-principle-api/src/main/java/de/eshg/lib/foureyes/model/ApprovalRequestDto.java b/backend/lib-four-eyes-principle-api/src/main/java/de/eshg/lib/foureyes/model/ApprovalRequestDto.java
index b583be1c1..be0185108 100644
--- a/backend/lib-four-eyes-principle-api/src/main/java/de/eshg/lib/foureyes/model/ApprovalRequestDto.java
+++ b/backend/lib-four-eyes-principle-api/src/main/java/de/eshg/lib/foureyes/model/ApprovalRequestDto.java
@@ -31,7 +31,9 @@ public record ApprovalRequestDto(
   public Set<UUID> getResolvableUserIds() {
     Set<UUID> uuids = new LinkedHashSet<>();
     uuids.add(createdBy);
-    uuids.addAll(entity.getResolvableUserIds());
+    Optional.ofNullable(entity)
+        .map(HasResolvableUserIds::getResolvableUserIds)
+        .ifPresent(uuids::addAll);
     return uuids;
   }
 }
diff --git a/backend/lib-four-eyes-principle/build.gradle b/backend/lib-four-eyes-principle/build.gradle
index e7c5361fa..486c2808f 100644
--- a/backend/lib-four-eyes-principle/build.gradle
+++ b/backend/lib-four-eyes-principle/build.gradle
@@ -21,8 +21,6 @@ dependencies {
     testImplementation project(':test-commons')
     testImplementation testFixtures(project(':business-module-persistence-commons'))
     testImplementation 'org.springframework.boot:spring-boot-starter-data-jpa'
-    testImplementation 'org.testcontainers:junit-jupiter'
-    testImplementation 'org.testcontainers:postgresql'
     testRuntimeOnly 'org.postgresql:postgresql'
     testRuntimeOnly 'com.h2database:h2'
 }
diff --git a/backend/lib-four-eyes-principle/gradle.lockfile b/backend/lib-four-eyes-principle/gradle.lockfile
index 95c7924c0..38a9d38fa 100644
--- a/backend/lib-four-eyes-principle/gradle.lockfile
+++ b/backend/lib-four-eyes-principle/gradle.lockfile
@@ -194,10 +194,9 @@ org.springframework:spring-test:6.2.1=testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-tx:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-web:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-webmvc:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-org.testcontainers:database-commons:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:jdbc:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:junit-jupiter:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:postgresql:1.20.4=testCompileClasspath,testRuntimeClasspath
+org.testcontainers:database-commons:1.20.4=testRuntimeClasspath
+org.testcontainers:jdbc:1.20.4=testRuntimeClasspath
+org.testcontainers:postgresql:1.20.4=testRuntimeClasspath
 org.testcontainers:testcontainers:1.20.4=testCompileClasspath,testRuntimeClasspath
 org.xmlunit:xmlunit-core:2.10.0=testCompileClasspath,testRuntimeClasspath
 org.yaml:snakeyaml:2.3=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
diff --git a/backend/lib-four-eyes-principle/openApi.json b/backend/lib-four-eyes-principle/openApi.json
new file mode 100644
index 000000000..84c66dd29
--- /dev/null
+++ b/backend/lib-four-eyes-principle/openApi.json
@@ -0,0 +1,468 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is a the generic API for all modules that use the four-eyes principle",
+    "title" : "The generic four-eyes principle library API",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8080"
+  } ],
+  "paths" : {
+    "/approval-requests/{approvalRequestId}" : {
+      "get" : {
+        "operationId" : "getApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/approval-requests/{approvalRequestId}/decision" : {
+      "put" : {
+        "operationId" : "decideApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/Decision"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ApprovalRequest" : {
+        "required" : [ "approvalRequestId", "createdAt", "createdBy", "operation", "reason", "status" ],
+        "type" : "object",
+        "properties" : {
+          "approvalRequestId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decidedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "decidedBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decision" : {
+            "$ref" : "#/components/schemas/Decision"
+          },
+          "entity" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/TestEntityDto"
+            } ]
+          },
+          "operation" : {
+            "$ref" : "#/components/schemas/Operation"
+          },
+          "reason" : {
+            "type" : "string"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ApprovalRequestStatus"
+          }
+        }
+      },
+      "ApprovalRequestEntity" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ApprovalRequestStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "Decision" : {
+        "type" : "string",
+        "enum" : [ "GRANTED", "DENIED" ]
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "Operation" : {
+        "type" : "string",
+        "enum" : [ "DELETE" ]
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "TestEntityDto" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ApprovalRequestEntity"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "id" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "locked" : {
+              "type" : "boolean"
+            }
+          }
+        } ]
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/backend/lib-four-eyes-principle/openApi.yaml b/backend/lib-four-eyes-principle/openApi.yaml
deleted file mode 100644
index 542b048e7..000000000
--- a/backend/lib-four-eyes-principle/openApi.yaml
+++ /dev/null
@@ -1,362 +0,0 @@
-# Copyright 2025 cronn GmbH
-# SPDX-License-Identifier: Apache-2.0
-
-openapi: 3.0.1
-info:
-  description: This is a the generic API for all modules that use the four-eyes principle
-  title: The generic four-eyes principle library API
-  version: "0.1"
-servers:
-- url: http://localhost:8080
-paths:
-  /approval-requests/{approvalRequestId}:
-    get:
-      operationId: getApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      tags:
-      - ApprovalRequest
-  /approval-requests/{approvalRequestId}/decision:
-    put:
-      operationId: decideApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/Decision"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - ApprovalRequest
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-components:
-  schemas:
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    ApprovalRequest:
-      type: object
-      properties:
-        approvalRequestId:
-          type: string
-          format: uuid
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-          format: uuid
-        decidedAt:
-          type: string
-          format: date-time
-        decidedBy:
-          type: string
-          format: uuid
-        decision:
-          $ref: "#/components/schemas/Decision"
-        entity:
-          oneOf:
-          - $ref: "#/components/schemas/TestEntityDto"
-        operation:
-          $ref: "#/components/schemas/Operation"
-        reason:
-          type: string
-        status:
-          $ref: "#/components/schemas/ApprovalRequestStatus"
-      required:
-      - approvalRequestId
-      - createdAt
-      - createdBy
-      - operation
-      - reason
-      - status
-    ApprovalRequestEntity:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    ApprovalRequestStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    Decision:
-      type: string
-      enum:
-      - GRANTED
-      - DENIED
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    Operation:
-      type: string
-      enum:
-      - DELETE
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    TestEntityDto:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ApprovalRequestEntity"
-      - type: object
-        properties:
-          id:
-            type: string
-            format: uuid
-          locked:
-            type: boolean
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
diff --git a/backend/lib-keycloak/src/main/java/de/eshg/lib/keycloak/CitizenTestUser.java b/backend/lib-keycloak/src/main/java/de/eshg/lib/keycloak/CitizenTestUser.java
index 9afc51936..a9be33599 100644
--- a/backend/lib-keycloak/src/main/java/de/eshg/lib/keycloak/CitizenTestUser.java
+++ b/backend/lib-keycloak/src/main/java/de/eshg/lib/keycloak/CitizenTestUser.java
@@ -142,15 +142,13 @@ public enum CitizenTestUser implements KeycloakUser {
       List.of(CitizenPermissionRole.BUND_ID_USER),
       Map.ofEntries(
           Map.entry(BUND_ID_B_PK_2, "OKYUQ-yFYLC1Qhp770Sy8wI8OvzI8348CFovB_Ay_PU"),
-          Map.entry(
-              BUND_ID_POSTAL_ADDRESS,
-              "Isgatan 134 Lägenhet 3, Kallskogen vid Stormyrarna, 95213 Vinterdal"),
+          Map.entry(BUND_ID_POSTAL_ADDRESS, "Isgatan 134124436545623"),
           Map.entry(
               BUND_ID_POSTAL_CODE,
-              "Isgatan 134 Lägenhet 3, Kallskogen vid Stormyrarna, 95213 Vinterdal"),
+              "Isgatan 134124436545623 Lägenhet 3, Kallskogen vid Stormyrarna, 95213 Vinterdal"),
           Map.entry(
               BUND_ID_LOCALITY_NAME,
-              "Isgatan 134 Lägenhet 3, Kallskogen vid Stormyrarna, 95213 Vinterdal"),
+              "Isgatan 134124436545623 Lägenhet 3, Kallskogen vid Stormyrarna, 95213 Vinterdal"),
           Map.entry(BUND_ID_COUNTRY, "SE"),
           Map.entry(BUND_ID_GENDER, "Male"),
           Map.entry(BUND_ID_BIRTH_DATE, "1975-03-23"),
diff --git a/backend/lib-keycloak/src/main/java/de/eshg/lib/keycloak/EmployeeTestUser.java b/backend/lib-keycloak/src/main/java/de/eshg/lib/keycloak/EmployeeTestUser.java
index 131f8228e..c62976212 100644
--- a/backend/lib-keycloak/src/main/java/de/eshg/lib/keycloak/EmployeeTestUser.java
+++ b/backend/lib-keycloak/src/main/java/de/eshg/lib/keycloak/EmployeeTestUser.java
@@ -29,6 +29,16 @@ public enum EmployeeTestUser implements KeycloakUser {
               ModuleLeaderGroup.values(),
               ModuleMemberGroup.values(),
               AdministrativeGroup.values()))),
+  BASE_MODULE_GDPR_USER(
+      "base_dummy",
+      "+49 555 123 420",
+      "password",
+      "Max",
+      "Mustermann",
+      List.of(
+          EmployeePermissionRole.STANDARD_EMPLOYEE,
+          EmployeePermissionRole.BASE_GDPR_PROCEDURE_WRITE),
+      List.of()),
   KEYCLOAK_USER_ADMINISTRATOR_DUMMY(
       "keycloak_system_admin",
       "+49 555 123 463",
@@ -214,7 +224,14 @@ public enum EmployeeTestUser implements KeycloakUser {
       "password",
       "Hans",
       "Hansen",
-      List.of(ModuleMemberGroup.OFFICIAL_MEDICAL_SERVICE));
+      List.of(ModuleMemberGroup.OFFICIAL_MEDICAL_SERVICE)),
+  DENTAL_MODULE_LEADER(
+      "dental_module_leader",
+      "+49 555 456 456",
+      "password",
+      "Thomas",
+      "Müller",
+      List.of(ModuleMemberGroup.DENTAL, ModuleLeaderGroup.DENTAL));
 
   private final String username;
   private final String email;
diff --git a/backend/lib-mutex/build.gradle b/backend/lib-mutex/build.gradle
index 77fa1006b..e93968373 100644
--- a/backend/lib-mutex/build.gradle
+++ b/backend/lib-mutex/build.gradle
@@ -7,8 +7,6 @@ dependencies {
 
     testImplementation project(':test-commons')
     testImplementation testFixtures(project(':business-module-persistence-commons'))
-    testImplementation "org.testcontainers:junit-jupiter"
-    testImplementation 'org.testcontainers:postgresql'
 
     testRuntimeOnly 'org.postgresql:postgresql'
 }
diff --git a/backend/lib-mutex/gradle.lockfile b/backend/lib-mutex/gradle.lockfile
index b44e8e850..50cfd1c5c 100644
--- a/backend/lib-mutex/gradle.lockfile
+++ b/backend/lib-mutex/gradle.lockfile
@@ -187,10 +187,9 @@ org.springframework:spring-test:6.2.1=testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-tx:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-web:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-webmvc:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-org.testcontainers:database-commons:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:jdbc:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:junit-jupiter:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:postgresql:1.20.4=testCompileClasspath,testRuntimeClasspath
+org.testcontainers:database-commons:1.20.4=testRuntimeClasspath
+org.testcontainers:jdbc:1.20.4=testRuntimeClasspath
+org.testcontainers:postgresql:1.20.4=testRuntimeClasspath
 org.testcontainers:testcontainers:1.20.4=testCompileClasspath,testRuntimeClasspath
 org.xmlunit:xmlunit-core:2.10.0=testCompileClasspath,testRuntimeClasspath
 org.yaml:snakeyaml:2.3=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
diff --git a/backend/lib-notification/build.gradle b/backend/lib-notification/build.gradle
index b3c3adf7e..813b22deb 100644
--- a/backend/lib-notification/build.gradle
+++ b/backend/lib-notification/build.gradle
@@ -21,8 +21,6 @@ dependencies {
 
     testImplementation testFixtures(project(':business-module-persistence-commons'))
     testImplementation project(':rest-service-commons')
-    testImplementation "org.testcontainers:junit-jupiter"
-    testImplementation 'org.testcontainers:postgresql'
 
     testRuntimeOnly 'org.postgresql:postgresql'
     testRuntimeOnly 'com.h2database:h2'
diff --git a/backend/lib-notification/gradle.lockfile b/backend/lib-notification/gradle.lockfile
index 287448163..9b313d57a 100644
--- a/backend/lib-notification/gradle.lockfile
+++ b/backend/lib-notification/gradle.lockfile
@@ -189,10 +189,9 @@ org.springframework:spring-test:6.2.1=testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-tx:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-web:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-webmvc:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-org.testcontainers:database-commons:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:jdbc:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:junit-jupiter:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:postgresql:1.20.4=testCompileClasspath,testRuntimeClasspath
+org.testcontainers:database-commons:1.20.4=testRuntimeClasspath
+org.testcontainers:jdbc:1.20.4=testRuntimeClasspath
+org.testcontainers:postgresql:1.20.4=testRuntimeClasspath
 org.testcontainers:testcontainers:1.20.4=testCompileClasspath,testRuntimeClasspath
 org.xmlunit:xmlunit-core:2.10.0=testCompileClasspath,testRuntimeClasspath
 org.yaml:snakeyaml:2.3=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
diff --git a/backend/lib-notification/openApi.json b/backend/lib-notification/openApi.json
new file mode 100644
index 000000000..2321bc93b
--- /dev/null
+++ b/backend/lib-notification/openApi.json
@@ -0,0 +1,327 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is a the generic API for all business modules",
+    "title" : "The generic notification library API for business modules",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8080"
+  } ],
+  "paths" : {
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/backend/lib-notification/openApi.yaml b/backend/lib-notification/openApi.yaml
deleted file mode 100644
index 71561744a..000000000
--- a/backend/lib-notification/openApi.yaml
+++ /dev/null
@@ -1,252 +0,0 @@
-# Copyright 2025 cronn GmbH
-# SPDX-License-Identifier: Apache-2.0
-
-openapi: 3.0.1
-info:
-  description: This is a the generic API for all business modules
-  title: The generic notification library API for business modules
-  version: "0.1"
-servers:
-- url: http://localhost:8080
-paths:
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-components:
-  schemas:
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
diff --git a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/api/GdprValidationTaskApi.java b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/api/GdprValidationTaskApi.java
index 31b4f6354..5753ce547 100644
--- a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/api/GdprValidationTaskApi.java
+++ b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/api/GdprValidationTaskApi.java
@@ -13,6 +13,7 @@ import de.eshg.lib.procedure.model.gdpr.GetAllValidationTasksResponse;
 import de.eshg.lib.procedure.model.gdpr.GetGdprNotificationBannerResponse;
 import de.eshg.lib.procedure.model.gdpr.GetGdprValidationTaskDetailsResponse;
 import de.eshg.lib.procedure.model.gdpr.GetGdprValidationTaskResponse;
+import de.eshg.rest.service.security.config.BaseUrls.ProcedureLibrary;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.responses.ApiResponse;
@@ -30,30 +31,28 @@ import org.springframework.web.service.annotation.PostExchange;
 
 @HttpExchange(GdprValidationTaskApi.BASE_URL)
 public interface GdprValidationTaskApi {
-  String BASE_URL = "/gdpr-validation-tasks";
-  String NOTIFICATION_BANNER_URL_SUFFIX = "/notification-banner";
-  String VALIDATION_TASK_URL_SUFFIX = "/{gdprProcedureId}";
-  String BUSINESS_PROCEDURES_URL_SUFFIX = VALIDATION_TASK_URL_SUFFIX + "/business-procedures";
-  String BUSINESS_PROCEDURE_URL_SUFFIX =
-      VALIDATION_TASK_URL_SUFFIX + "/business-procedures/{businessProcedureId}";
-  String DOWNLOAD_PACKAGE_URL_SUFFIX =
-      VALIDATION_TASK_URL_SUFFIX + "/business-procedures/{businessProcedureId}/downloadPackage";
-  String GET_DOWNLOAD_PACKAGES_INFO_URL_SUFFIX = VALIDATION_TASK_URL_SUFFIX + "/download-packages";
-  String GET_DOWNLOAD_PACKAGE_URL_SUFFIX =
-      VALIDATION_TASK_URL_SUFFIX + "/download-packages/{downloadId}";
-  String CLOSE_PROCEDURE_URL_SUFFIX = "/{gdprProcedureId}/close";
+  String BASE_URL = ProcedureLibrary.GDPR_VALIDATION_TASK_API;
+  String NOTIFICATION_BANNER = ProcedureLibrary.Gdpr.NOTIFICATION_BANNER;
+  String BY_GDPR_ID = ProcedureLibrary.Gdpr.BY_GDPR_ID;
+  String BUSINESS_PROCEDURES = ProcedureLibrary.Gdpr.BUSINESS_PROCEDURES;
+  String BUSINESS_PROCEDURE = ProcedureLibrary.Gdpr.BUSINESS_PROCEDURE;
+  String BUSINESS_PROCEDURE_DOWNLOAD_PACKAGE =
+      ProcedureLibrary.Gdpr.BUSINESS_PROCEDURE_DOWNLOAD_PACKAGE;
+  String DOWNLOAD_PACKAGES_INFO = ProcedureLibrary.Gdpr.DOWNLOAD_PACKAGES_INFO;
+  String DOWNLOAD_PACKAGE = ProcedureLibrary.Gdpr.DOWNLOAD_PACKAGE;
+  String CLOSE_PROCEDURE = ProcedureLibrary.Gdpr.CLOSE_PROCEDURE;
 
   @PostExchange
   @ApiResponse(responseCode = "200", description = "Add a GDPR validation task")
   @Operation(summary = "Add a GDPR validation task")
   void addGdprValidationTask(@RequestBody @Valid AddGdprValidationTaskRequest request);
 
-  @PostExchange(CLOSE_PROCEDURE_URL_SUFFIX)
+  @PostExchange(CLOSE_PROCEDURE)
   @ApiResponse(responseCode = "200", description = "Close a GDPR validation task")
   @Operation(summary = "Close a GDPR validation task")
   void closeGdprValidationTask(@PathVariable("gdprProcedureId") UUID gdprProcedureId);
 
-  @PostExchange(DOWNLOAD_PACKAGE_URL_SUFFIX)
+  @PostExchange(BUSINESS_PROCEDURE_DOWNLOAD_PACKAGE)
   @ApiResponse(responseCode = "200")
   @Operation(
       summary =
@@ -62,25 +61,25 @@ public interface GdprValidationTaskApi {
       @PathVariable("gdprProcedureId") UUID gdprProcedureId,
       @PathVariable("businessProcedureId") UUID businessProcedureId);
 
-  @GetExchange(NOTIFICATION_BANNER_URL_SUFFIX)
+  @GetExchange(NOTIFICATION_BANNER)
   @ApiResponse(responseCode = "200")
   @Operation(summary = "Get data for GDPR notification banner")
   GetGdprNotificationBannerResponse getGdprNotificationBanner();
 
-  @GetExchange(VALIDATION_TASK_URL_SUFFIX)
+  @GetExchange(BY_GDPR_ID)
   @ApiResponse(responseCode = "200")
   @Operation(summary = "Get Gdpr Validation Task by Gdpr Procedure Id")
   GetGdprValidationTaskResponse getGdprValidationTask(
       @PathVariable(name = "gdprProcedureId") UUID gdprProcedureId);
 
-  @GetExchange(BUSINESS_PROCEDURES_URL_SUFFIX)
+  @GetExchange(BUSINESS_PROCEDURES)
   @ApiResponse(responseCode = "200")
   @Operation(summary = "Get a GDPR validation task by id")
   GetGdprValidationTaskDetailsResponse getGdprValidationTaskDetails(
       @Parameter(description = "The Id of the GDPR procedure.") @PathVariable("gdprProcedureId")
           UUID gdprProcedureId);
 
-  @DeleteExchange(BUSINESS_PROCEDURE_URL_SUFFIX)
+  @DeleteExchange(BUSINESS_PROCEDURE)
   @ApiResponse(responseCode = "200")
   @Operation(
       summary =
@@ -89,13 +88,13 @@ public interface GdprValidationTaskApi {
       @PathVariable("gdprProcedureId") UUID gdprProcedureId,
       @PathVariable("businessProcedureId") UUID businessProcedureId);
 
-  @GetExchange(GET_DOWNLOAD_PACKAGES_INFO_URL_SUFFIX)
+  @GetExchange(DOWNLOAD_PACKAGES_INFO)
   @ApiResponse(responseCode = "200")
   @Operation(summary = "Get approved Gdpr Download Packages by Gdpr Procedure Id")
   GetGdprDownloadPackagesInfoResponse getGdprDownloadPackagesInfo(
       @PathVariable(name = "gdprProcedureId") UUID gdprProcedureId);
 
-  @GetExchange(GET_DOWNLOAD_PACKAGE_URL_SUFFIX)
+  @GetExchange(DOWNLOAD_PACKAGE)
   @ApiResponse(responseCode = "200")
   @Operation(summary = "Get Gdpr Download Package by the gdprProcedureId and its downloadId")
   ResponseEntity<Resource> getGdprDownloadPackage(
@@ -108,7 +107,7 @@ public interface GdprValidationTaskApi {
   GetAllValidationTasksResponse getAllGdprValidationTasks(
       @InlineParameterObject @ParameterObject @Valid GdprValidationTaskFilterParameters parameters);
 
-  @DeleteExchange(VALIDATION_TASK_URL_SUFFIX)
+  @DeleteExchange(BY_GDPR_ID)
   @ApiResponse(responseCode = "200")
   @Operation(
       summary =
diff --git a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/AbstractFileReferenceDto.java b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/AbstractFileReferenceDto.java
index 96c8f0785..f21da1a2b 100644
--- a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/AbstractFileReferenceDto.java
+++ b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/AbstractFileReferenceDto.java
@@ -6,13 +6,14 @@
 package de.eshg.lib.procedure.model;
 
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import de.eshg.model.HasResolvableUserIds;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotNull;
 import java.util.UUID;
 
 @Schema(name = AbstractFileReferenceDto.SCHEMA_NAME)
 @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "@type")
-public abstract sealed class AbstractFileReferenceDto
+public abstract sealed class AbstractFileReferenceDto implements HasResolvableUserIds
     permits AbstractFileDto, GenericFileReferenceDto {
 
   public static final String SCHEMA_NAME = "AbstractFileReference";
diff --git a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/GenericFileReferenceDto.java b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/GenericFileReferenceDto.java
index 7368f8321..557e0ce87 100644
--- a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/GenericFileReferenceDto.java
+++ b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/GenericFileReferenceDto.java
@@ -8,6 +8,7 @@ package de.eshg.lib.procedure.model;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 import com.fasterxml.jackson.annotation.JsonTypeName;
 import io.swagger.v3.oas.annotations.media.Schema;
+import java.util.Set;
 import java.util.UUID;
 
 @Schema(name = GenericFileReferenceDto.SCHEMA_NAME)
@@ -22,4 +23,9 @@ public final class GenericFileReferenceDto extends AbstractFileReferenceDto {
     setDeleted(deleted);
     setDeletable(deletable);
   }
+
+  @Override
+  public Set<UUID> getResolvableUserIds() {
+    return Set.of();
+  }
 }
diff --git a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/GetProgressEntriesResponse.java b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/GetProgressEntriesResponse.java
index 7559503e4..43b3c73d0 100644
--- a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/GetProgressEntriesResponse.java
+++ b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/GetProgressEntriesResponse.java
@@ -5,15 +5,19 @@
 
 package de.eshg.lib.procedure.model;
 
+import de.eshg.base.user.api.UserDto;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.Valid;
 import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Size;
 import java.util.List;
+import java.util.Map;
+import java.util.UUID;
 
 public record GetProgressEntriesResponse(
     @NotNull @Schema(description = "Total number of result pages for the given filter criteria")
         int totalPages,
     @NotNull @Schema(description = "Total number of result elements for the given filter criteria")
         long totalElements,
-    @Valid @NotNull @Size(max = 200) List<ProgressEntryDto> progressEntries) {}
+    @Valid @NotNull @Size(max = 200) List<ProgressEntryDto> progressEntries,
+    @Valid @NotNull Map<UUID, UserDto> resolvedUsers) {}
diff --git a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/GetProgressEntryResponse.java b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/GetProgressEntryResponse.java
index 5475d43ad..6c92455ed 100644
--- a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/GetProgressEntryResponse.java
+++ b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/GetProgressEntryResponse.java
@@ -5,10 +5,14 @@
 
 package de.eshg.lib.procedure.model;
 
+import de.eshg.base.user.api.UserDto;
 import jakarta.validation.Valid;
 import jakarta.validation.constraints.NotNull;
 import java.util.List;
+import java.util.Map;
+import java.util.UUID;
 
 public record GetProgressEntryResponse(
     @NotNull @Valid ProgressEntryDto progressEntry,
-    @NotNull @Valid List<KeyDocumentAwareProgressEntryDto> relatedKeyDocumentProgressEntries) {}
+    @NotNull @Valid List<KeyDocumentAwareProgressEntryDto> relatedKeyDocumentProgressEntries,
+    @NotNull @Valid Map<UUID, UserDto> resolvedUsers) {}
diff --git a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/KeyDocumentAwareProgressEntryDto.java b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/KeyDocumentAwareProgressEntryDto.java
index 040cbee33..fedb3524b 100644
--- a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/KeyDocumentAwareProgressEntryDto.java
+++ b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/KeyDocumentAwareProgressEntryDto.java
@@ -6,11 +6,12 @@
 package de.eshg.lib.procedure.model;
 
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import de.eshg.model.HasResolvableUserIds;
 import io.swagger.v3.oas.annotations.media.Schema;
 
 @Schema(name = "KeyDocumentAwareProgressEntry")
 @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "@type")
-public sealed interface KeyDocumentAwareProgressEntryDto
+public sealed interface KeyDocumentAwareProgressEntryDto extends HasResolvableUserIds
     permits ManualProgressEntryDto, SystemProgressEntryDto {
 
   String getKeyDocumentType();
diff --git a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/ManualProgressEntryDto.java b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/ManualProgressEntryDto.java
index 775bb83a4..5ea71af07 100644
--- a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/ManualProgressEntryDto.java
+++ b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/ManualProgressEntryDto.java
@@ -6,10 +6,10 @@
 package de.eshg.lib.procedure.model;
 
 import com.fasterxml.jackson.annotation.JsonTypeName;
-import de.cronn.commons.lang.SetUtils;
 import de.eshg.lib.foureyes.model.ApprovalRequestEntityDto;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotNull;
+import java.util.LinkedHashSet;
 import java.util.Set;
 import java.util.UUID;
 
@@ -26,8 +26,6 @@ public final class ManualProgressEntryDto extends ProgressEntryDto
   @NotNull private boolean locked;
 
   @NotNull private UUID createdBy;
-  private String createdByUserFirstName;
-  private String createdByUserLastName;
 
   public ManualProgressEntryTypeDto getManualProgressEntryType() {
     return manualProgressEntryType;
@@ -79,39 +77,10 @@ public final class ManualProgressEntryDto extends ProgressEntryDto
     this.locked = locked;
   }
 
-  @Override
-  public UUID getRelatedUserId() {
-    return getCreatedBy();
-  }
-
-  @Override
-  public void setRelatedUserFirstName(String relatedUserFirstName) {
-    setCreatedByUserFirstName(relatedUserFirstName);
-  }
-
-  @Override
-  public void setRelatedUserLastName(String relatedUserLastName) {
-    setCreatedByUserLastName(relatedUserLastName);
-  }
-
-  public String getCreatedByUserFirstName() {
-    return createdByUserFirstName;
-  }
-
-  public void setCreatedByUserFirstName(String createdByUserFirstName) {
-    this.createdByUserFirstName = createdByUserFirstName;
-  }
-
-  public String getCreatedByUserLastName() {
-    return createdByUserLastName;
-  }
-
-  public void setCreatedByUserLastName(String createdByUserLastName) {
-    this.createdByUserLastName = createdByUserLastName;
-  }
-
   @Override
   public Set<UUID> getResolvableUserIds() {
-    return SetUtils.orderedSet(getRelatedUserId());
+    LinkedHashSet<UUID> userIds = new LinkedHashSet<>(super.getResolvableUserIds());
+    userIds.add(getCreatedBy());
+    return userIds;
   }
 }
diff --git a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/ProcessedInboxProgressEntryDto.java b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/ProcessedInboxProgressEntryDto.java
index c7ce3d2ae..5aa9f8357 100644
--- a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/ProcessedInboxProgressEntryDto.java
+++ b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/ProcessedInboxProgressEntryDto.java
@@ -8,6 +8,8 @@ package de.eshg.lib.procedure.model;
 import com.fasterxml.jackson.annotation.JsonTypeName;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotNull;
+import java.util.LinkedHashSet;
+import java.util.Set;
 import java.util.UUID;
 
 @Schema(name = ProcessedInboxProgressEntryDto.SCHEMA_NAME)
@@ -21,8 +23,6 @@ public final class ProcessedInboxProgressEntryDto extends ProgressEntryDto {
   private String messageText;
 
   @NotNull private UUID createdBy;
-  private String createdByUserFirstName;
-  private String createdByUserLastName;
 
   public UUID getInboxProcedureId() {
     return inboxProcedureId;
@@ -65,33 +65,9 @@ public final class ProcessedInboxProgressEntryDto extends ProgressEntryDto {
   }
 
   @Override
-  public UUID getRelatedUserId() {
-    return getCreatedBy();
-  }
-
-  @Override
-  public void setRelatedUserFirstName(String relatedUserFirstName) {
-    setCreatedByUserFirstName(relatedUserFirstName);
-  }
-
-  @Override
-  public void setRelatedUserLastName(String relatedUserLastName) {
-    setCreatedByUserLastName(relatedUserLastName);
-  }
-
-  public String getCreatedByUserFirstName() {
-    return createdByUserFirstName;
-  }
-
-  public void setCreatedByUserFirstName(String createdByUserFirstName) {
-    this.createdByUserFirstName = createdByUserFirstName;
-  }
-
-  public String getCreatedByUserLastName() {
-    return createdByUserLastName;
-  }
-
-  public void setCreatedByUserLastName(String createdByUserLastName) {
-    this.createdByUserLastName = createdByUserLastName;
+  public Set<UUID> getResolvableUserIds() {
+    LinkedHashSet<UUID> userIds = new LinkedHashSet<>(super.getResolvableUserIds());
+    userIds.add(getCreatedBy());
+    return userIds;
   }
 }
diff --git a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/ProgressEntryDto.java b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/ProgressEntryDto.java
index 02e705e60..6f3a42d6a 100644
--- a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/ProgressEntryDto.java
+++ b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/ProgressEntryDto.java
@@ -5,17 +5,20 @@
 
 package de.eshg.lib.procedure.model;
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import de.eshg.model.HasResolvableUserIds;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.Valid;
 import jakarta.validation.constraints.NotNull;
 import java.time.Instant;
+import java.util.Collections;
+import java.util.Optional;
+import java.util.Set;
 import java.util.UUID;
 
 @Schema(name = "ProgressEntry")
 @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "@type")
-public abstract sealed class ProgressEntryDto
+public abstract sealed class ProgressEntryDto implements HasResolvableUserIds
     permits ManualProgressEntryDto, ProcessedInboxProgressEntryDto, SystemProgressEntryDto {
   @NotNull private UUID progressEntryId;
   @NotNull private Instant createdAt;
@@ -54,12 +57,10 @@ public abstract sealed class ProgressEntryDto
     this.fileReference = fileReference;
   }
 
-  @JsonIgnore
-  public abstract UUID getRelatedUserId();
-
-  @JsonIgnore
-  public abstract void setRelatedUserFirstName(String relatedUserFirstName);
-
-  @JsonIgnore
-  public abstract void setRelatedUserLastName(String relatedUserLastName);
+  @Override
+  public Set<UUID> getResolvableUserIds() {
+    return Optional.ofNullable(fileReference)
+        .map(HasResolvableUserIds::getResolvableUserIds)
+        .orElseGet(Collections::emptySet);
+  }
 }
diff --git a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/SystemProgressEntryDto.java b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/SystemProgressEntryDto.java
index cdae6fd42..041d08f9e 100644
--- a/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/SystemProgressEntryDto.java
+++ b/backend/lib-procedures-api/src/main/java/de/eshg/lib/procedure/model/SystemProgressEntryDto.java
@@ -8,6 +8,9 @@ package de.eshg.lib.procedure.model;
 import com.fasterxml.jackson.annotation.JsonTypeName;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotNull;
+import java.util.LinkedHashSet;
+import java.util.Optional;
+import java.util.Set;
 import java.util.UUID;
 
 @Schema(name = SystemProgressEntryDto.SCHEMA_NAME)
@@ -21,11 +24,7 @@ public final class SystemProgressEntryDto extends ProgressEntryDto
   private String changeDescription;
   private String keyDocumentType;
   private Integer keyDocumentVersion;
-
   private UUID triggeredBy;
-  private String triggeredByUserFirstName;
-  private String triggeredByUserLastName;
-
   private UUID previousFileStateId;
 
   public String getSystemProgressEntryType() {
@@ -60,37 +59,6 @@ public final class SystemProgressEntryDto extends ProgressEntryDto
     this.changeDescription = changeDescription;
   }
 
-  @Override
-  public UUID getRelatedUserId() {
-    return getTriggeredBy();
-  }
-
-  @Override
-  public void setRelatedUserFirstName(String relatedUserFirstName) {
-    setTriggeredByUserFirstName(relatedUserFirstName);
-  }
-
-  @Override
-  public void setRelatedUserLastName(String relatedUserLastName) {
-    setTriggeredByUserLastName(relatedUserLastName);
-  }
-
-  public String getTriggeredByUserFirstName() {
-    return triggeredByUserFirstName;
-  }
-
-  public void setTriggeredByUserFirstName(String triggeredByUserFirstName) {
-    this.triggeredByUserFirstName = triggeredByUserFirstName;
-  }
-
-  public String getTriggeredByUserLastName() {
-    return triggeredByUserLastName;
-  }
-
-  public void setTriggeredByUserLastName(String triggeredByUserLastName) {
-    this.triggeredByUserLastName = triggeredByUserLastName;
-  }
-
   @Override
   public String getKeyDocumentType() {
     return keyDocumentType;
@@ -116,4 +84,11 @@ public final class SystemProgressEntryDto extends ProgressEntryDto
   public void setPreviousFileStateId(UUID previousFileStateId) {
     this.previousFileStateId = previousFileStateId;
   }
+
+  @Override
+  public Set<UUID> getResolvableUserIds() {
+    LinkedHashSet<UUID> userIds = new LinkedHashSet<>(super.getResolvableUserIds());
+    Optional.ofNullable(triggeredBy).ifPresent(userIds::add);
+    return userIds;
+  }
 }
diff --git a/backend/lib-procedures/build.gradle b/backend/lib-procedures/build.gradle
index dbf5cac71..b0de9ac9f 100644
--- a/backend/lib-procedures/build.gradle
+++ b/backend/lib-procedures/build.gradle
@@ -53,8 +53,6 @@ dependencies {
     testImplementation testFixtures(project(':business-module-persistence-commons'))
     testImplementation testFixtures(project(':base-api'))
     testImplementation 'org.springframework.boot:spring-boot-starter-data-jpa'
-    testImplementation "org.testcontainers:junit-jupiter"
-    testImplementation 'org.testcontainers:postgresql'
     testImplementation 'org.instancio:instancio-core:latest.release'
     testImplementation 'org.apache.commons:commons-text:latest.release'
     testImplementation 'org.apache.commons:commons-collections4:latest.release'
diff --git a/backend/lib-procedures/gradle.lockfile b/backend/lib-procedures/gradle.lockfile
index 6ad1b470a..9fd43ce78 100644
--- a/backend/lib-procedures/gradle.lockfile
+++ b/backend/lib-procedures/gradle.lockfile
@@ -223,10 +223,9 @@ org.springframework:spring-test:6.2.1=testCompileClasspath,testFixturesCompileCl
 org.springframework:spring-tx:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath
 org.springframework:spring-web:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath
 org.springframework:spring-webmvc:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath
-org.testcontainers:database-commons:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:jdbc:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:junit-jupiter:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:postgresql:1.20.4=testCompileClasspath,testRuntimeClasspath
+org.testcontainers:database-commons:1.20.4=testRuntimeClasspath
+org.testcontainers:jdbc:1.20.4=testRuntimeClasspath
+org.testcontainers:postgresql:1.20.4=testRuntimeClasspath
 org.testcontainers:testcontainers:1.20.4=testCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath
 org.verapdf:core-jakarta:1.26.5=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath
 org.verapdf:feature-reporting-jakarta:1.26.5=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath
diff --git a/backend/lib-procedures/openApi.json b/backend/lib-procedures/openApi.json
new file mode 100644
index 000000000..e7d6ad8f4
--- /dev/null
+++ b/backend/lib-procedures/openApi.json
@@ -0,0 +1,4835 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is a the generic API for all business modules",
+    "title" : "The generic procedure library API for business modules",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8080"
+  } ],
+  "paths" : {
+    "/approval-requests/{approvalRequestId}" : {
+      "get" : {
+        "operationId" : "getApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/approval-requests/{approvalRequestId}/decision" : {
+      "put" : {
+        "operationId" : "decideApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/Decision"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/archiving/config" : {
+      "get" : {
+        "operationId" : "getArchivingConfiguration",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetArchivingConfigurationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get archiving configuration",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/procedures" : {
+      "get" : {
+        "operationId" : "getArchivableProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `procedureType` is submitted, only procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `closedAtDay` is set, only procedures are returned which were closed at that date\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "closedAtDay",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `defaultArchivingRelevance` is submitted, only procedures are returned which have one of the submitted default archiving relevances.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "defaultArchivingRelevance",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ArchivingRelevance"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CLOSED_AT`: Sorting by closedAt attribute\n- `PROCEDURE_TYPE`: Sorting by procedureType attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetArchivableProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetArchivableProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetArchivableProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get archivable procedures",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/procedures/bulk-update-archiving-relevance" : {
+      "post" : {
+        "operationId" : "bulkUpdateProceduresArchivingRelevance",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/BulkUpdateProceduresArchivingRelevanceRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/BulkUpdateProceduresArchivingRelevanceResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Bulk update procedures archiving relevance",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/relevant-procedures" : {
+      "get" : {
+        "operationId" : "getRelevantArchivableProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `closedAtDay` is set, only procedures are returned which were closed at that date\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "closedAtDay",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `exported` is true, only procedures are returned which have already been exported.\n- If `exported` is false, only procedures are returned which have not been exported, yet.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "exported",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CLOSED_AT`: Sorting by closedAt attribute\n- `EXPORTED_AT`: Sorting by exportedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetRelevantArchivableProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetRelevantArchivableProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRelevantArchivableProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get relevant archivable procedures",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/relevant-procedures/export" : {
+      "post" : {
+        "operationId" : "exportRelevantProcedures",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ExportArchivingRelevantProceduresRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/files/{fileId}" : {
+      "delete" : {
+        "operationId" : "deleteFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Soft deletes the specified file",
+        "tags" : [ "File" ]
+      },
+      "get" : {
+        "operationId" : "getFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/Image"
+                  }, {
+                    "$ref" : "#/components/schemas/Mail"
+                  }, {
+                    "$ref" : "#/components/schemas/Pdf"
+                  } ]
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Retrieves the meta data of the specified file",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/deletion-request" : {
+      "post" : {
+        "operationId" : "requestFileDeletion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateApprovalRequestRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Request deletion of a file entry",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/download" : {
+      "get" : {
+        "operationId" : "downloadFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/meta-data" : {
+      "put" : {
+        "operationId" : "updateFileMetaData",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "oneOf" : [ {
+                  "$ref" : "#/components/schemas/ImageMetaData"
+                }, {
+                  "$ref" : "#/components/schemas/MailMetaData"
+                }, {
+                  "$ref" : "#/components/schemas/PdfMetaData"
+                } ]
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/Image"
+                  }, {
+                    "$ref" : "#/components/schemas/Mail"
+                  }, {
+                    "$ref" : "#/components/schemas/Pdf"
+                  } ]
+                }
+              }
+            },
+            "description" : "Updated file"
+          }
+        },
+        "summary" : "Updates the meta data of the specified file",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/meta-data/history" : {
+      "get" : {
+        "operationId" : "getMetaDataHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetMetaDataHistoryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "File" ]
+      }
+    },
+    "/gdpr-validation-tasks" : {
+      "get" : {
+        "operationId" : "getAllGdprValidationTasks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "status",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAllValidationTasksResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all GDPR validation tasks",
+        "tags" : [ "GdprValidationTask" ]
+      },
+      "post" : {
+        "operationId" : "addGdprValidationTask",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddGdprValidationTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "Add a GDPR validation task"
+          }
+        },
+        "summary" : "Add a GDPR validation task",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/notification-banner" : {
+      "get" : {
+        "operationId" : "getGdprNotificationBanner",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprNotificationBannerResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get data for GDPR notification banner",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}" : {
+      "delete" : {
+        "operationId" : "deleteGdprValidationTaskAndDownloadPackages",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/DeleteDownloadPackagesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the GDPR validation task with gdprProcedureId and GDPR download packages with ids from request",
+        "tags" : [ "GdprValidationTask" ]
+      },
+      "get" : {
+        "operationId" : "getGdprValidationTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprValidationTaskResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get Gdpr Validation Task by Gdpr Procedure Id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures" : {
+      "get" : {
+        "operationId" : "getGdprValidationTaskDetails",
+        "parameters" : [ {
+          "description" : "The Id of the GDPR procedure.",
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprValidationTaskDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a GDPR validation task by id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}" : {
+      "delete" : {
+        "operationId" : "deleteBusinessProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "businessProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the businessProcedure with businessProcedureId for validationTask with gdprProcedureId with type right of erasure",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}/downloadPackage" : {
+      "post" : {
+        "operationId" : "addDownloadPackage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "businessProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Creates a downloadPackage for validationTask with gdprProcedureId with the data from the procedure with businessProcedureId",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/close" : {
+      "post" : {
+        "operationId" : "closeGdprValidationTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Close a GDPR validation task"
+          }
+        },
+        "summary" : "Close a GDPR validation task",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/download-packages" : {
+      "get" : {
+        "operationId" : "getGdprDownloadPackagesInfo",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprDownloadPackagesInfoResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get approved Gdpr Download Packages by Gdpr Procedure Id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}" : {
+      "get" : {
+        "operationId" : "getGdprDownloadPackage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "downloadId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get Gdpr Download Package by the gdprProcedureId and its downloadId",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/inbox-procedures" : {
+      "get" : {
+        "description" : "Get all inbox procedures with filter, sort, and pagination options\n",
+        "operationId" : "getInboxProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `inboxProcedureType` is submitted, only inbox procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "inboxProcedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If true, inbox procedures which have no type are returned in addition to the types specified by 'inboxProcedureType'.\n- If false or not submitted, inbox procedures which have no type are not returned.\n",
+          "in" : "query",
+          "name" : "includeUntyped",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `inboxProcedureStatus` is submitted, only inbox procedures are returned which have one of the submitted statuses.\n- If not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "inboxProcedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InboxProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CREATED_AT`: Sorting by createdAt attribute\n- `MODIFIED_AT`: Sorting by modifiedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetInboxProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetInboxProceduresSortOrder"
+          }
+        }, {
+          "description" : "Number of the requested page",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        }, {
+          "description" : "Amount of requested inbox procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInboxProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get inbox procedures",
+        "tags" : [ "InboxProcedure" ]
+      },
+      "post" : {
+        "description" : "Creates an inbox procedure with an optional file upload.\n\n       Permitted file formats:\n        - Image formats: jpeg, png\n        - PDF formats: pdf/a\n        - Mail formats: eml",
+        "operationId" : "addInboxProcedure",
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "createInboxProcedureRequest" : {
+                    "$ref" : "#/components/schemas/CreateInboxProcedureRequest"
+                  },
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  }
+                },
+                "required" : [ "createInboxProcedureRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InboxProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add inbox procedure",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/inbox-procedures/{inboxProcedureId}" : {
+      "get" : {
+        "operationId" : "getInboxProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inboxProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInboxProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get inbox procedure with detailed information",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/inbox-procedures/{inboxProcedureId}/inbox-procedure-status" : {
+      "put" : {
+        "operationId" : "updateInboxProcedureStatus",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inboxProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InboxProcedureStatus"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InboxProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update status of inbox procedure",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/procedure-metrics" : {
+      "get" : {
+        "operationId" : "getProcedureMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of procedures"
+          }
+        },
+        "summary" : "Get procedure metrics for procedures created in the given time range",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures" : {
+      "get" : {
+        "description" : "GET operation for retrieving basic information of procedures for the procedure overview.\n",
+        "operationId" : "getProcedures",
+        "parameters" : [ {
+          "description" : "Only procedures are returned where the assigneeId of at least one task equals the `assignedToId`.\nIf not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "assignedToId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureType` is submitted, only procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CREATED_AT`: Sorting by createdAt attribute\n- `MODIFIED_AT`: Sorting by modifiedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/check-file-state-usage" : {
+      "post" : {
+        "operationId" : "checkFileStateUsage",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CheckFileStateUsageRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CheckFileStateUsageResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Identify which file state IDs are still used by active procedures.",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/recent" : {
+      "get" : {
+        "operationId" : "getRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "userId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/recent/self" : {
+      "get" : {
+        "operationId" : "getSelfRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the current users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for the current user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/search" : {
+      "get" : {
+        "operationId" : "searchProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "query",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/searchByPerson" : {
+      "get" : {
+        "operationId" : "searchProceduresByPerson",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "firstName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "lastName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "dateOfBirth",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestGetProcedureByPersonResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}" : {
+      "get" : {
+        "operationId" : "getDetailedProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetDetailedProcedureResponse"
+                }
+              }
+            },
+            "description" : "a single procedure with details"
+          }
+        },
+        "summary" : "Get a single procedure with details",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}/approval-requests" : {
+      "get" : {
+        "operationId" : "getApprovalRequests",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureApprovalRequestsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all approval requests related to this procedure",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}/files" : {
+      "get" : {
+        "description" : "This returns all relevant (highest version per keydocument type and non-deleted) files sorted by descending creation date.\nThat is:\n * if an progress entry has a keydocument type set, then its files are only returned if it also has the highest keydocument version of the respective key document type.\n * if an progress entry does not have a keydocument type, then its files are always returned.\n",
+        "operationId" : "getProcedureFileDetails",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureFileDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get relevant procedure files",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries" : {
+      "get" : {
+        "operationId" : "getProgressEntries",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Filter on progressEntryType",
+          "in" : "query",
+          "name" : "progressEntryType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        }, {
+          "description" : "Filter on child class of progressEntry",
+          "in" : "query",
+          "name" : "progressEntryClass",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProgressEntryClass"
+            }
+          }
+        }, {
+          "description" : "If `initiatedBy` is set with a `userId` then the following is returned:\n* Only progressEntries with `createdBy`=`userId` in case `ManualProgressEntry` or `ProcessedInboxProgressEntry`\n* Only progressEntries with `triggeredBy`=`userId` in case `SystemProgressEntry`\n",
+          "in" : "query",
+          "name" : "initiatedBy",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "description" : "Filter on triggerType.\nIf this is set, only SystemProgressEntries are returned since only SystemProgressEntries have this attribute.\n",
+          "in" : "query",
+          "name" : "triggerType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TriggerType"
+            }
+          }
+        }, {
+          "description" : "Sorting on either modifiedAt or createdAt ",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProgressEntrySortBy"
+          }
+        }, {
+          "description" : "Sorting order. Possible options  \"ASC\" for ascending and \"DESC\" for descending.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProgressEntrySortOrder"
+          }
+        }, {
+          "description" : "Maximum number of elements to return",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Index of page to be returned",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProgressEntriesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get list of procedure's progress entries",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "post" : {
+        "description" : "Creates a manual progress entry with an optional file upload.\n\n       Permitted file formats:\n        - Image formats: jpeg, png\n        - PDF formats: pdf/a\n        - Mail formats: eml",
+        "operationId" : "addProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "createManualProgressEntryRequest" : {
+                    "$ref" : "#/components/schemas/CreateManualProgressEntryRequest"
+                  },
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  }
+                },
+                "required" : [ "createManualProgressEntryRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ManualProgressEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}" : {
+      "delete" : {
+        "operationId" : "removeProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Remove a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "get" : {
+        "operationId" : "getProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProgressEntryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a progress entry",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "patch" : {
+        "operationId" : "patchProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchManualProgressEntryRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ManualProgressEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modify a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}/deletion-request" : {
+      "post" : {
+        "operationId" : "requestProgressEntryDeletion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateApprovalRequestRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Request deletion of a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}/history" : {
+      "get" : {
+        "operationId" : "getManualProgressEntryHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetManualProgressEntryHistoryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the history of a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/task-metrics" : {
+      "get" : {
+        "operationId" : "getTaskMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTaskMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of a specific procedure type"
+          }
+        },
+        "summary" : "Get tasks metrics for a procedure type of a business module for procedures created in the given time range",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks" : {
+      "get" : {
+        "operationId" : "getTasks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "assigneeId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "assignedById",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "taskTypes",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "taskStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortBy"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortOrder"
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TaskResponse"
+                }
+              }
+            },
+            "description" : "tasks"
+          }
+        },
+        "summary" : "Get tasks",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/dashboard" : {
+      "get" : {
+        "operationId" : "getTasksForDashboard",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TaskResponse"
+                }
+              }
+            },
+            "description" : "tasks"
+          }
+        },
+        "summary" : "Get tasks for the dashboard",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/team-view" : {
+      "get" : {
+        "description" : "Returns all _open_ tasks per module group member.",
+        "operationId" : "getTasksByAssignee",
+        "parameters" : [ {
+          "description" : "If provided, `assignee` must be member of the module group.\nIf not provided, all tasks for all members of the module group are returned.\n",
+          "in" : "query",
+          "name" : "assigneeId",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTaskByUserResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/{taskId}/assignment" : {
+      "put" : {
+        "operationId" : "assignTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "taskId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AssignTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Task"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/{taskId}/self-assignment" : {
+      "put" : {
+        "operationId" : "selfAssignTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "taskId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SelfAssignTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Task"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "AbstractFile" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFileReference"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "createdAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "fileName" : {
+              "type" : "string"
+            },
+            "fileSizeBytes" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "fileType" : {
+              "$ref" : "#/components/schemas/FileType"
+            },
+            "locked" : {
+              "type" : "boolean"
+            },
+            "modifiedAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/ApprovalRequestEntity"
+        } ]
+      },
+      "AbstractFileReference" : {
+        "required" : [ "@type", "deletable", "deleted", "fileId" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "deletable" : {
+            "type" : "boolean"
+          },
+          "deleted" : {
+            "type" : "boolean"
+          },
+          "fileId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "AddGdprValidationTaskRequest" : {
+        "required" : [ "gdprProcedureId", "startedAt", "type" ],
+        "type" : "object",
+        "properties" : {
+          "gdprProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "startedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }
+      },
+      "Address" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ApprovalRequest" : {
+        "required" : [ "approvalRequestId", "createdAt", "createdBy", "operation", "reason", "status" ],
+        "type" : "object",
+        "properties" : {
+          "approvalRequestId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decidedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "decidedBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decision" : {
+            "$ref" : "#/components/schemas/Decision"
+          },
+          "entity" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/ManualProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "operation" : {
+            "$ref" : "#/components/schemas/Operation"
+          },
+          "reason" : {
+            "type" : "string"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ApprovalRequestStatus"
+          }
+        }
+      },
+      "ApprovalRequestEntity" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ApprovalRequestStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "ArchivingDetails" : {
+        "required" : [ "archivingPeriodYears", "archivingRelevance" ],
+        "type" : "object",
+        "properties" : {
+          "archivingPeriodYears" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          }
+        }
+      },
+      "ArchivingRelevance" : {
+        "type" : "string",
+        "enum" : [ "DEFAULT", "RELEVANT", "IRRELEVANT" ]
+      },
+      "ArchivingRelevanceSettings" : {
+        "required" : [ "archivingRelevance", "defaultArchivingRelevance" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "defaultArchivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          }
+        }
+      },
+      "AssignTaskRequest" : {
+        "required" : [ "assignee", "taskVersion" ],
+        "type" : "object",
+        "properties" : {
+          "assignee" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "taskVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "BulkUpdateProceduresArchivingRelevanceRequest" : {
+        "required" : [ "archivingRelevance", "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "BulkUpdateProceduresArchivingRelevanceResponse" : {
+        "required" : [ "archivingRelevance", "failedProcedures", "updatedProcedures" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "failedProcedures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "updatedProcedures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "BusinessModule" : {
+        "type" : "string",
+        "enum" : [ "INSPECTION", "SCHOOL_ENTRY", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY", "DENTAL", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "BusinessProcedureInclusionStatus" : {
+        "type" : "string",
+        "enum" : [ "INCLUDED", "UNDECIDED" ]
+      },
+      "BusinessProcedureWithInclusionStatus" : {
+        "required" : [ "businessProcedure", "inclusionStatus" ],
+        "type" : "object",
+        "properties" : {
+          "businessProcedure" : {
+            "$ref" : "#/components/schemas/Procedure"
+          },
+          "inclusionStatus" : {
+            "$ref" : "#/components/schemas/BusinessProcedureInclusionStatus"
+          }
+        }
+      },
+      "CheckFileStateUsageRequest" : {
+        "required" : [ "fileStatesIds" ],
+        "type" : "object",
+        "properties" : {
+          "fileStatesIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "CheckFileStateUsageResponse" : {
+        "required" : [ "inUse" ],
+        "type" : "object",
+        "properties" : {
+          "inUse" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "ContactDetails" : {
+        "required" : [ "contactType", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "$ref" : "#/components/schemas/InboxProcedureAddress"
+          },
+          "contactType" : {
+            "$ref" : "#/components/schemas/ContactType"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "emailAddress" : {
+            "type" : "string"
+          },
+          "facilityName" : {
+            "type" : "string"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "lastName" : {
+            "type" : "string"
+          },
+          "phoneNumber" : {
+            "type" : "string"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "$ref" : "#/components/schemas/Title"
+          }
+        }
+      },
+      "ContactType" : {
+        "type" : "string",
+        "enum" : [ "PRIVATE_PERSON", "FACILITY" ]
+      },
+      "CountryCode" : {
+        "type" : "string",
+        "description" : "List of country codes in ISO 3166-1 alpha-2 format. With custom extensions for stateless, non-standard countries, and unknown countries.",
+        "enum" : [ "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW", "XK", "UNKNOWN", "STATELESS" ]
+      },
+      "CreateApprovalRequestRequest" : {
+        "required" : [ "reason" ],
+        "type" : "object",
+        "properties" : {
+          "reason" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateInboxProcedureRequest" : {
+        "required" : [ "contactDetails", "inboxProgressEntry" ],
+        "type" : "object",
+        "properties" : {
+          "contactDetails" : {
+            "$ref" : "#/components/schemas/ContactDetails"
+          },
+          "inboxProcedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "inboxProgressEntry" : {
+            "$ref" : "#/components/schemas/CreateInboxProgressEntry"
+          }
+        }
+      },
+      "CreateInboxProgressEntry" : {
+        "required" : [ "inboxProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProgressEntryType" : {
+            "$ref" : "#/components/schemas/InboxProgressEntryType"
+          },
+          "messageText" : {
+            "type" : "string"
+          },
+          "subject" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateManualProgressEntryRequest" : {
+        "required" : [ "manualProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "keyDocumentType" : {
+            "type" : "string"
+          },
+          "manualProgressEntryType" : {
+            "$ref" : "#/components/schemas/ManualProgressEntryType"
+          },
+          "note" : {
+            "type" : "string"
+          }
+        }
+      },
+      "DataOrigin" : {
+        "type" : "string",
+        "description" : "A list of possible origins of Persons and Facility in the Central Files. EDIT will only be set automatically on changes. EXTERNAL is for entries that come, e.g., from the citizen portal. IMPORT is reserved for automatic imports. MANUAL shall be set for every creation or connection done by an employee.",
+        "enum" : [ "MANUAL", "EXTERNAL", "IMPORT", "EDIT" ]
+      },
+      "Decision" : {
+        "type" : "string",
+        "enum" : [ "GRANTED", "DENIED" ]
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "DeleteDownloadPackagesRequest" : {
+        "required" : [ "downloadIds" ],
+        "type" : "object",
+        "properties" : {
+          "downloadIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "DetailedFacility" : {
+        "required" : [ "facilityFileState", "facilityType" ],
+        "type" : "object",
+        "properties" : {
+          "facilityFileState" : {
+            "$ref" : "#/components/schemas/GetFacilityFileStateResponse"
+          },
+          "facilityType" : {
+            "$ref" : "#/components/schemas/FacilityType"
+          }
+        }
+      },
+      "DetailedPerson" : {
+        "required" : [ "person", "personType" ],
+        "type" : "object",
+        "properties" : {
+          "person" : {
+            "$ref" : "#/components/schemas/GetPersonFileStateResponse"
+          },
+          "personType" : {
+            "$ref" : "#/components/schemas/PersonType"
+          }
+        }
+      },
+      "DetailedTask" : {
+        "required" : [ "task" ],
+        "type" : "object",
+        "properties" : {
+          "assignedByName" : {
+            "type" : "string"
+          },
+          "assigneeName" : {
+            "type" : "string"
+          },
+          "task" : {
+            "$ref" : "#/components/schemas/Task"
+          }
+        }
+      },
+      "DomesticAddress" : {
+        "required" : [ "city", "country", "postalCode", "street" ],
+        "type" : "object",
+        "description" : "A usual domestic address.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "addressAddition" : {
+              "maxLength" : 100,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "A descriptive addition to the address.",
+              "example" : "2.OG links"
+            },
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "houseNumber" : {
+              "maxLength" : 11,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The house number of the address, including extensions.",
+              "example" : "1a"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "street" : {
+              "maxLength" : 55,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the street of the address, without the house number.",
+              "example" : "Beispielweg"
+            }
+          }
+        } ]
+      },
+      "ExportArchivingRelevantProceduresRequest" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "FacilityContactPerson" : {
+        "required" : [ "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "emailAddress" : {
+            "maxLength" : 254,
+            "minLength" : 6,
+            "type" : "string",
+            "description" : "The email addresses of the Contact Person.",
+            "example" : "mail1@address.de"
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Contact Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Contact Person.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "maxLength" : 23,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The phone number of the Contact Person.",
+            "example" : "+491234567890"
+          },
+          "role" : {
+            "maxLength" : 255,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The role of the Contact Person in the Facility.",
+            "example" : "CEO"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of the Contact Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "FacilityType" : {
+        "type" : "string",
+        "enum" : [ "SCHOOL", "INSPECTION", "DAYCARE", "HOSPITAL", "MEDICAL_PRACTICE", "REFUGEE_ACCOMMODATION", "OTHER" ]
+      },
+      "FileMetaData" : {
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          }
+        }
+      },
+      "FileType" : {
+        "type" : "string",
+        "enum" : [ "JPEG", "PNG", "PDF", "EML" ]
+      },
+      "GdprDownloadPackageInfo" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GdprFacility" : {
+        "required" : [ "address", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "dataTransmitterPseudonymId" : {
+              "type" : "string",
+              "description" : "The 'DatenübermittlerPseudonymId' of the MUK user",
+              "example" : "du-986b2b54ab89cf4ed674ad8c3126b966b54d4872"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Facility.",
+              "example" : "mail@address.de"
+            },
+            "name" : {
+              "maxLength" : 300,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the Facility.",
+              "example" : "123 Example Facility"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The phone number of the Facility.",
+              "example" : "+491234567890"
+            }
+          }
+        } ]
+      },
+      "GdprIdentificationData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "GdprPerson" : {
+        "required" : [ "address", "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "bpk2" : {
+              "type" : "string",
+              "description" : "The bpk2 of the BundId user",
+              "example" : "VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0"
+            },
+            "dateOfBirth" : {
+              "type" : "string",
+              "description" : "The date of birth of the Person.",
+              "format" : "date",
+              "example" : "2000-01-01"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Person.",
+              "example" : "mail@address.de"
+            },
+            "firstName" : {
+              "maxLength" : 80,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The given name(s) of the Person.",
+              "example" : "John"
+            },
+            "lastName" : {
+              "maxLength" : 120,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The last name of the Person.",
+              "example" : "Doe"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 0,
+              "type" : "string",
+              "description" : "The phone number of the Person.",
+              "example" : "+491234567890"
+            },
+            "salutation" : {
+              "$ref" : "#/components/schemas/Salutation"
+            },
+            "title" : {
+              "maxLength" : 119,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The academic title of the Person.",
+              "example" : "Prof. Dr."
+            }
+          }
+        } ]
+      },
+      "GdprProcedureType" : {
+        "type" : "string",
+        "description" : "A list of types of GDPR procedures.",
+        "enum" : [ "RIGHT_OF_ACCESS", "RIGHT_TO_ERASURE" ]
+      },
+      "GdprValidationTask" : {
+        "required" : [ "dueDate", "gdprProcedureId", "identificationData", "status", "type" ],
+        "type" : "object",
+        "properties" : {
+          "dueDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "gdprProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "identificationData" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GdprFacility"
+            }, {
+              "$ref" : "#/components/schemas/GdprPerson"
+            } ]
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }
+      },
+      "GdprValidationTaskSortKey" : {
+        "type" : "string",
+        "enum" : [ "CREATED_AT" ]
+      },
+      "GdprValidationTaskStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "Gender" : {
+        "type" : "string",
+        "description" : "The list of genders as specified in the German Personenstandsgesetz.",
+        "enum" : [ "NOT_SPECIFIED", "DIVERSE", "FEMALE", "MALE" ]
+      },
+      "GenericFileReference" : {
+        "required" : [ "@type", "deletable", "deleted", "fileId" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFileReference"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "GetAllValidationTasksResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GdprValidationTask"
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetArchivableProceduresResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetArchivableProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CLOSED_AT",
+        "enum" : [ "CLOSED_AT", "PROCEDURE_TYPE" ]
+      },
+      "GetArchivableProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetArchivingConfigurationResponse" : {
+        "required" : [ "archivingDetails", "gracePeriodMonths" ],
+        "type" : "object",
+        "properties" : {
+          "archivingDetails" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/ArchivingDetails"
+            }
+          },
+          "gracePeriodMonths" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetDetailedProcedureResponse" : {
+        "required" : [ "facilities", "persons", "procedure", "tasks" ],
+        "type" : "object",
+        "properties" : {
+          "facilities" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedFacility"
+            }
+          },
+          "persons" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedPerson"
+            }
+          },
+          "procedure" : {
+            "$ref" : "#/components/schemas/Procedure"
+          },
+          "tasks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedTask"
+            }
+          }
+        }
+      },
+      "GetFacilityFileStateResponse" : {
+        "required" : [ "contactPersons", "dataOrigin", "emailAddresses", "id", "name", "phoneNumbers", "referenceVersion" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Facility.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referenceFacility it is connected to.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          }
+        }
+      },
+      "GetGdprDownloadPackagesInfoResponse" : {
+        "required" : [ "downloadPackages" ],
+        "type" : "object",
+        "properties" : {
+          "downloadPackages" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GdprDownloadPackageInfo"
+            }
+          }
+        }
+      },
+      "GetGdprNotificationBannerResponse" : {
+        "required" : [ "openValidationTasksCount" ],
+        "type" : "object",
+        "properties" : {
+          "earliestDueDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "openValidationTasksCount" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetGdprValidationTaskDetailsResponse" : {
+        "required" : [ "proceduresWithStatus", "validationTask" ],
+        "type" : "object",
+        "properties" : {
+          "proceduresWithStatus" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessProcedureWithInclusionStatus"
+            }
+          },
+          "validationTask" : {
+            "$ref" : "#/components/schemas/GdprValidationTask"
+          }
+        }
+      },
+      "GetGdprValidationTaskResponse" : {
+        "required" : [ "status" ],
+        "type" : "object",
+        "properties" : {
+          "status" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          }
+        }
+      },
+      "GetInboxProcedureResponse" : {
+        "required" : [ "inboxProcedure", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProcedure" : {
+            "$ref" : "#/components/schemas/InboxProcedure"
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetInboxProceduresResponse" : {
+        "required" : [ "inboxProcedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProcedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InboxProcedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetInboxProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "CREATED_AT" ]
+      },
+      "GetInboxProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetManualProgressEntryHistoryResponse" : {
+        "type" : "object",
+        "properties" : {
+          "manualProgressEntryHistory" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ManualProgressEntryHistory"
+            }
+          }
+        }
+      },
+      "GetMetaDataHistoryResponse" : {
+        "type" : "object",
+        "properties" : {
+          "metaDataHistory" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ImageMetaDataHistory"
+              }, {
+                "$ref" : "#/components/schemas/MailMetaDataHistory"
+              }, {
+                "$ref" : "#/components/schemas/PdfMetaDataHistory"
+              } ]
+            }
+          }
+        }
+      },
+      "GetPersonFileStateResponse" : {
+        "required" : [ "dataOrigin", "dateOfBirth", "emailAddresses", "firstName", "gender", "id", "lastName", "phoneNumbers", "referenceVersion", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "The date of birth of the Person.",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Person.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Person.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Person.",
+            "example" : "Doe"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name at birth of the Person.",
+            "example" : "Smith"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referencePerson it is connected to. Set to 'null' if unchecked.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Person.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The place of birth (without country) of the Person.",
+            "example" : "Berlin"
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "GetProcedureApprovalRequestsResponse" : {
+        "required" : [ "approvalRequests", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "approvalRequests" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ApprovalRequest"
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetProcedureFileDetailsResponse" : {
+        "required" : [ "fileDetails", "procedureId" ],
+        "type" : "object",
+        "properties" : {
+          "fileDetails" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProgressEntryReferenceFilePair"
+            }
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GetProcedureMetricsResponse" : {
+        "required" : [ "procedureMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "procedureMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureMetric"
+            }
+          }
+        }
+      },
+      "GetProceduresResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "MODIFIED_AT", "CREATED_AT" ]
+      },
+      "GetProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetProgressEntriesResponse" : {
+        "required" : [ "progressEntries", "resolvedUsers", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "progressEntries" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ManualProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/ProcessedInboxProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/SystemProgressEntry"
+              } ]
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetProgressEntryResponse" : {
+        "required" : [ "progressEntry", "relatedKeyDocumentProgressEntries", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "progressEntry" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/ManualProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/ProcessedInboxProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/SystemProgressEntry"
+            } ]
+          },
+          "relatedKeyDocumentProgressEntries" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ManualProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/SystemProgressEntry"
+              } ]
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetRecentProceduresResponse" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          }
+        }
+      },
+      "GetReferencePersonResponse" : {
+        "required" : [ "dataOrigin", "dateOfBirth", "emailAddresses", "firstName", "gender", "id", "lastName", "phoneNumbers", "salutation", "version" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "The date of birth of the Person.",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Person.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Person.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Person.",
+            "example" : "Doe"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name at birth of the Person.",
+            "example" : "Smith"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Person.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The place of birth (without country) of the Person.",
+            "example" : "Berlin"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a Person.",
+            "example" : "Prof. Dr."
+          },
+          "version" : {
+            "type" : "integer",
+            "description" : "Version of the entity. Each time the entity is changed, it is incremented by one.",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetRelevantArchivableProceduresResponse" : {
+        "required" : [ "fileSizeBytes", "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "fileSizeBytes" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetRelevantArchivableProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CLOSED_AT",
+        "enum" : [ "CLOSED_AT", "EXPORTED_AT" ]
+      },
+      "GetRelevantArchivableProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetTaskByUserResponse" : {
+        "required" : [ "resolvedUsers", "tasksByUser" ],
+        "type" : "object",
+        "properties" : {
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "tasksByUser" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/Task"
+              }
+            }
+          }
+        }
+      },
+      "GetTaskMetricsResponse" : {
+        "required" : [ "businessModule", "closedProcedureCount", "fastestProcedures", "procedureType", "slowestProcedures", "taskMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedProcedureCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "fastestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "slowestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "taskMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskMetric"
+            }
+          }
+        }
+      },
+      "GetTasksSortBy" : {
+        "type" : "string",
+        "enum" : [ "PRIORITY", "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "GetTasksSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "Image" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/ImageMetaData"
+            }
+          }
+        } ]
+      },
+      "ImageMetaData" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "ImageMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "imageMetaData" : {
+              "$ref" : "#/components/schemas/ImageMetaData"
+            }
+          }
+        } ]
+      },
+      "InboxProcedure" : {
+        "required" : [ "contactDetails", "createdAt", "createdBy", "inboxProcedureId", "inboxProcedureStatus", "inboxProgressEntry" ],
+        "type" : "object",
+        "properties" : {
+          "closedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "contactDetails" : {
+            "$ref" : "#/components/schemas/ContactDetails"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProcedureStatus" : {
+            "$ref" : "#/components/schemas/InboxProcedureStatus"
+          },
+          "inboxProcedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "inboxProgressEntry" : {
+            "$ref" : "#/components/schemas/InboxProgressEntry"
+          }
+        }
+      },
+      "InboxProcedureAddress" : {
+        "type" : "object",
+        "properties" : {
+          "addressAddition" : {
+            "type" : "string"
+          },
+          "city" : {
+            "type" : "string"
+          },
+          "country" : {
+            "type" : "string"
+          },
+          "houseNumber" : {
+            "type" : "string"
+          },
+          "postalCode" : {
+            "type" : "string"
+          },
+          "postboxNumber" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "street" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InboxProcedureStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "InboxProgressEntry" : {
+        "required" : [ "inboxProgressEntryId", "inboxProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "fileReference" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GenericFileReference"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "inboxProgressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProgressEntryType" : {
+            "$ref" : "#/components/schemas/InboxProgressEntryType"
+          },
+          "messageText" : {
+            "type" : "string"
+          },
+          "subject" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InboxProgressEntryType" : {
+        "type" : "string",
+        "enum" : [ "LETTER", "PHONE_CALL", "EMAIL" ]
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "KeyDocumentAwareProgressEntry" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "keyDocumentType" : {
+            "type" : "string"
+          },
+          "keyDocumentVersion" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "Mail" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt", "removedInvalidAttachments" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/MailMetaData"
+            },
+            "removedInvalidAttachments" : {
+              "type" : "integer",
+              "format" : "int32"
+            }
+          }
+        } ]
+      },
+      "MailMetaData" : {
+        "required" : [ "mailFrom", "mailTo", "messageText", "sentDate", "subject" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "mailFrom" : {
+              "type" : "string"
+            },
+            "mailTo" : {
+              "type" : "string"
+            },
+            "messageText" : {
+              "type" : "string"
+            },
+            "sentDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "subject" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "MailMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "mailMetaData" : {
+              "$ref" : "#/components/schemas/MailMetaData"
+            }
+          }
+        } ]
+      },
+      "ManualProgressEntry" : {
+        "required" : [ "createdAt", "createdBy", "locked", "manualProgressEntryType", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "keyDocumentType" : {
+              "type" : "string"
+            },
+            "keyDocumentVersion" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "locked" : {
+              "type" : "boolean"
+            },
+            "manualProgressEntryType" : {
+              "$ref" : "#/components/schemas/ManualProgressEntryType"
+            },
+            "note" : {
+              "type" : "string"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/ApprovalRequestEntity"
+        }, {
+          "$ref" : "#/components/schemas/KeyDocumentAwareProgressEntry"
+        } ]
+      },
+      "ManualProgressEntryHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "properties" : {
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "manualProgressEntry" : {
+            "$ref" : "#/components/schemas/ManualProgressEntry"
+          }
+        }
+      },
+      "ManualProgressEntryType" : {
+        "type" : "string",
+        "enum" : [ "LETTER", "PHONE_CALL", "NOTE", "EMAIL", "IMAGE", "DOCUMENT" ]
+      },
+      "MetaData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "description" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "MetaDataHistory" : {
+        "required" : [ "@type", "changedAt" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "Operation" : {
+        "type" : "string",
+        "enum" : [ "DELETE" ]
+      },
+      "PatchManualProgressEntryRequest" : {
+        "type" : "object",
+        "properties" : {
+          "manualProgressEntryType" : {
+            "$ref" : "#/components/schemas/ManualProgressEntryType"
+          },
+          "note" : {
+            "type" : "string",
+            "nullable" : true
+          }
+        }
+      },
+      "Pdf" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/PdfMetaData"
+            }
+          }
+        } ]
+      },
+      "PdfMetaData" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "PdfMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "pdfMetaData" : {
+              "$ref" : "#/components/schemas/PdfMetaData"
+            }
+          }
+        } ]
+      },
+      "PersonType" : {
+        "type" : "string",
+        "enum" : [ "PATIENT", "PARENT", "PROFESSIONAL" ]
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "PostboxAddress" : {
+        "required" : [ "city", "country", "postalCode", "postbox" ],
+        "type" : "object",
+        "description" : "An address which is a postbox.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "postbox" : {
+              "maxLength" : 21,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The number (or name) of the postbox.",
+              "example" : "123"
+            }
+          }
+        } ]
+      },
+      "Procedure" : {
+        "required" : [ "archivingRelevanceSettings", "businessModule", "createdAt", "modifiedAt", "procedureId", "procedureStatus", "procedureType", "summary" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevanceSettings" : {
+            "$ref" : "#/components/schemas/ArchivingRelevanceSettings"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "exportedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "procedureStatus" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "pattern" : "[a-zA-Z0-9.].+",
+            "type" : "string"
+          }
+        }
+      },
+      "ProcedureMetric" : {
+        "required" : [ "abortedCount", "businessModule", "closedCount", "inProgressCount", "openOrDraftCount", "procedureType", "totalCount" ],
+        "type" : "object",
+        "properties" : {
+          "abortedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "inProgressCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "openOrDraftCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "totalCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ProcedureStatus" : {
+        "type" : "string",
+        "enum" : [ "DRAFT", "OPEN", "IN_PROGRESS", "CLOSED", "ABORTED" ]
+      },
+      "ProcedureType" : {
+        "type" : "string",
+        "enum" : [ "REGULAR_EXAMINATION", "CAN_CHILD", "ENTRY_LEVEL", "DRAFT_CITIZEN_OFFICE_IMPORT", "DRAFT_SCHOOL_IMPORT", "INSPECTION", "TM_VACCINATION_CONSULTATION", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY_ENTRY", "MEDICAL_REGISTRY_CITIZEN_DRAFT", "MEDICAL_REGISTRY_EMPLOYEE_DRAFT", "DENTAL_CHILD", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "ProcedureWithDuration" : {
+        "required" : [ "createdAt", "id" ],
+        "type" : "object",
+        "properties" : {
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "duration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ProcessedInboxProgressEntry" : {
+        "required" : [ "createdAt", "createdBy", "inboxProcedureId", "inboxProgressEntryType", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "inboxProcedureId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "inboxProgressEntryType" : {
+              "$ref" : "#/components/schemas/InboxProgressEntryType"
+            },
+            "messageText" : {
+              "type" : "string"
+            },
+            "subject" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "ProgressEntry" : {
+        "required" : [ "@type", "createdAt", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "fileReference" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GenericFileReference"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "progressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ProgressEntryClass" : {
+        "type" : "string",
+        "enum" : [ "MANUAL_PROGRESS_ENTRY", "SYSTEM_PROGRESS_ENTRY", "PROCESSED_INBOX_PROGRESS_ENTRY" ]
+      },
+      "ProgressEntryReferenceFilePair" : {
+        "required" : [ "file", "progressEntryId" ],
+        "type" : "object",
+        "properties" : {
+          "file" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "progressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ProgressEntrySortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "ProgressEntrySortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "Salutation" : {
+        "type" : "string",
+        "enum" : [ "NOT_SPECIFIED", "NEUTRAL", "FEMALE", "MALE" ]
+      },
+      "SelfAssignTaskRequest" : {
+        "required" : [ "taskVersion" ],
+        "type" : "object",
+        "properties" : {
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "taskVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "SortDirection" : {
+        "type" : "string",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "SystemProgressEntry" : {
+        "required" : [ "createdAt", "modifiedAt", "progressEntryId", "systemProgressEntryType", "triggerType" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "changeDescription" : {
+              "type" : "string"
+            },
+            "keyDocumentType" : {
+              "type" : "string"
+            },
+            "keyDocumentVersion" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "previousFileStateId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "systemProgressEntryType" : {
+              "type" : "string"
+            },
+            "triggerType" : {
+              "$ref" : "#/components/schemas/TriggerType"
+            },
+            "triggeredBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/KeyDocumentAwareProgressEntry"
+        } ]
+      },
+      "Task" : {
+        "required" : [ "businessModule", "createdAt", "isOverdue", "modifiedAt", "procedureId", "summary", "taskId", "taskStatus", "taskType", "version" ],
+        "type" : "object",
+        "properties" : {
+          "assignedById" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "assigneeId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "isOverdue" : {
+            "type" : "boolean"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "taskId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "taskStatus" : {
+            "$ref" : "#/components/schemas/TaskStatus"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "TaskMetric" : {
+        "required" : [ "moreThanTwoOccurrencesCount", "noOccurrencesCount", "oneOccurrenceCount", "taskType", "twoOccurrencesCount" ],
+        "type" : "object",
+        "properties" : {
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "moreThanTwoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "noOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "oneOccurrenceCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "twoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TaskResponse" : {
+        "required" : [ "count", "tasks" ],
+        "type" : "object",
+        "properties" : {
+          "count" : {
+            "type" : "integer",
+            "description" : "total number of tasks for this query",
+            "format" : "int64"
+          },
+          "tasks" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Task"
+            }
+          }
+        }
+      },
+      "TaskStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "TaskType" : {
+        "type" : "string",
+        "enum" : [ "BOOK_APPOINTMENT", "PERFORM_SCHOOL_ENTRY_EXAMINATION", "INSPECTION_PLANNING", "INSPECTION_EXECUTION", "INSPECTION_REPORT", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "TestGetProcedureByPersonResponse" : {
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/TestProcedureDto"
+              }
+            }
+          },
+          "resolvedPersons" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/GetReferencePersonResponse"
+            }
+          }
+        }
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      },
+      "TestProcedureDto" : {
+        "type" : "object",
+        "properties" : {
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "procedureStatus" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          }
+        }
+      },
+      "Title" : {
+        "type" : "string",
+        "enum" : [ "DR", "PROF", "PROF_DR" ]
+      },
+      "TriggerType" : {
+        "type" : "string",
+        "enum" : [ "SYSTEM_AUTOMATIC", "EMPLOYEE", "CITIZEN" ]
+      },
+      "User" : {
+        "required" : [ "enabled", "firstName", "lastName", "userId", "username" ],
+        "type" : "object",
+        "properties" : {
+          "email" : {
+            "type" : "string",
+            "description" : "The email address of a user.",
+            "example" : "example@mail.de"
+          },
+          "enabled" : {
+            "type" : "boolean",
+            "description" : "True, if the user can login",
+            "example" : false
+          },
+          "externalChatUsername" : {
+            "type" : "string",
+            "description" : "The chat username of the gematik TI-Messenger (matrix chat).",
+            "example" : "@username:server"
+          },
+          "firstName" : {
+            "type" : "string",
+            "description" : "The given name(s) of a user.",
+            "example" : "John"
+          },
+          "lastName" : {
+            "type" : "string",
+            "description" : "The last name of a user.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "type" : "string",
+            "description" : "The phone number of a user.",
+            "example" : "+491234567890"
+          },
+          "userId" : {
+            "type" : "string",
+            "description" : "The Id of the user.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "username" : {
+            "type" : "string",
+            "description" : "The username which is displayed in the application and can be used for the login.",
+            "example" : "testuser"
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/backend/lib-procedures/openApi.yaml b/backend/lib-procedures/openApi.yaml
deleted file mode 100644
index 4effdff53..000000000
--- a/backend/lib-procedures/openApi.yaml
+++ /dev/null
@@ -1,4228 +0,0 @@
-# Copyright 2025 cronn GmbH
-# SPDX-License-Identifier: Apache-2.0
-
-openapi: 3.0.1
-info:
-  description: This is a the generic API for all business modules
-  title: The generic procedure library API for business modules
-  version: "0.1"
-servers:
-- url: http://localhost:8080
-paths:
-  /approval-requests/{approvalRequestId}:
-    get:
-      operationId: getApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      tags:
-      - ApprovalRequest
-  /approval-requests/{approvalRequestId}/decision:
-    put:
-      operationId: decideApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/Decision"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - ApprovalRequest
-  /archiving/config:
-    get:
-      operationId: getArchivingConfiguration
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetArchivingConfigurationResponse"
-          description: OK
-      summary: Get archiving configuration
-      tags:
-      - Archiving
-  /archiving/procedures:
-    get:
-      operationId: getArchivableProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `closedAtDay` is set, only procedures are returned which were closed at that date
-          - If not submitted, no filtering takes place
-        in: query
-        name: closedAtDay
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If `defaultArchivingRelevance` is submitted, only procedures are returned which have one of the submitted default archiving relevances.
-          - If not submitted, no filtering takes place
-        in: query
-        name: defaultArchivingRelevance
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ArchivingRelevance"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CLOSED_AT`: Sorting by closedAt attribute
-          - `PROCEDURE_TYPE`: Sorting by procedureType attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetArchivableProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetArchivableProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetArchivableProceduresResponse"
-          description: OK
-      summary: Get archivable procedures
-      tags:
-      - Archiving
-  /archiving/procedures/bulk-update-archiving-relevance:
-    post:
-      operationId: bulkUpdateProceduresArchivingRelevance
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/BulkUpdateProceduresArchivingRelevanceRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/BulkUpdateProceduresArchivingRelevanceResponse"
-          description: OK
-      summary: Bulk update procedures archiving relevance
-      tags:
-      - Archiving
-  /archiving/relevant-procedures:
-    get:
-      operationId: getRelevantArchivableProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `closedAtDay` is set, only procedures are returned which were closed at that date
-          - If not submitted, no filtering takes place
-        in: query
-        name: closedAtDay
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If `exported` is true, only procedures are returned which have already been exported.
-          - If `exported` is false, only procedures are returned which have not been exported, yet.
-          - If not submitted, no filtering takes place
-        in: query
-        name: exported
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          The following sorting options are available:
-          - `CLOSED_AT`: Sorting by closedAt attribute
-          - `EXPORTED_AT`: Sorting by exportedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetRelevantArchivableProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetRelevantArchivableProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRelevantArchivableProceduresResponse"
-          description: OK
-      summary: Get relevant archivable procedures
-      tags:
-      - Archiving
-  /archiving/relevant-procedures/export:
-    post:
-      operationId: exportRelevantProcedures
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ExportArchivingRelevantProceduresRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - Archiving
-  /files/{fileId}:
-    delete:
-      operationId: deleteFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Soft deletes the specified file
-      tags:
-      - File
-    get:
-      operationId: getFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/Image"
-                - $ref: "#/components/schemas/Mail"
-                - $ref: "#/components/schemas/Pdf"
-          description: OK
-      summary: Retrieves the meta data of the specified file
-      tags:
-      - File
-  /files/{fileId}/deletion-request:
-    post:
-      operationId: requestFileDeletion
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateApprovalRequestRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      summary: Request deletion of a file entry
-      tags:
-      - File
-  /files/{fileId}/download:
-    get:
-      operationId: downloadFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - File
-  /files/{fileId}/meta-data:
-    put:
-      operationId: updateFileMetaData
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              oneOf:
-              - $ref: "#/components/schemas/ImageMetaData"
-              - $ref: "#/components/schemas/MailMetaData"
-              - $ref: "#/components/schemas/PdfMetaData"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/Image"
-                - $ref: "#/components/schemas/Mail"
-                - $ref: "#/components/schemas/Pdf"
-          description: Updated file
-      summary: Updates the meta data of the specified file
-      tags:
-      - File
-  /files/{fileId}/meta-data/history:
-    get:
-      operationId: getMetaDataHistory
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetMetaDataHistoryResponse"
-          description: OK
-      tags:
-      - File
-  /gdpr-validation-tasks:
-    get:
-      operationId: getAllGdprValidationTasks
-      parameters:
-      - in: query
-        name: status
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprValidationTaskSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAllValidationTasksResponse"
-          description: OK
-      summary: Get all GDPR validation tasks
-      tags:
-      - GdprValidationTask
-    post:
-      operationId: addGdprValidationTask
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddGdprValidationTaskRequest"
-        required: true
-      responses:
-        "200":
-          description: Add a GDPR validation task
-      summary: Add a GDPR validation task
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/notification-banner:
-    get:
-      operationId: getGdprNotificationBanner
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprNotificationBannerResponse"
-          description: OK
-      summary: Get data for GDPR notification banner
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}:
-    delete:
-      operationId: deleteGdprValidationTaskAndDownloadPackages
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/DeleteDownloadPackagesRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Delete the GDPR validation task with gdprProcedureId and GDPR download
-        packages with ids from request
-      tags:
-      - GdprValidationTask
-    get:
-      operationId: getGdprValidationTask
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprValidationTaskResponse"
-          description: OK
-      summary: Get Gdpr Validation Task by Gdpr Procedure Id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures:
-    get:
-      operationId: getGdprValidationTaskDetails
-      parameters:
-      - description: The Id of the GDPR procedure.
-        in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprValidationTaskDetailsResponse"
-          description: OK
-      summary: Get a GDPR validation task by id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}:
-    delete:
-      operationId: deleteBusinessProcedure
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: businessProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Delete the businessProcedure with businessProcedureId for validationTask
-        with gdprProcedureId with type right of erasure
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}/downloadPackage:
-    post:
-      operationId: addDownloadPackage
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: businessProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Creates a downloadPackage for validationTask with gdprProcedureId with
-        the data from the procedure with businessProcedureId
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/close:
-    post:
-      operationId: closeGdprValidationTask
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Close a GDPR validation task
-      summary: Close a GDPR validation task
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/download-packages:
-    get:
-      operationId: getGdprDownloadPackagesInfo
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprDownloadPackagesInfoResponse"
-          description: OK
-      summary: Get approved Gdpr Download Packages by Gdpr Procedure Id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}:
-    get:
-      operationId: getGdprDownloadPackage
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: downloadId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get Gdpr Download Package by the gdprProcedureId and its downloadId
-      tags:
-      - GdprValidationTask
-  /inbox-procedures:
-    get:
-      description: |
-        Get all inbox procedures with filter, sort, and pagination options
-      operationId: getInboxProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `inboxProcedureType` is submitted, only inbox procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place.
-        in: query
-        name: inboxProcedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If true, inbox procedures which have no type are returned in addition to the types specified by 'inboxProcedureType'.
-          - If false or not submitted, inbox procedures which have no type are not returned.
-        in: query
-        name: includeUntyped
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          Filter logic:
-          - If `inboxProcedureStatus` is submitted, only inbox procedures are returned which have one of the submitted statuses.
-          - If not submitted, no filtering takes place.
-        in: query
-        name: inboxProcedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/InboxProcedureStatus"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CREATED_AT`: Sorting by createdAt attribute
-          - `MODIFIED_AT`: Sorting by modifiedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetInboxProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetInboxProceduresSortOrder"
-      - description: Number of the requested page
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      - description: Amount of requested inbox procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 25
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInboxProceduresResponse"
-          description: OK
-      summary: Get inbox procedures
-      tags:
-      - InboxProcedure
-    post:
-      description: |-
-        Creates an inbox procedure with an optional file upload.
-
-               Permitted file formats:
-                - Image formats: jpeg, png
-                - PDF formats: pdf/a
-                - Mail formats: eml
-      operationId: addInboxProcedure
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                createInboxProcedureRequest:
-                  $ref: "#/components/schemas/CreateInboxProcedureRequest"
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-              required:
-              - createInboxProcedureRequest
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InboxProcedure"
-          description: OK
-      summary: Add inbox procedure
-      tags:
-      - InboxProcedure
-  /inbox-procedures/{inboxProcedureId}:
-    get:
-      operationId: getInboxProcedure
-      parameters:
-      - in: path
-        name: inboxProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInboxProcedureResponse"
-          description: OK
-      summary: Get inbox procedure with detailed information
-      tags:
-      - InboxProcedure
-  /inbox-procedures/{inboxProcedureId}/inbox-procedure-status:
-    put:
-      operationId: updateInboxProcedureStatus
-      parameters:
-      - in: path
-        name: inboxProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InboxProcedureStatus"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InboxProcedure"
-          description: OK
-      summary: Update status of inbox procedure
-      tags:
-      - InboxProcedure
-  /procedure-metrics:
-    get:
-      operationId: getProcedureMetrics
-      parameters:
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureMetricsResponse"
-          description: the metrics of procedures
-      summary: Get procedure metrics for procedures created in the given time range
-      tags:
-      - Procedure
-  /procedures:
-    get:
-      description: |
-        GET operation for retrieving basic information of procedures for the procedure overview.
-      operationId: getProcedures
-      parameters:
-      - description: |
-          Only procedures are returned where the assigneeId of at least one task equals the `assignedToId`.
-          If not submitted, no filtering takes place.
-        in: query
-        name: assignedToId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: |
-          Filter logic:
-          - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CREATED_AT`: Sorting by createdAt attribute
-          - `MODIFIED_AT`: Sorting by modifiedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for user
-      tags:
-      - Procedure
-  /procedures/check-file-state-usage:
-    post:
-      operationId: checkFileStateUsage
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CheckFileStateUsageRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CheckFileStateUsageResponse"
-          description: OK
-      summary: Identify which file state IDs are still used by active procedures.
-      tags:
-      - Procedure
-  /procedures/recent:
-    get:
-      operationId: getRecentProcedures
-      parameters:
-      - in: query
-        name: userId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRecentProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for user
-      tags:
-      - Procedure
-  /procedures/recent/self:
-    get:
-      operationId: getSelfRecentProcedures
-      parameters:
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRecentProceduresResponse"
-          description: the current users recent procedures
-      summary: Get recent procedures for the current user
-      tags:
-      - Procedure
-  /procedures/search:
-    get:
-      operationId: searchProcedures
-      parameters:
-      - in: query
-        name: query
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresResponse"
-          description: OK
-      tags:
-      - Procedure
-  /procedures/searchByPerson:
-    get:
-      operationId: searchProceduresByPerson
-      parameters:
-      - in: query
-        name: firstName
-        required: true
-        schema:
-          type: string
-      - in: query
-        name: lastName
-        required: true
-        schema:
-          type: string
-      - in: query
-        name: dateOfBirth
-        required: true
-        schema:
-          type: string
-          format: date
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestGetProcedureByPersonResponse"
-          description: OK
-      tags:
-      - Procedure
-  /procedures/{id}:
-    get:
-      operationId: getDetailedProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetDetailedProcedureResponse"
-          description: a single procedure with details
-      summary: Get a single procedure with details
-      tags:
-      - Procedure
-  /procedures/{id}/approval-requests:
-    get:
-      operationId: getApprovalRequests
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureApprovalRequestsResponse"
-          description: OK
-      summary: Get all approval requests related to this procedure
-      tags:
-      - Procedure
-  /procedures/{id}/files:
-    get:
-      description: |
-        This returns all relevant (highest version per keydocument type and non-deleted) files sorted by descending creation date.
-        That is:
-         * if an progress entry has a keydocument type set, then its files are only returned if it also has the highest keydocument version of the respective key document type.
-         * if an progress entry does not have a keydocument type, then its files are always returned.
-      operationId: getProcedureFileDetails
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureFileDetailsResponse"
-          description: OK
-      summary: Get relevant procedure files
-      tags:
-      - Procedure
-  /procedures/{procedureId}/progress-entries:
-    get:
-      operationId: getProgressEntries
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - description: Filter on progressEntryType
-        in: query
-        name: progressEntryType
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-          uniqueItems: true
-      - description: Filter on child class of progressEntry
-        in: query
-        name: progressEntryClass
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProgressEntryClass"
-          uniqueItems: true
-      - description: |
-          If `initiatedBy` is set with a `userId` then the following is returned:
-          * Only progressEntries with `createdBy`=`userId` in case `ManualProgressEntry` or `ProcessedInboxProgressEntry`
-          * Only progressEntries with `triggeredBy`=`userId` in case `SystemProgressEntry`
-        in: query
-        name: initiatedBy
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      - description: |
-          Filter on triggerType.
-          If this is set, only SystemProgressEntries are returned since only SystemProgressEntries have this attribute.
-        in: query
-        name: triggerType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TriggerType"
-          uniqueItems: true
-      - description: 'Sorting on either modifiedAt or createdAt '
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProgressEntrySortBy"
-      - description: Sorting order. Possible options  "ASC" for ascending and "DESC"
-          for descending.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProgressEntrySortOrder"
-      - description: Maximum number of elements to return
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Index of page to be returned
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProgressEntriesResponse"
-          description: OK
-      summary: Get list of procedure's progress entries
-      tags:
-      - ProgressEntry
-    post:
-      description: |-
-        Creates a manual progress entry with an optional file upload.
-
-               Permitted file formats:
-                - Image formats: jpeg, png
-                - PDF formats: pdf/a
-                - Mail formats: eml
-      operationId: addProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                createManualProgressEntryRequest:
-                  $ref: "#/components/schemas/CreateManualProgressEntryRequest"
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-              required:
-              - createManualProgressEntryRequest
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ManualProgressEntry"
-          description: OK
-      summary: Create a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}:
-    delete:
-      operationId: removeProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Remove a manual progress entry
-      tags:
-      - ProgressEntry
-    get:
-      operationId: getProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProgressEntryResponse"
-          description: OK
-      summary: Get a progress entry
-      tags:
-      - ProgressEntry
-    patch:
-      operationId: patchProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchManualProgressEntryRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ManualProgressEntry"
-          description: OK
-      summary: Modify a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}/deletion-request:
-    post:
-      operationId: requestProgressEntryDeletion
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateApprovalRequestRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      summary: Request deletion of a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}/history:
-    get:
-      operationId: getManualProgressEntryHistory
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetManualProgressEntryHistoryResponse"
-          description: OK
-      summary: Get the history of a manual progress entry
-      tags:
-      - ProgressEntry
-  /task-metrics:
-    get:
-      operationId: getTaskMetrics
-      parameters:
-      - in: query
-        name: procedureType
-        required: true
-        schema:
-          $ref: "#/components/schemas/ProcedureType"
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTaskMetricsResponse"
-          description: the metrics of a specific procedure type
-      summary: Get tasks metrics for a procedure type of a business module for procedures
-        created in the given time range
-      tags:
-      - Task
-  /tasks:
-    get:
-      operationId: getTasks
-      parameters:
-      - in: query
-        name: assigneeId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: assignedById
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      - in: query
-        name: taskTypes
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskType"
-          uniqueItems: true
-      - in: query
-        name: taskStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskStatus"
-          uniqueItems: true
-      - in: query
-        name: sortKey
-        required: true
-        schema:
-          $ref: "#/components/schemas/GetTasksSortBy"
-      - in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetTasksSortOrder"
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TaskResponse"
-          description: tasks
-      summary: Get tasks
-      tags:
-      - Task
-  /tasks/dashboard:
-    get:
-      operationId: getTasksForDashboard
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TaskResponse"
-          description: tasks
-      summary: Get tasks for the dashboard
-      tags:
-      - Task
-  /tasks/team-view:
-    get:
-      description: Returns all _open_ tasks per module group member.
-      operationId: getTasksByAssignee
-      parameters:
-      - description: |
-          If provided, `assignee` must be member of the module group.
-          If not provided, all tasks for all members of the module group are returned.
-        in: query
-        name: assigneeId
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTaskByUserResponse"
-          description: OK
-      tags:
-      - Task
-  /tasks/{taskId}/assignment:
-    put:
-      operationId: assignTask
-      parameters:
-      - in: path
-        name: taskId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AssignTaskRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Task"
-          description: OK
-      tags:
-      - Task
-  /tasks/{taskId}/self-assignment:
-    put:
-      operationId: selfAssignTask
-      parameters:
-      - in: path
-        name: taskId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SelfAssignTaskRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Task"
-          description: OK
-      tags:
-      - Task
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-components:
-  schemas:
-    AbstractFile:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFileReference"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          createdAt:
-            type: string
-            format: date-time
-          createdBy:
-            type: string
-            format: uuid
-          fileName:
-            type: string
-          fileSizeBytes:
-            type: integer
-            format: int32
-          fileType:
-            $ref: "#/components/schemas/FileType"
-          locked:
-            type: boolean
-          modifiedAt:
-            type: string
-            format: date-time
-      - $ref: "#/components/schemas/ApprovalRequestEntity"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    AbstractFileReference:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        deletable:
-          type: boolean
-        deleted:
-          type: boolean
-        fileId:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - deletable
-      - deleted
-      - fileId
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    AddGdprValidationTaskRequest:
-      type: object
-      properties:
-        gdprProcedureId:
-          type: string
-          format: uuid
-        startedAt:
-          type: string
-          format: date-time
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - gdprProcedureId
-      - startedAt
-      - type
-    Address:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    ApprovalRequest:
-      type: object
-      properties:
-        approvalRequestId:
-          type: string
-          format: uuid
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-          format: uuid
-        decidedAt:
-          type: string
-          format: date-time
-        decidedBy:
-          type: string
-          format: uuid
-        decision:
-          $ref: "#/components/schemas/Decision"
-        entity:
-          oneOf:
-          - $ref: "#/components/schemas/ManualProgressEntry"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        operation:
-          $ref: "#/components/schemas/Operation"
-        reason:
-          type: string
-        status:
-          $ref: "#/components/schemas/ApprovalRequestStatus"
-      required:
-      - approvalRequestId
-      - createdAt
-      - createdBy
-      - operation
-      - reason
-      - status
-    ApprovalRequestEntity:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    ApprovalRequestStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    ArchivingDetails:
-      type: object
-      properties:
-        archivingPeriodYears:
-          type: integer
-          format: int32
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-      required:
-      - archivingPeriodYears
-      - archivingRelevance
-    ArchivingRelevance:
-      type: string
-      enum:
-      - DEFAULT
-      - RELEVANT
-      - IRRELEVANT
-    ArchivingRelevanceSettings:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        defaultArchivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-      required:
-      - archivingRelevance
-      - defaultArchivingRelevance
-    AssignTaskRequest:
-      type: object
-      properties:
-        assignee:
-          type: string
-          format: uuid
-        dueAt:
-          type: string
-          format: date-time
-        taskVersion:
-          type: integer
-          format: int64
-      required:
-      - assignee
-      - taskVersion
-    BulkUpdateProceduresArchivingRelevanceRequest:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        procedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 200
-          minItems: 1
-          uniqueItems: true
-      required:
-      - archivingRelevance
-      - procedures
-    BulkUpdateProceduresArchivingRelevanceResponse:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        failedProcedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-        updatedProcedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      required:
-      - archivingRelevance
-      - failedProcedures
-      - updatedProcedures
-    BusinessModule:
-      type: string
-      enum:
-      - INSPECTION
-      - SCHOOL_ENTRY
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY
-      - DENTAL
-      - OFFICIAL_MEDICAL_SERVICE
-    BusinessProcedureInclusionStatus:
-      type: string
-      enum:
-      - INCLUDED
-      - UNDECIDED
-    BusinessProcedureWithInclusionStatus:
-      type: object
-      properties:
-        businessProcedure:
-          $ref: "#/components/schemas/Procedure"
-        inclusionStatus:
-          $ref: "#/components/schemas/BusinessProcedureInclusionStatus"
-      required:
-      - businessProcedure
-      - inclusionStatus
-    CheckFileStateUsageRequest:
-      type: object
-      properties:
-        fileStatesIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-      required:
-      - fileStatesIds
-    CheckFileStateUsageResponse:
-      type: object
-      properties:
-        inUse:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - inUse
-    ContactDetails:
-      type: object
-      properties:
-        address:
-          $ref: "#/components/schemas/InboxProcedureAddress"
-        contactType:
-          $ref: "#/components/schemas/ContactType"
-        dateOfBirth:
-          type: string
-          format: date
-        emailAddress:
-          type: string
-        facilityName:
-          type: string
-        firstName:
-          type: string
-        lastName:
-          type: string
-        phoneNumber:
-          type: string
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          $ref: "#/components/schemas/Title"
-      required:
-      - contactType
-      - salutation
-    ContactType:
-      type: string
-      enum:
-      - PRIVATE_PERSON
-      - FACILITY
-    CountryCode:
-      type: string
-      description: "List of country codes in ISO 3166-1 alpha-2 format. With custom\
-        \ extensions for stateless, non-standard countries, and unknown countries."
-      enum:
-      - AD
-      - AE
-      - AF
-      - AG
-      - AI
-      - AL
-      - AM
-      - AO
-      - AQ
-      - AR
-      - AS
-      - AT
-      - AU
-      - AW
-      - AX
-      - AZ
-      - BA
-      - BB
-      - BD
-      - BE
-      - BF
-      - BG
-      - BH
-      - BI
-      - BJ
-      - BL
-      - BM
-      - BN
-      - BO
-      - BQ
-      - BR
-      - BS
-      - BT
-      - BV
-      - BW
-      - BY
-      - BZ
-      - CA
-      - CC
-      - CD
-      - CF
-      - CG
-      - CH
-      - CI
-      - CK
-      - CL
-      - CM
-      - CN
-      - CO
-      - CR
-      - CU
-      - CV
-      - CW
-      - CX
-      - CY
-      - CZ
-      - DE
-      - DJ
-      - DK
-      - DM
-      - DO
-      - DZ
-      - EC
-      - EE
-      - EG
-      - EH
-      - ER
-      - ES
-      - ET
-      - FI
-      - FJ
-      - FK
-      - FM
-      - FO
-      - FR
-      - GA
-      - GB
-      - GD
-      - GE
-      - GF
-      - GG
-      - GH
-      - GI
-      - GL
-      - GM
-      - GN
-      - GP
-      - GQ
-      - GR
-      - GS
-      - GT
-      - GU
-      - GW
-      - GY
-      - HK
-      - HM
-      - HN
-      - HR
-      - HT
-      - HU
-      - ID
-      - IE
-      - IL
-      - IM
-      - IN
-      - IO
-      - IQ
-      - IR
-      - IS
-      - IT
-      - JE
-      - JM
-      - JO
-      - JP
-      - KE
-      - KG
-      - KH
-      - KI
-      - KM
-      - KN
-      - KP
-      - KR
-      - KW
-      - KY
-      - KZ
-      - LA
-      - LB
-      - LC
-      - LI
-      - LK
-      - LR
-      - LS
-      - LT
-      - LU
-      - LV
-      - LY
-      - MA
-      - MC
-      - MD
-      - ME
-      - MF
-      - MG
-      - MH
-      - MK
-      - ML
-      - MM
-      - MN
-      - MO
-      - MP
-      - MQ
-      - MR
-      - MS
-      - MT
-      - MU
-      - MV
-      - MW
-      - MX
-      - MY
-      - MZ
-      - NA
-      - NC
-      - NE
-      - NF
-      - NG
-      - NI
-      - NL
-      - "NO"
-      - NP
-      - NR
-      - NU
-      - NZ
-      - OM
-      - PA
-      - PE
-      - PF
-      - PG
-      - PH
-      - PK
-      - PL
-      - PM
-      - PN
-      - PR
-      - PS
-      - PT
-      - PW
-      - PY
-      - QA
-      - RE
-      - RO
-      - RS
-      - RU
-      - RW
-      - SA
-      - SB
-      - SC
-      - SD
-      - SE
-      - SG
-      - SH
-      - SI
-      - SJ
-      - SK
-      - SL
-      - SM
-      - SN
-      - SO
-      - SR
-      - SS
-      - ST
-      - SV
-      - SX
-      - SY
-      - SZ
-      - TC
-      - TD
-      - TF
-      - TG
-      - TH
-      - TJ
-      - TK
-      - TL
-      - TM
-      - TN
-      - TO
-      - TR
-      - TT
-      - TV
-      - TW
-      - TZ
-      - UA
-      - UG
-      - UM
-      - US
-      - UY
-      - UZ
-      - VA
-      - VC
-      - VE
-      - VG
-      - VI
-      - VN
-      - VU
-      - WF
-      - WS
-      - YE
-      - YT
-      - ZA
-      - ZM
-      - ZW
-      - XK
-      - UNKNOWN
-      - STATELESS
-    CreateApprovalRequestRequest:
-      type: object
-      properties:
-        reason:
-          type: string
-      required:
-      - reason
-    CreateInboxProcedureRequest:
-      type: object
-      properties:
-        contactDetails:
-          $ref: "#/components/schemas/ContactDetails"
-        inboxProcedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        inboxProgressEntry:
-          $ref: "#/components/schemas/CreateInboxProgressEntry"
-      required:
-      - contactDetails
-      - inboxProgressEntry
-    CreateInboxProgressEntry:
-      type: object
-      properties:
-        inboxProgressEntryType:
-          $ref: "#/components/schemas/InboxProgressEntryType"
-        messageText:
-          type: string
-        subject:
-          type: string
-      required:
-      - inboxProgressEntryType
-    CreateManualProgressEntryRequest:
-      type: object
-      properties:
-        keyDocumentType:
-          type: string
-        manualProgressEntryType:
-          $ref: "#/components/schemas/ManualProgressEntryType"
-        note:
-          type: string
-      required:
-      - manualProgressEntryType
-    DataOrigin:
-      type: string
-      description: "A list of possible origins of Persons and Facility in the Central\
-        \ Files. EDIT will only be set automatically on changes. EXTERNAL is for entries\
-        \ that come, e.g., from the citizen portal. IMPORT is reserved for automatic\
-        \ imports. MANUAL shall be set for every creation or connection done by an\
-        \ employee."
-      enum:
-      - MANUAL
-      - EXTERNAL
-      - IMPORT
-      - EDIT
-    Decision:
-      type: string
-      enum:
-      - GRANTED
-      - DENIED
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    DeleteDownloadPackagesRequest:
-      type: object
-      properties:
-        downloadIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - downloadIds
-    DetailedFacility:
-      type: object
-      properties:
-        facilityFileState:
-          $ref: "#/components/schemas/GetFacilityFileStateResponse"
-        facilityType:
-          $ref: "#/components/schemas/FacilityType"
-      required:
-      - facilityFileState
-      - facilityType
-    DetailedPerson:
-      type: object
-      properties:
-        person:
-          $ref: "#/components/schemas/GetPersonFileStateResponse"
-        personType:
-          $ref: "#/components/schemas/PersonType"
-      required:
-      - person
-      - personType
-    DetailedTask:
-      type: object
-      properties:
-        assignedByName:
-          type: string
-        assigneeName:
-          type: string
-        task:
-          $ref: "#/components/schemas/Task"
-      required:
-      - task
-    DomesticAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          addressAddition:
-            type: string
-            description: A descriptive addition to the address.
-            example: 2.OG links
-            maxLength: 100
-            minLength: 1
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          houseNumber:
-            type: string
-            description: "The house number of the address, including extensions."
-            example: 1a
-            maxLength: 11
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          street:
-            type: string
-            description: "The name of the street of the address, without the house\
-              \ number."
-            example: Beispielweg
-            maxLength: 55
-            minLength: 1
-      description: A usual domestic address.
-      required:
-      - city
-      - country
-      - postalCode
-      - street
-    ExportArchivingRelevantProceduresRequest:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-          uniqueItems: true
-      required:
-      - procedures
-    FacilityContactPerson:
-      type: object
-      properties:
-        emailAddress:
-          type: string
-          description: The email addresses of the Contact Person.
-          example: mail1@address.de
-          maxLength: 254
-          minLength: 6
-        firstName:
-          type: string
-          description: The given name(s) of the Contact Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: The last name of the Contact Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        phoneNumber:
-          type: string
-          description: The phone number of the Contact Person.
-          example: "+491234567890"
-          maxLength: 23
-          minLength: 1
-        role:
-          type: string
-          description: The role of the Contact Person in the Facility.
-          example: CEO
-          maxLength: 255
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of the Contact Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - lastName
-    FacilityType:
-      type: string
-      enum:
-      - SCHOOL
-      - INSPECTION
-      - DAYCARE
-      - HOSPITAL
-      - MEDICAL_PRACTICE
-      - REFUGEE_ACCOMMODATION
-      - OTHER
-    FileMetaData:
-      type: object
-      properties:
-        description:
-          type: string
-    FileType:
-      type: string
-      enum:
-      - JPEG
-      - PNG
-      - PDF
-      - EML
-    GdprDownloadPackageInfo:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-      required:
-      - id
-    GdprFacility:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          dataTransmitterPseudonymId:
-            type: string
-            description: The 'DatenübermittlerPseudonymId' of the MUK user
-            example: du-986b2b54ab89cf4ed674ad8c3126b966b54d4872
-          emailAddress:
-            type: string
-            description: The email addresses of the Facility.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          name:
-            type: string
-            description: The name of the Facility.
-            example: 123 Example Facility
-            maxLength: 300
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Facility.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 1
-      required:
-      - address
-      - name
-    GdprIdentificationData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    GdprPerson:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          bpk2:
-            type: string
-            description: The bpk2 of the BundId user
-            example: VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0
-          dateOfBirth:
-            type: string
-            format: date
-            description: The date of birth of the Person.
-            example: 2000-01-01
-          emailAddress:
-            type: string
-            description: The email addresses of the Person.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          firstName:
-            type: string
-            description: The given name(s) of the Person.
-            example: John
-            maxLength: 80
-            minLength: 1
-          lastName:
-            type: string
-            description: The last name of the Person.
-            example: Doe
-            maxLength: 120
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Person.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 0
-          salutation:
-            $ref: "#/components/schemas/Salutation"
-          title:
-            type: string
-            description: The academic title of the Person.
-            example: Prof. Dr.
-            maxLength: 119
-            minLength: 1
-      required:
-      - address
-      - dateOfBirth
-      - firstName
-      - lastName
-    GdprProcedureType:
-      type: string
-      description: A list of types of GDPR procedures.
-      enum:
-      - RIGHT_OF_ACCESS
-      - RIGHT_TO_ERASURE
-    GdprValidationTask:
-      type: object
-      properties:
-        dueDate:
-          type: string
-          format: date
-        gdprProcedureId:
-          type: string
-          format: uuid
-        identificationData:
-          oneOf:
-          - $ref: "#/components/schemas/GdprFacility"
-          - $ref: "#/components/schemas/GdprPerson"
-        status:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - dueDate
-      - gdprProcedureId
-      - identificationData
-      - status
-      - type
-    GdprValidationTaskSortKey:
-      type: string
-      enum:
-      - CREATED_AT
-    GdprValidationTaskStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    Gender:
-      type: string
-      description: The list of genders as specified in the German Personenstandsgesetz.
-      enum:
-      - NOT_SPECIFIED
-      - DIVERSE
-      - FEMALE
-      - MALE
-    GenericFileReference:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFileReference"
-      - type: object
-        properties:
-          '@type':
-            type: string
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - deletable
-      - deleted
-      - fileId
-    GetAllValidationTasksResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/GdprValidationTask"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          minimum: 0
-      required:
-      - elements
-      - totalNumberOfElements
-    GetArchivableProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetArchivableProceduresSortBy:
-      type: string
-      default: CLOSED_AT
-      enum:
-      - CLOSED_AT
-      - PROCEDURE_TYPE
-    GetArchivableProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetArchivingConfigurationResponse:
-      type: object
-      properties:
-        archivingDetails:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/ArchivingDetails"
-        gracePeriodMonths:
-          type: integer
-          format: int32
-      required:
-      - archivingDetails
-      - gracePeriodMonths
-    GetDetailedProcedureResponse:
-      type: object
-      properties:
-        facilities:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedFacility"
-        persons:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedPerson"
-        procedure:
-          $ref: "#/components/schemas/Procedure"
-        tasks:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedTask"
-      required:
-      - facilities
-      - persons
-      - procedure
-      - tasks
-    GetFacilityFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        id:
-          type: string
-          format: uuid
-          description: Id of the Facility.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referenceFacility
-            it is connected to.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-      required:
-      - contactPersons
-      - dataOrigin
-      - emailAddresses
-      - id
-      - name
-      - phoneNumbers
-      - referenceVersion
-    GetGdprDownloadPackagesInfoResponse:
-      type: object
-      properties:
-        downloadPackages:
-          type: array
-          items:
-            $ref: "#/components/schemas/GdprDownloadPackageInfo"
-      required:
-      - downloadPackages
-    GetGdprNotificationBannerResponse:
-      type: object
-      properties:
-        earliestDueDate:
-          type: string
-          format: date
-        openValidationTasksCount:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - openValidationTasksCount
-    GetGdprValidationTaskDetailsResponse:
-      type: object
-      properties:
-        proceduresWithStatus:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessProcedureWithInclusionStatus"
-        validationTask:
-          $ref: "#/components/schemas/GdprValidationTask"
-      required:
-      - proceduresWithStatus
-      - validationTask
-    GetGdprValidationTaskResponse:
-      type: object
-      properties:
-        status:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-      required:
-      - status
-    GetInboxProcedureResponse:
-      type: object
-      properties:
-        inboxProcedure:
-          $ref: "#/components/schemas/InboxProcedure"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - inboxProcedure
-      - resolvedUsers
-    GetInboxProceduresResponse:
-      type: object
-      properties:
-        inboxProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/InboxProcedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - inboxProcedures
-      - totalElements
-      - totalPages
-    GetInboxProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - CREATED_AT
-    GetInboxProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetManualProgressEntryHistoryResponse:
-      type: object
-      properties:
-        manualProgressEntryHistory:
-          type: array
-          items:
-            $ref: "#/components/schemas/ManualProgressEntryHistory"
-    GetMetaDataHistoryResponse:
-      type: object
-      properties:
-        metaDataHistory:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ImageMetaDataHistory"
-            - $ref: "#/components/schemas/MailMetaDataHistory"
-            - $ref: "#/components/schemas/PdfMetaDataHistory"
-    GetPersonFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        dateOfBirth:
-          type: string
-          format: date
-          description: The date of birth of the Person.
-          example: 2000-01-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Person.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: The given name(s) of the Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        id:
-          type: string
-          format: uuid
-          description: Id of the Person.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        lastName:
-          type: string
-          description: The last name of the Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          description: The last name at birth of the Person.
-          example: Smith
-          maxLength: 40
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referencePerson
-            it is connected to. Set to 'null' if unchecked.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Person.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          description: The place of birth (without country) of the Person.
-          example: Berlin
-          maxLength: 50
-          minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - dataOrigin
-      - dateOfBirth
-      - emailAddresses
-      - firstName
-      - gender
-      - id
-      - lastName
-      - phoneNumbers
-      - referenceVersion
-      - salutation
-    GetProcedureApprovalRequestsResponse:
-      type: object
-      properties:
-        approvalRequests:
-          type: array
-          items:
-            $ref: "#/components/schemas/ApprovalRequest"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - approvalRequests
-      - resolvedUsers
-    GetProcedureFileDetailsResponse:
-      type: object
-      properties:
-        fileDetails:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProgressEntryReferenceFilePair"
-        procedureId:
-          type: string
-          format: uuid
-      required:
-      - fileDetails
-      - procedureId
-    GetProcedureMetricsResponse:
-      type: object
-      properties:
-        procedureMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureMetric"
-      required:
-      - procedureMetrics
-    GetProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - MODIFIED_AT
-      - CREATED_AT
-    GetProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetProgressEntriesResponse:
-      type: object
-      properties:
-        progressEntries:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ManualProgressEntry"
-            - $ref: "#/components/schemas/ProcessedInboxProgressEntry"
-            - $ref: "#/components/schemas/SystemProgressEntry"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - progressEntries
-      - totalElements
-      - totalPages
-    GetProgressEntryResponse:
-      type: object
-      properties:
-        progressEntry:
-          oneOf:
-          - $ref: "#/components/schemas/ManualProgressEntry"
-          - $ref: "#/components/schemas/ProcessedInboxProgressEntry"
-          - $ref: "#/components/schemas/SystemProgressEntry"
-        relatedKeyDocumentProgressEntries:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ManualProgressEntry"
-            - $ref: "#/components/schemas/SystemProgressEntry"
-      required:
-      - progressEntry
-      - relatedKeyDocumentProgressEntries
-    GetRecentProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-      required:
-      - procedures
-    GetReferencePersonResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        dateOfBirth:
-          type: string
-          format: date
-          description: The date of birth of the Person.
-          example: 2000-01-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Person.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: The given name(s) of the Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        id:
-          type: string
-          format: uuid
-          description: Id of the Person.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        lastName:
-          type: string
-          description: The last name of the Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          description: The last name at birth of the Person.
-          example: Smith
-          maxLength: 40
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Person.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          description: The place of birth (without country) of the Person.
-          example: Berlin
-          maxLength: 50
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-        version:
-          type: integer
-          format: int64
-          description: "Version of the entity. Each time the entity is changed, it\
-            \ is incremented by one."
-      required:
-      - dataOrigin
-      - dateOfBirth
-      - emailAddresses
-      - firstName
-      - gender
-      - id
-      - lastName
-      - phoneNumbers
-      - salutation
-      - version
-    GetRelevantArchivableProceduresResponse:
-      type: object
-      properties:
-        fileSizeBytes:
-          type: integer
-          format: int32
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - fileSizeBytes
-      - procedures
-      - totalElements
-      - totalPages
-    GetRelevantArchivableProceduresSortBy:
-      type: string
-      default: CLOSED_AT
-      enum:
-      - CLOSED_AT
-      - EXPORTED_AT
-    GetRelevantArchivableProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetTaskByUserResponse:
-      type: object
-      properties:
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-        tasksByUser:
-          type: object
-          additionalProperties:
-            type: array
-            items:
-              $ref: "#/components/schemas/Task"
-      required:
-      - resolvedUsers
-      - tasksByUser
-    GetTaskMetricsResponse:
-      type: object
-      properties:
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedProcedureCount:
-          type: integer
-          format: int64
-        fastestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        slowestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        taskMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskMetric"
-      required:
-      - businessModule
-      - closedProcedureCount
-      - fastestProcedures
-      - procedureType
-      - slowestProcedures
-      - taskMetrics
-    GetTasksSortBy:
-      type: string
-      enum:
-      - PRIORITY
-      - CREATED_AT
-      - MODIFIED_AT
-    GetTasksSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    Image:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/ImageMetaData"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    ImageMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          createdDate:
-            type: string
-            format: date-time
-    ImageMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          imageMetaData:
-            $ref: "#/components/schemas/ImageMetaData"
-      required:
-      - changedAt
-    InboxProcedure:
-      type: object
-      properties:
-        closedAt:
-          type: string
-          format: date-time
-        contactDetails:
-          $ref: "#/components/schemas/ContactDetails"
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-          format: uuid
-        inboxProcedureId:
-          type: string
-          format: uuid
-        inboxProcedureStatus:
-          $ref: "#/components/schemas/InboxProcedureStatus"
-        inboxProcedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        inboxProgressEntry:
-          $ref: "#/components/schemas/InboxProgressEntry"
-      required:
-      - contactDetails
-      - createdAt
-      - createdBy
-      - inboxProcedureId
-      - inboxProcedureStatus
-      - inboxProgressEntry
-    InboxProcedureAddress:
-      type: object
-      properties:
-        addressAddition:
-          type: string
-        city:
-          type: string
-        country:
-          type: string
-        houseNumber:
-          type: string
-        postalCode:
-          type: string
-        postboxNumber:
-          type: integer
-          format: int32
-        street:
-          type: string
-    InboxProcedureStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    InboxProgressEntry:
-      type: object
-      properties:
-        fileReference:
-          oneOf:
-          - $ref: "#/components/schemas/GenericFileReference"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        inboxProgressEntryId:
-          type: string
-          format: uuid
-        inboxProgressEntryType:
-          $ref: "#/components/schemas/InboxProgressEntryType"
-        messageText:
-          type: string
-        subject:
-          type: string
-      required:
-      - inboxProgressEntryId
-      - inboxProgressEntryType
-    InboxProgressEntryType:
-      type: string
-      enum:
-      - LETTER
-      - PHONE_CALL
-      - EMAIL
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    KeyDocumentAwareProgressEntry:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        keyDocumentType:
-          type: string
-        keyDocumentVersion:
-          type: integer
-          format: int32
-      required:
-      - '@type'
-    Mail:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/MailMetaData"
-          removedInvalidAttachments:
-            type: integer
-            format: int32
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-      - removedInvalidAttachments
-    MailMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          mailFrom:
-            type: string
-          mailTo:
-            type: string
-          messageText:
-            type: string
-          sentDate:
-            type: string
-            format: date-time
-          subject:
-            type: string
-      required:
-      - mailFrom
-      - mailTo
-      - messageText
-      - sentDate
-      - subject
-    MailMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          mailMetaData:
-            $ref: "#/components/schemas/MailMetaData"
-      required:
-      - changedAt
-    ManualProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          createdByUserFirstName:
-            type: string
-          createdByUserLastName:
-            type: string
-          keyDocumentType:
-            type: string
-          keyDocumentVersion:
-            type: integer
-            format: int32
-          locked:
-            type: boolean
-          manualProgressEntryType:
-            $ref: "#/components/schemas/ManualProgressEntryType"
-          note:
-            type: string
-      - $ref: "#/components/schemas/ApprovalRequestEntity"
-      - $ref: "#/components/schemas/KeyDocumentAwareProgressEntry"
-      required:
-      - createdAt
-      - createdBy
-      - locked
-      - manualProgressEntryType
-      - modifiedAt
-      - progressEntryId
-    ManualProgressEntryHistory:
-      type: object
-      properties:
-        changedAt:
-          type: string
-          format: date-time
-        manualProgressEntry:
-          $ref: "#/components/schemas/ManualProgressEntry"
-      required:
-      - changedAt
-    ManualProgressEntryType:
-      type: string
-      enum:
-      - LETTER
-      - PHONE_CALL
-      - NOTE
-      - EMAIL
-      - IMAGE
-      - DOCUMENT
-    MetaData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        description:
-          type: string
-      required:
-      - '@type'
-    MetaDataHistory:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        changedAt:
-          type: string
-          format: date-time
-      required:
-      - '@type'
-      - changedAt
-    Operation:
-      type: string
-      enum:
-      - DELETE
-    PatchManualProgressEntryRequest:
-      type: object
-      properties:
-        manualProgressEntryType:
-          $ref: "#/components/schemas/ManualProgressEntryType"
-        note:
-          type: string
-          nullable: true
-    Pdf:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/PdfMetaData"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    PdfMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          createdDate:
-            type: string
-            format: date-time
-    PdfMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          pdfMetaData:
-            $ref: "#/components/schemas/PdfMetaData"
-      required:
-      - changedAt
-    PersonType:
-      type: string
-      enum:
-      - PATIENT
-      - PARENT
-      - PROFESSIONAL
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    PostboxAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          postbox:
-            type: string
-            description: The number (or name) of the postbox.
-            example: "123"
-            maxLength: 21
-            minLength: 1
-      description: An address which is a postbox.
-      required:
-      - city
-      - country
-      - postalCode
-      - postbox
-    Procedure:
-      type: object
-      properties:
-        archivingRelevanceSettings:
-          $ref: "#/components/schemas/ArchivingRelevanceSettings"
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedAt:
-          type: string
-          format: date-time
-        createdAt:
-          type: string
-          format: date-time
-        exportedAt:
-          type: string
-          format: date-time
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        procedureStatus:
-          $ref: "#/components/schemas/ProcedureStatus"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-          pattern: "[a-zA-Z0-9.].+"
-      required:
-      - archivingRelevanceSettings
-      - businessModule
-      - createdAt
-      - modifiedAt
-      - procedureId
-      - procedureStatus
-      - procedureType
-      - summary
-    ProcedureMetric:
-      type: object
-      properties:
-        abortedCount:
-          type: integer
-          format: int64
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedCount:
-          type: integer
-          format: int64
-        inProgressCount:
-          type: integer
-          format: int64
-        openOrDraftCount:
-          type: integer
-          format: int64
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        totalCount:
-          type: integer
-          format: int64
-      required:
-      - abortedCount
-      - businessModule
-      - closedCount
-      - inProgressCount
-      - openOrDraftCount
-      - procedureType
-      - totalCount
-    ProcedureStatus:
-      type: string
-      enum:
-      - DRAFT
-      - OPEN
-      - IN_PROGRESS
-      - CLOSED
-      - ABORTED
-    ProcedureType:
-      type: string
-      enum:
-      - REGULAR_EXAMINATION
-      - CAN_CHILD
-      - ENTRY_LEVEL
-      - DRAFT_CITIZEN_OFFICE_IMPORT
-      - DRAFT_SCHOOL_IMPORT
-      - INSPECTION
-      - TM_VACCINATION_CONSULTATION
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY_ENTRY
-      - MEDICAL_REGISTRY_CITIZEN_DRAFT
-      - MEDICAL_REGISTRY_EMPLOYEE_DRAFT
-      - DENTAL_CHILD
-      - OFFICIAL_MEDICAL_SERVICE
-    ProcedureWithDuration:
-      type: object
-      properties:
-        createdAt:
-          type: string
-          format: date-time
-        duration:
-          type: string
-          description: A duration in ISO 8601
-        id:
-          type: string
-          format: uuid
-      required:
-      - createdAt
-      - id
-    ProcessedInboxProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          createdByUserFirstName:
-            type: string
-          createdByUserLastName:
-            type: string
-          inboxProcedureId:
-            type: string
-            format: uuid
-          inboxProgressEntryType:
-            $ref: "#/components/schemas/InboxProgressEntryType"
-          messageText:
-            type: string
-          subject:
-            type: string
-      required:
-      - createdAt
-      - createdBy
-      - inboxProcedureId
-      - inboxProgressEntryType
-      - modifiedAt
-      - progressEntryId
-    ProgressEntry:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        createdAt:
-          type: string
-          format: date-time
-        fileReference:
-          oneOf:
-          - $ref: "#/components/schemas/GenericFileReference"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        modifiedAt:
-          type: string
-          format: date-time
-        progressEntryId:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - createdAt
-      - modifiedAt
-      - progressEntryId
-    ProgressEntryClass:
-      type: string
-      enum:
-      - MANUAL_PROGRESS_ENTRY
-      - SYSTEM_PROGRESS_ENTRY
-      - PROCESSED_INBOX_PROGRESS_ENTRY
-    ProgressEntryReferenceFilePair:
-      type: object
-      properties:
-        file:
-          oneOf:
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        progressEntryId:
-          type: string
-          format: uuid
-      required:
-      - file
-      - progressEntryId
-    ProgressEntrySortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - CREATED_AT
-      - MODIFIED_AT
-    ProgressEntrySortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    Salutation:
-      type: string
-      enum:
-      - NOT_SPECIFIED
-      - NEUTRAL
-      - FEMALE
-      - MALE
-    SelfAssignTaskRequest:
-      type: object
-      properties:
-        dueAt:
-          type: string
-          format: date-time
-        taskVersion:
-          type: integer
-          format: int64
-      required:
-      - taskVersion
-    SortDirection:
-      type: string
-      enum:
-      - ASC
-      - DESC
-    SystemProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          changeDescription:
-            type: string
-          keyDocumentType:
-            type: string
-          keyDocumentVersion:
-            type: integer
-            format: int32
-          previousFileStateId:
-            type: string
-            format: uuid
-          systemProgressEntryType:
-            type: string
-          triggerType:
-            $ref: "#/components/schemas/TriggerType"
-          triggeredBy:
-            type: string
-            format: uuid
-          triggeredByUserFirstName:
-            type: string
-          triggeredByUserLastName:
-            type: string
-      - $ref: "#/components/schemas/KeyDocumentAwareProgressEntry"
-      required:
-      - createdAt
-      - modifiedAt
-      - progressEntryId
-      - systemProgressEntryType
-      - triggerType
-    Task:
-      type: object
-      properties:
-        assignedById:
-          type: string
-          format: uuid
-        assigneeId:
-          type: string
-          format: uuid
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        createdAt:
-          type: string
-          format: date-time
-        dueAt:
-          type: string
-          format: date-time
-        isOverdue:
-          type: boolean
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-        taskId:
-          type: string
-          format: uuid
-        taskStatus:
-          $ref: "#/components/schemas/TaskStatus"
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        version:
-          type: integer
-          format: int64
-      required:
-      - businessModule
-      - createdAt
-      - isOverdue
-      - modifiedAt
-      - procedureId
-      - summary
-      - taskId
-      - taskStatus
-      - taskType
-      - version
-    TaskMetric:
-      type: object
-      properties:
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        moreThanTwoOccurrencesCount:
-          type: integer
-          format: int32
-        noOccurrencesCount:
-          type: integer
-          format: int32
-        oneOccurrenceCount:
-          type: integer
-          format: int32
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        twoOccurrencesCount:
-          type: integer
-          format: int32
-      required:
-      - moreThanTwoOccurrencesCount
-      - noOccurrencesCount
-      - oneOccurrenceCount
-      - taskType
-      - twoOccurrencesCount
-    TaskResponse:
-      type: object
-      properties:
-        count:
-          type: integer
-          format: int64
-          description: total number of tasks for this query
-        tasks:
-          type: array
-          items:
-            $ref: "#/components/schemas/Task"
-          maxItems: 200
-          minItems: 0
-      required:
-      - count
-      - tasks
-    TaskStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    TaskType:
-      type: string
-      enum:
-      - BOOK_APPOINTMENT
-      - PERFORM_SCHOOL_ENTRY_EXAMINATION
-      - INSPECTION_PLANNING
-      - INSPECTION_EXECUTION
-      - INSPECTION_REPORT
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - OFFICIAL_MEDICAL_SERVICE
-    TestGetProcedureByPersonResponse:
-      type: object
-      properties:
-        procedures:
-          type: object
-          additionalProperties:
-            type: array
-            items:
-              $ref: "#/components/schemas/TestProcedureDto"
-        resolvedPersons:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/GetReferencePersonResponse"
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
-    TestProcedureDto:
-      type: object
-      properties:
-        procedureId:
-          type: string
-          format: uuid
-        procedureStatus:
-          $ref: "#/components/schemas/ProcedureStatus"
-    Title:
-      type: string
-      enum:
-      - DR
-      - PROF
-      - PROF_DR
-    TriggerType:
-      type: string
-      enum:
-      - SYSTEM_AUTOMATIC
-      - EMPLOYEE
-      - CITIZEN
-    User:
-      type: object
-      properties:
-        email:
-          type: string
-          description: The email address of a user.
-          example: example@mail.de
-        enabled:
-          type: boolean
-          description: "True, if the user can login"
-          example: false
-        externalChatUsername:
-          type: string
-          description: The chat username of the gematik TI-Messenger (matrix chat).
-          example: '@username:server'
-        firstName:
-          type: string
-          description: The given name(s) of a user.
-          example: John
-        lastName:
-          type: string
-          description: The last name of a user.
-          example: Doe
-        phoneNumber:
-          type: string
-          description: The phone number of a user.
-          example: "+491234567890"
-        userId:
-          type: string
-          format: uuid
-          description: The Id of the user.
-          example: fe9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        username:
-          type: string
-          description: The username which is displayed in the application and can
-            be used for the login.
-          example: testuser
-      required:
-      - enabled
-      - firstName
-      - lastName
-      - userId
-      - username
diff --git a/backend/lib-procedures/src/main/java/de/eshg/lib/procedure/helper/UserHelper.java b/backend/lib-procedures/src/main/java/de/eshg/lib/procedure/helper/UserHelper.java
index 5c868a71e..4c2e4b231 100644
--- a/backend/lib-procedures/src/main/java/de/eshg/lib/procedure/helper/UserHelper.java
+++ b/backend/lib-procedures/src/main/java/de/eshg/lib/procedure/helper/UserHelper.java
@@ -13,7 +13,6 @@ import de.eshg.base.user.api.UserDto;
 import de.eshg.base.user.api.UserFilterParameters;
 import de.eshg.base.user.api.UserRoleDto;
 import de.eshg.lib.keycloak.ModuleLeaderRole;
-import de.eshg.lib.procedure.model.ProgressEntryDto;
 import de.eshg.model.HasResolvableUserIds;
 import java.util.Collection;
 import java.util.LinkedHashSet;
@@ -61,33 +60,6 @@ public class UserHelper {
                 user -> new UserFirstAndLastName(user.firstName(), user.lastName())));
   }
 
-  public <T extends ProgressEntryDto> void enrichUsersFirstNamesAndLastNames(T progressEntry) {
-    enrichUsersFirstNamesAndLastNames(List.of(progressEntry));
-  }
-
-  public void enrichUsersFirstNamesAndLastNames(List<? extends ProgressEntryDto> progressEntries) {
-    Set<UUID> userUuids = collectUsersUuids(progressEntries);
-
-    Map<UUID, UserFirstAndLastName> userFirstNameAndLastNameByUuid =
-        resolveUsersFirstNamesAndLastNamesByUserUuids(userUuids);
-
-    for (ProgressEntryDto progressEntry : progressEntries) {
-      UUID uuid = progressEntry.getRelatedUserId();
-      if (uuid != null && userFirstNameAndLastNameByUuid.containsKey(uuid)) {
-        UserFirstAndLastName userFirstAndLastName = userFirstNameAndLastNameByUuid.get(uuid);
-        progressEntry.setRelatedUserFirstName(userFirstAndLastName.firstName());
-        progressEntry.setRelatedUserLastName(userFirstAndLastName.lastName());
-      }
-    }
-  }
-
-  private Set<UUID> collectUsersUuids(List<? extends ProgressEntryDto> progressEntries) {
-    return progressEntries.stream()
-        .map(ProgressEntryDto::getRelatedUserId)
-        .filter(Objects::nonNull)
-        .collect(Collectors.toSet());
-  }
-
   public Set<UUID> getUuidsOfModuleLeaders() {
     UserRoleDto userRoleDto = mapModuleLeaderRoleToApi(moduleLeaderRole);
     UserFilterParameters userFilterParameters = new UserFilterParameters(userRoleDto, null);
@@ -98,7 +70,7 @@ public class UserHelper {
 
   public <T extends HasResolvableUserIds> Map<UUID, UserDto> resolveUsers(
       SequencedMap<UUID, List<T>> map) {
-    return resolveUsers(map, false);
+    return resolveUsers(map, true);
   }
 
   public <T extends HasResolvableUserIds> Map<UUID, UserDto> resolveUsers(
@@ -108,7 +80,7 @@ public class UserHelper {
   }
 
   public <T extends HasResolvableUserIds> Map<UUID, UserDto> resolveUsers(List<T> list) {
-    return resolveUsers(list, false);
+    return resolveUsers(list, true);
   }
 
   public <T extends HasResolvableUserIds> Map<UUID, UserDto> resolveUsers(
diff --git a/backend/lib-procedures/src/main/java/de/eshg/lib/procedure/mapping/ProcedureApprovalRequestMapper.java b/backend/lib-procedures/src/main/java/de/eshg/lib/procedure/mapping/ProcedureApprovalRequestMapper.java
index a20a02815..58e701300 100644
--- a/backend/lib-procedures/src/main/java/de/eshg/lib/procedure/mapping/ProcedureApprovalRequestMapper.java
+++ b/backend/lib-procedures/src/main/java/de/eshg/lib/procedure/mapping/ProcedureApprovalRequestMapper.java
@@ -10,26 +10,15 @@ import de.eshg.lib.foureyes.mapping.ApprovalRequestMapper.EntityToApprovalReques
 import de.eshg.lib.foureyes.model.ApprovalRequestEntityDto;
 import de.eshg.lib.procedure.domain.model.File;
 import de.eshg.lib.procedure.domain.model.ManualProgressEntry;
-import de.eshg.lib.procedure.helper.UserHelper;
-import de.eshg.lib.procedure.model.ManualProgressEntryDto;
 import org.springframework.stereotype.Service;
 
 @Service
 public final class ProcedureApprovalRequestMapper implements EntityToApprovalRequestEntityMapper {
 
-  private final UserHelper userHelper;
-
-  public ProcedureApprovalRequestMapper(UserHelper userHelper) {
-    this.userHelper = userHelper;
-  }
-
   @Override
   public ApprovalRequestEntityDto toInterfaceType(EntityWithExternalId entity) {
     if (entity instanceof ManualProgressEntry manualProgressEntry) {
-      ManualProgressEntryDto progressEntry =
-          ProgressEntryMapper.toInterfaceType(manualProgressEntry);
-      userHelper.enrichUsersFirstNamesAndLastNames(progressEntry);
-      return progressEntry;
+      return ProgressEntryMapper.toInterfaceType(manualProgressEntry);
     }
 
     if (entity instanceof File file) {
diff --git a/backend/lib-procedures/src/main/java/de/eshg/lib/procedure/progressentry/ProgressEntryController.java b/backend/lib-procedures/src/main/java/de/eshg/lib/procedure/progressentry/ProgressEntryController.java
index 4f22355e6..6451495e1 100644
--- a/backend/lib-procedures/src/main/java/de/eshg/lib/procedure/progressentry/ProgressEntryController.java
+++ b/backend/lib-procedures/src/main/java/de/eshg/lib/procedure/progressentry/ProgressEntryController.java
@@ -52,6 +52,7 @@ import de.eshg.lib.procedure.model.ProgressEntrySortOrderDto;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import java.io.IOException;
 import java.util.*;
+import java.util.stream.Stream;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Sort;
@@ -150,10 +151,11 @@ public class ProgressEntryController<P extends Procedure<P, ?, ?, ?>> implements
             .map(ProgressEntryMapper::toInterfaceType)
             .toList();
 
-    userHelper.enrichUsersFirstNamesAndLastNames(progressEntries);
-
     return new GetProgressEntriesResponse(
-        page.getTotalPages(), page.getTotalElements(), progressEntries);
+        page.getTotalPages(),
+        page.getTotalElements(),
+        progressEntries,
+        userHelper.resolveUsers(progressEntries));
   }
 
   @Override
@@ -171,12 +173,7 @@ public class ProgressEntryController<P extends Procedure<P, ?, ?, ?>> implements
         progressEntryService.addManualProgressEntry(
             procedureId, manualProgressEntry, file, fileMetaData);
 
-    ManualProgressEntryDto manualProgressEntryDto =
-        ProgressEntryMapper.toInterfaceType(savedManualProgressEntry);
-
-    userHelper.enrichUsersFirstNamesAndLastNames(manualProgressEntryDto);
-
-    return manualProgressEntryDto;
+    return ProgressEntryMapper.toInterfaceType(savedManualProgressEntry);
   }
 
   private Sort mapToSort(GetProgressEntriesSortOptions sortOptions) {
@@ -267,8 +264,16 @@ public class ProgressEntryController<P extends Procedure<P, ?, ?, ?>> implements
   public GetProgressEntryResponse getProgressEntry(UUID procedureId, UUID progressEntryId) {
     ProgressEntry progressEntry =
         progressEntryService.getProgressEntryOrThrow(procedureId, progressEntryId);
+    List<KeyDocumentAwareProgressEntryDto> relatedKeyDocumentProgressEntries =
+        getRelatedKeyDocumentProgressEntries(progressEntry);
+
+    ProgressEntryDto progressEntryDto = ProgressEntryMapper.toInterfaceType(progressEntry);
     return new GetProgressEntryResponse(
-        mapAndEnrich(progressEntry), getRelatedKeyDocumentProgressEntries(progressEntry));
+        progressEntryDto,
+        relatedKeyDocumentProgressEntries,
+        userHelper.resolveUsers(
+            Stream.concat(Stream.of(progressEntryDto), relatedKeyDocumentProgressEntries.stream())
+                .toList()));
   }
 
   private List<KeyDocumentAwareProgressEntryDto> getRelatedKeyDocumentProgressEntries(
@@ -287,18 +292,12 @@ public class ProgressEntryController<P extends Procedure<P, ?, ?, ?>> implements
             keyDocumentAware.getKeyDocumentType(),
             progressEntry.getId())
         .stream()
-        .map(this::mapAndEnrich)
+        .map(ProgressEntryMapper::toInterfaceType)
         .filter(KeyDocumentAwareProgressEntryDto.class::isInstance)
         .map(KeyDocumentAwareProgressEntryDto.class::cast)
         .toList();
   }
 
-  private ProgressEntryDto mapAndEnrich(ProgressEntry entity) {
-    ProgressEntryDto response = ProgressEntryMapper.toInterfaceType(entity);
-    userHelper.enrichUsersFirstNamesAndLastNames(response);
-    return response;
-  }
-
   @Override
   @Transactional
   public ApprovalRequestDto requestProgressEntryDeletion(
@@ -321,12 +320,7 @@ public class ProgressEntryController<P extends Procedure<P, ?, ?, ?>> implements
         progressEntryService.patchProgressEntry(
             procedureId, progressEntryId, patchManualProgressEntryRequest);
 
-    ManualProgressEntryDto manualProgressEntryDto =
-        ProgressEntryMapper.toInterfaceType(manualProgressEntry);
-
-    userHelper.enrichUsersFirstNamesAndLastNames(manualProgressEntryDto);
-
-    return manualProgressEntryDto;
+    return ProgressEntryMapper.toInterfaceType(manualProgressEntry);
   }
 
   @Override
diff --git a/backend/lib-procedures/src/main/java/de/eshg/lib/procedure/progressentry/ProgressEntryService.java b/backend/lib-procedures/src/main/java/de/eshg/lib/procedure/progressentry/ProgressEntryService.java
index 6c1712ff8..6038b30f1 100644
--- a/backend/lib-procedures/src/main/java/de/eshg/lib/procedure/progressentry/ProgressEntryService.java
+++ b/backend/lib-procedures/src/main/java/de/eshg/lib/procedure/progressentry/ProgressEntryService.java
@@ -32,7 +32,6 @@ import de.eshg.lib.procedure.helper.UserHelper;
 import de.eshg.lib.procedure.mapping.ProgressEntryMapper;
 import de.eshg.lib.procedure.model.FileMetaDataDto;
 import de.eshg.lib.procedure.model.GetManualProgressEntryHistoryResponse;
-import de.eshg.lib.procedure.model.ManualProgressEntryDto;
 import de.eshg.lib.procedure.model.ManualProgressEntryHistoryDto;
 import de.eshg.lib.procedure.model.ManualProgressEntryTypeDto;
 import de.eshg.lib.procedure.model.PatchManualProgressEntryRequest;
@@ -373,12 +372,6 @@ public class ProgressEntryService<P extends Procedure<P, ?, ?, ?>> {
             .map(ProgressEntryMapper::toInterfaceType)
             .toList();
 
-    List<ManualProgressEntryDto> manualProgressEntryDtos =
-        progressEntryHistory.stream()
-            .map(ManualProgressEntryHistoryDto::getManualProgressEntry)
-            .toList();
-    userHelper.enrichUsersFirstNamesAndLastNames(manualProgressEntryDtos);
-
     return new GetManualProgressEntryHistoryResponse(progressEntryHistory);
   }
 
diff --git a/backend/lib-security-config-urls/src/main/java/de/eshg/rest/service/security/config/BaseUrls.java b/backend/lib-security-config-urls/src/main/java/de/eshg/rest/service/security/config/BaseUrls.java
index 2442dcd38..47b639ac9 100644
--- a/backend/lib-security-config-urls/src/main/java/de/eshg/rest/service/security/config/BaseUrls.java
+++ b/backend/lib-security-config-urls/src/main/java/de/eshg/rest/service/security/config/BaseUrls.java
@@ -65,6 +65,23 @@ public final class BaseUrls {
     public static final String GDPR_PROCEDURE_API = "/gdpr-procedures";
     public static final String GDPR_PROCEDURE_CITIZEN_PORTAL_URL = "/citizen-portal";
 
+    public static final class Gdpr {
+      public static final String DOWNLOADS = "/{id}/downloads";
+      public static final String FILE_STATE_IDS = "/{id}/fileStateIds";
+      public static final String BY_ID = "/{id}";
+      public static final String DETAILS_PAGE = "/{id}/details-page";
+      public static final String REPORT_DOCUMENT = "/{id}/report-document";
+      public static final String MATTER_OF_CONCERN = "/{id}/matter-of-concern";
+      public static final String REFRESH_STATUS = "/{id}/refresh-status";
+      public static final String START_PROCEDURE = "/{id}/start-procedure";
+      public static final String CANCEL_PROCEDURE = "/{id}/cancel-procedure";
+      public static final String CLOSE_PROCEDURE = "/{id}/close-procedure";
+      public static final String CENTRAL_FILE_DOWNLOAD_PACKAGE =
+          "/{id}/central-file-download-package";
+
+      private Gdpr() {}
+    }
+
     public static final String FACILITY_API = "/facilities";
     public static final String FACILITY_FILE_STATE_URL = "/centralfilestates";
     public static final String FACILITY_EXTERNAL_DATA_SOURCE_URL = "/external-source";
@@ -210,6 +227,22 @@ public final class BaseUrls {
     public static final String TASKS_TEAM_VIEW = TASKS_API + "/team-view";
     public static final String GDPR_VALIDATION_TASK_API = "/gdpr-validation-tasks";
 
+    public static final class Gdpr {
+      public static final String NOTIFICATION_BANNER = "/notification-banner";
+      public static final String BY_GDPR_ID = "/{gdprProcedureId}";
+      public static final String BUSINESS_PROCEDURES = "/{gdprProcedureId}/business-procedures";
+      public static final String BUSINESS_PROCEDURE =
+          "/{gdprProcedureId}/business-procedures/{businessProcedureId}";
+      public static final String BUSINESS_PROCEDURE_DOWNLOAD_PACKAGE =
+          "/{gdprProcedureId}/business-procedures/{businessProcedureId}/downloadPackage";
+      public static final String DOWNLOAD_PACKAGES_INFO = "/{gdprProcedureId}/download-packages";
+      public static final String DOWNLOAD_PACKAGE =
+          "/{gdprProcedureId}/download-packages/{downloadId}";
+      public static final String CLOSE_PROCEDURE = "/{gdprProcedureId}/close";
+
+      private Gdpr() {}
+    }
+
     private ProcedureLibrary() {}
   }
 
diff --git a/backend/lib-security-config/src/main/java/de/eshg/rest/service/security/config/AbstractPublicSecurityConfiguration.java b/backend/lib-security-config/src/main/java/de/eshg/rest/service/security/config/AbstractPublicSecurityConfiguration.java
index deab07fe5..482f5bf1a 100644
--- a/backend/lib-security-config/src/main/java/de/eshg/rest/service/security/config/AbstractPublicSecurityConfiguration.java
+++ b/backend/lib-security-config/src/main/java/de/eshg/rest/service/security/config/AbstractPublicSecurityConfiguration.java
@@ -18,6 +18,7 @@ import de.eshg.lib.keycloak.ModuleLeaderRole;
 import de.eshg.lib.keycloak.PermissionRole;
 import de.eshg.rest.service.security.config.BaseUrls.FourEyesLibrary;
 import de.eshg.rest.service.security.config.BaseUrls.ProcedureLibrary;
+import de.eshg.rest.service.security.config.BaseUrls.ProcedureLibrary.Gdpr;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -174,17 +175,13 @@ public abstract class AbstractPublicSecurityConfiguration {
   }
 
   private void gdpr(PermissionRole procedureAccessRole) {
-    requestMatchers(
-            GET, ProcedureLibrary.GDPR_VALIDATION_TASK_API + "/{gdprProcedureId}/download-packages")
+    requestMatchers(GET, ProcedureLibrary.GDPR_VALIDATION_TASK_API + Gdpr.DOWNLOAD_PACKAGES_INFO)
         .hasAnyRole(
             procedureAccessRole,
             EmployeePermissionRole.BASE_GDPR_PROCEDURE_READ,
             CitizenPermissionRole.BUND_ID_USER,
             CitizenPermissionRole.MUK_USER);
-    requestMatchers(
-            GET,
-            ProcedureLibrary.GDPR_VALIDATION_TASK_API
-                + "/{gdprProcedureId}/download-packages/{downloadId}")
+    requestMatchers(GET, ProcedureLibrary.GDPR_VALIDATION_TASK_API + Gdpr.DOWNLOAD_PACKAGE)
         .hasAnyRole(
             procedureAccessRole,
             EmployeePermissionRole.BASE_GDPR_PROCEDURE_READ,
@@ -192,19 +189,23 @@ public abstract class AbstractPublicSecurityConfiguration {
             CitizenPermissionRole.MUK_USER);
 
     requestMatchers(POST, ProcedureLibrary.PROCEDURES_API + "/check-file-state-usage")
-        .hasAnyRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_READ);
-    requestMatchers(DELETE, ProcedureLibrary.GDPR_VALIDATION_TASK_API + "/{gdprProcedureId}")
+        .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_READ);
+    requestMatchers(GET, ProcedureLibrary.GDPR_VALIDATION_TASK_API + Gdpr.NOTIFICATION_BANNER)
+        .hasRole(procedureAccessRole);
+    requestMatchers(GET, ProcedureLibrary.GDPR_VALIDATION_TASK_API + Gdpr.BY_GDPR_ID)
+        .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_READ);
+    requestMatchers(POST, ProcedureLibrary.GDPR_VALIDATION_TASK_API)
+        .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_WRITE);
+
+    requestMatchers(DELETE, ProcedureLibrary.GDPR_VALIDATION_TASK_API + Gdpr.BY_GDPR_ID)
         .hasRole(BASE_GDPR_VALIDATION_TASK_CLEANUP);
+    requestMatchers(DELETE, ProcedureLibrary.GDPR_VALIDATION_TASK_API + Gdpr.BUSINESS_PROCEDURE)
+        .hasRole(procedureAccessRole);
 
     requestMatchers(GET, ProcedureLibrary.GDPR_VALIDATION_TASK_API + "/**")
         .hasRole(procedureAccessRole);
     requestMatchers(POST, ProcedureLibrary.GDPR_VALIDATION_TASK_API + "/**")
         .hasRole(procedureAccessRole);
-    requestMatchers(
-            DELETE,
-            ProcedureLibrary.GDPR_VALIDATION_TASK_API
-                + "/{gdprProcedureId}/business-procedures/{businessProcedureId}")
-        .hasRole(procedureAccessRole);
   }
 
   protected void grantAccessToStatistics(PermissionRole procedureAccessRole) {
diff --git a/backend/lib-security-config/src/main/java/de/eshg/rest/service/security/config/BasePublicSecurityConfig.java b/backend/lib-security-config/src/main/java/de/eshg/rest/service/security/config/BasePublicSecurityConfig.java
index a2e36b9dd..40c62abe1 100644
--- a/backend/lib-security-config/src/main/java/de/eshg/rest/service/security/config/BasePublicSecurityConfig.java
+++ b/backend/lib-security-config/src/main/java/de/eshg/rest/service/security/config/BasePublicSecurityConfig.java
@@ -10,6 +10,7 @@ import static org.springframework.http.HttpMethod.*;
 import de.eshg.lib.keycloak.CitizenPermissionRole;
 import de.eshg.lib.keycloak.EmployeePermissionRole;
 import de.eshg.rest.service.security.config.BaseUrls.Base;
+import de.eshg.rest.service.security.config.BaseUrls.Base.Gdpr;
 import org.springframework.stereotype.Component;
 
 @Component
@@ -106,27 +107,23 @@ public final class BasePublicSecurityConfig extends AbstractPublicSecurityConfig
   }
 
   private void gdpr() {
-    requestMatchers(GET, BaseUrls.Base.GDPR_PROCEDURE_API + "/*/central-file-download-package")
+    requestMatchers(GET, BaseUrls.Base.GDPR_PROCEDURE_API + Gdpr.CENTRAL_FILE_DOWNLOAD_PACKAGE)
         .hasAnyRole(
             EmployeePermissionRole.BASE_GDPR_PROCEDURE_READ,
             CitizenPermissionRole.BUND_ID_USER,
             CitizenPermissionRole.MUK_USER);
-    requestMatchers(GET, BaseUrls.Base.GDPR_PROCEDURE_API + "/*/downloads")
-        .hasAnyRole(
-            EmployeePermissionRole.BASE_GDPR_PROCEDURE_REVIEW,
-            CitizenPermissionRole.BUND_ID_USER,
-            CitizenPermissionRole.MUK_USER);
-    requestMatchers(GET, BaseUrls.Base.GDPR_PROCEDURE_API + "/*")
-        .hasAnyRole(
-            EmployeePermissionRole.BASE_GDPR_PROCEDURE_READ,
-            EmployeePermissionRole.BASE_GDPR_PROCEDURE_REVIEW,
-            CitizenPermissionRole.BUND_ID_USER,
-            CitizenPermissionRole.MUK_USER);
     gdprOnlinePortal();
     gdprEmployee();
   }
 
   private void gdprOnlinePortal() {
+    requestMatchers(
+            GET,
+            BaseUrls.Base.GDPR_PROCEDURE_API
+                + BaseUrls.Base.GDPR_PROCEDURE_CITIZEN_PORTAL_URL
+                + "/self/linked-gdpr-procedures")
+        .hasAnyRole(CitizenPermissionRole.BUND_ID_USER, CitizenPermissionRole.MUK_USER);
+
     requestMatchers(
             POST,
             BaseUrls.Base.GDPR_PROCEDURE_API + BaseUrls.Base.GDPR_PROCEDURE_CITIZEN_PORTAL_URL)
@@ -134,21 +131,27 @@ public final class BasePublicSecurityConfig extends AbstractPublicSecurityConfig
   }
 
   private void gdprEmployee() {
-    requestMatchers(GET, BaseUrls.Base.GDPR_PROCEDURE_API + "/*/fileStateIds")
-        .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_REVIEW);
-    requestMatchers(POST, BaseUrls.Base.GDPR_PROCEDURE_API + "/*/downloads")
-        .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_REVIEW);
-    requestMatchers(
-            GET,
-            BaseUrls.Base.GDPR_PROCEDURE_API
-                + BaseUrls.Base.GDPR_PROCEDURE_CITIZEN_PORTAL_URL
-                + "/self/linked-gdpr-procedures")
-        .hasAnyRole(CitizenPermissionRole.BUND_ID_USER, CitizenPermissionRole.MUK_USER);
-    requestMatchers(GET, BaseUrls.Base.GDPR_PROCEDURE_API + "/**")
+    requestMatchers(GET, BaseUrls.Base.GDPR_PROCEDURE_API)
+        .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_READ);
+    requestMatchers(GET, BaseUrls.Base.GDPR_PROCEDURE_API + Gdpr.DETAILS_PAGE)
+        .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_READ);
+    requestMatchers(GET, BaseUrls.Base.GDPR_PROCEDURE_API + Gdpr.REPORT_DOCUMENT)
         .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_READ);
-    requestMatchers(POST, BaseUrls.Base.GDPR_PROCEDURE_API + "/**")
+
+    requestMatchers(PUT, BaseUrls.Base.GDPR_PROCEDURE_API + Gdpr.MATTER_OF_CONCERN)
+        .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_WRITE);
+
+    requestMatchers(POST, BaseUrls.Base.GDPR_PROCEDURE_API)
+        .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_WRITE);
+    requestMatchers(POST, BaseUrls.Base.GDPR_PROCEDURE_API + Gdpr.BY_ID)
+        .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_WRITE);
+    requestMatchers(POST, BaseUrls.Base.GDPR_PROCEDURE_API + Gdpr.REFRESH_STATUS)
+        .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_WRITE);
+    requestMatchers(POST, BaseUrls.Base.GDPR_PROCEDURE_API + Gdpr.START_PROCEDURE)
+        .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_WRITE);
+    requestMatchers(POST, BaseUrls.Base.GDPR_PROCEDURE_API + Gdpr.CANCEL_PROCEDURE)
         .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_WRITE);
-    requestMatchers(PUT, BaseUrls.Base.GDPR_PROCEDURE_API + "/**")
+    requestMatchers(POST, BaseUrls.Base.GDPR_PROCEDURE_API + Gdpr.CLOSE_PROCEDURE)
         .hasRole(EmployeePermissionRole.BASE_GDPR_PROCEDURE_WRITE);
   }
 
diff --git a/backend/lib-statistics/README.md b/backend/lib-statistics/README.md
index b0a30f5ba..c9e0b808d 100644
--- a/backend/lib-statistics/README.md
+++ b/backend/lib-statistics/README.md
@@ -51,8 +51,8 @@ the corresponding `AttributeInfo`. `null` is also a valid value.
 * DATE: java.lang.String in the format yyyy-MMM-dd as returned by java.time.LocalDate.toString()
 * DECIMAL: java.lang.Double (or double) - precision = 10, scale = 4 can be handled
 * INTEGER: java.lang.Integer (or int)
-* TEXT: java.lang.String
-* VALUE_WITH_OPTIONS: java.lang.String, one value of the provided options
+* TEXT: java.lang.String, blank strings will be stored as null
+* VALUE_WITH_OPTIONS: java.lang.String, one value of the provided options, blank strings will be stored as null
 * PROCEDURE_ID: java.util.UUID
 * CENTRAL_FILE_ID_PERSON & CENTRAL_FILE_ID_FACILITY & CONTACT_ID: java.util.UUID
 
diff --git a/backend/lib-statistics/build.gradle b/backend/lib-statistics/build.gradle
index 66de1caff..4c5a8b5ad 100644
--- a/backend/lib-statistics/build.gradle
+++ b/backend/lib-statistics/build.gradle
@@ -17,8 +17,6 @@ dependencies {
     implementation 'org.springframework.boot:spring-boot-autoconfigure'
 
     testImplementation testFixtures(project(':business-module-persistence-commons'))
-    testImplementation "org.testcontainers:junit-jupiter"
-    testImplementation 'org.testcontainers:postgresql'
 
     testFixturesApi project(':test-commons')
     testFixturesApi 'org.springframework.boot:spring-boot-test'
diff --git a/backend/lib-statistics/gradle.lockfile b/backend/lib-statistics/gradle.lockfile
index a6037f24a..35b809823 100644
--- a/backend/lib-statistics/gradle.lockfile
+++ b/backend/lib-statistics/gradle.lockfile
@@ -218,10 +218,9 @@ org.springframework:spring-test:6.2.1=testCompileClasspath,testFixturesCompileCl
 org.springframework:spring-tx:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath
 org.springframework:spring-web:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testFixturesCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath
 org.springframework:spring-webmvc:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath
-org.testcontainers:database-commons:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:jdbc:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:junit-jupiter:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:postgresql:1.20.4=testCompileClasspath,testRuntimeClasspath
+org.testcontainers:database-commons:1.20.4=testRuntimeClasspath
+org.testcontainers:jdbc:1.20.4=testRuntimeClasspath
+org.testcontainers:postgresql:1.20.4=testRuntimeClasspath
 org.testcontainers:testcontainers:1.20.4=testCompileClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath
 org.verapdf:core-jakarta:1.26.5=productionRuntimeClasspath,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath
 org.verapdf:feature-reporting-jakarta:1.26.5=productionRuntimeClasspath,runtimeClasspath,testFixturesRuntimeClasspath,testRuntimeClasspath
diff --git a/backend/lib-statistics/openApi.json b/backend/lib-statistics/openApi.json
new file mode 100644
index 000000000..859e18ac9
--- /dev/null
+++ b/backend/lib-statistics/openApi.json
@@ -0,0 +1,384 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is a the generic API for all business modules",
+    "title" : "The generic statistics library API for business modules",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8080"
+  } ],
+  "paths" : {
+    "/statistics/procedure-ids" : {
+      "post" : {
+        "operationId" : "getProcedureIds",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetProcedureIdsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureIdsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get procedure ids for procedure references",
+        "tags" : [ "StatisticsProcedureReference" ]
+      }
+    },
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "GetProcedureIdsRequest" : {
+        "required" : [ "procedureReferences" ],
+        "type" : "object",
+        "properties" : {
+          "procedureReferences" : {
+            "maxItems" : 200,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetProcedureIdsResponse" : {
+        "required" : [ "referenceToId" ],
+        "type" : "object",
+        "properties" : {
+          "referenceToId" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/backend/lib-statistics/openApi.yaml b/backend/lib-statistics/openApi.yaml
deleted file mode 100644
index f1016c681..000000000
--- a/backend/lib-statistics/openApi.yaml
+++ /dev/null
@@ -1,293 +0,0 @@
-# Copyright 2025 cronn GmbH
-# SPDX-License-Identifier: Apache-2.0
-
-openapi: 3.0.1
-info:
-  description: This is a the generic API for all business modules
-  title: The generic statistics library API for business modules
-  version: "0.1"
-servers:
-- url: http://localhost:8080
-paths:
-  /statistics/procedure-ids:
-    post:
-      operationId: getProcedureIds
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GetProcedureIdsRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureIdsResponse"
-          description: OK
-      summary: Get procedure ids for procedure references
-      tags:
-      - StatisticsProcedureReference
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-components:
-  schemas:
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    GetProcedureIdsRequest:
-      type: object
-      properties:
-        procedureReferences:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 200
-          minItems: 1
-      required:
-      - procedureReferences
-    GetProcedureIdsResponse:
-      type: object
-      properties:
-        referenceToId:
-          type: object
-          additionalProperties:
-            type: string
-            format: uuid
-      required:
-      - referenceToId
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
diff --git a/backend/local-service-directory/openApi.json b/backend/local-service-directory/openApi.json
new file mode 100644
index 000000000..839bfa830
--- /dev/null
+++ b/backend/local-service-directory/openApi.json
@@ -0,0 +1,148 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is the api for Local Service Directory",
+    "title" : "Local Service Directory Api",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8089"
+  } ],
+  "paths" : {
+    "/actor/announce" : {
+      "put" : {
+        "description" : "Only after an actor was provided with a valid certificate, the requirements to communicate with other actors are fulfilled.",
+        "operationId" : "announceActor",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AnnounceRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Actor"
+                }
+              }
+            },
+            "description" : "Returns the announced actor"
+          }
+        },
+        "summary" : "Announce an actor by updating its certificate",
+        "tags" : [ "LsdActor" ]
+      }
+    },
+    "/orgUnit/actors" : {
+      "get" : {
+        "operationId" : "getActors",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetActorsResponse"
+                }
+              }
+            },
+            "description" : "Returns all actors associated with the orgUnit"
+          }
+        },
+        "summary" : "Get all actors of the orgUnit",
+        "tags" : [ "LsdOrgUnit" ]
+      }
+    },
+    "/orgUnit/name" : {
+      "get" : {
+        "operationId" : "getName",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string"
+                }
+              }
+            },
+            "description" : "Returns the name of the orgUnit"
+          }
+        },
+        "summary" : "Get the name of the orgUnit",
+        "tags" : [ "LsdOrgUnit" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "Actor" : {
+        "required" : [ "commonName" ],
+        "type" : "object",
+        "properties" : {
+          "certificate" : {
+            "$ref" : "#/components/schemas/Certificate"
+          },
+          "commonName" : {
+            "type" : "string"
+          },
+          "readableName" : {
+            "type" : "string"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/ActorType"
+          }
+        }
+      },
+      "ActorType" : {
+        "type" : "string",
+        "enum" : [ "EXT", "GM", "FM", "LSD", "MISC", "WEB", "ZA", "ZR" ]
+      },
+      "AnnounceRequest" : {
+        "type" : "object",
+        "properties" : {
+          "certificate" : {
+            "type" : "string"
+          },
+          "readableName" : {
+            "type" : "string"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/ActorType"
+          }
+        }
+      },
+      "Certificate" : {
+        "required" : [ "signatory", "signature", "value" ],
+        "type" : "object",
+        "properties" : {
+          "signatory" : {
+            "type" : "string"
+          },
+          "signature" : {
+            "type" : "string"
+          },
+          "value" : {
+            "type" : "string"
+          }
+        }
+      },
+      "GetActorsResponse" : {
+        "required" : [ "actors" ],
+        "type" : "object",
+        "properties" : {
+          "actors" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Actor"
+            }
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/backend/local-service-directory/openApi.yaml b/backend/local-service-directory/openApi.yaml
deleted file mode 100644
index e0e87a9b9..000000000
--- a/backend/local-service-directory/openApi.yaml
+++ /dev/null
@@ -1,115 +0,0 @@
-# Copyright 2025 SCOOP Software GmbH, cronn GmbH
-# SPDX-License-Identifier: Apache-2.0
-
-openapi: 3.0.1
-info:
-  description: This is the api for Local Service Directory
-  title: Local Service Directory Api
-  version: "0.1"
-servers:
-- url: http://localhost:8089
-paths:
-  /actor/announce:
-    put:
-      description: "Only after an actor was provided with a valid certificate, the\
-        \ requirements to communicate with other actors are fulfilled."
-      operationId: announceActor
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AnnounceRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Actor"
-          description: Returns the announced actor
-      summary: Announce an actor by updating its certificate
-      tags:
-      - LsdActor
-  /orgUnit/actors:
-    get:
-      operationId: getActors
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetActorsResponse"
-          description: Returns all actors associated with the orgUnit
-      summary: Get all actors of the orgUnit
-      tags:
-      - LsdOrgUnit
-  /orgUnit/name:
-    get:
-      operationId: getName
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-          description: Returns the name of the orgUnit
-      summary: Get the name of the orgUnit
-      tags:
-      - LsdOrgUnit
-components:
-  schemas:
-    Actor:
-      type: object
-      properties:
-        certificate:
-          $ref: "#/components/schemas/Certificate"
-        commonName:
-          type: string
-        readableName:
-          type: string
-        type:
-          $ref: "#/components/schemas/ActorType"
-      required:
-      - commonName
-    ActorType:
-      type: string
-      enum:
-      - EXT
-      - GM
-      - FM
-      - LSD
-      - MISC
-      - WEB
-      - ZA
-      - ZR
-    AnnounceRequest:
-      type: object
-      properties:
-        certificate:
-          type: string
-        readableName:
-          type: string
-        type:
-          $ref: "#/components/schemas/ActorType"
-    Certificate:
-      type: object
-      properties:
-        signatory:
-          type: string
-        signature:
-          type: string
-        value:
-          type: string
-      required:
-      - signatory
-      - signature
-      - value
-    GetActorsResponse:
-      type: object
-      properties:
-        actors:
-          type: array
-          items:
-            $ref: "#/components/schemas/Actor"
-      required:
-      - actors
diff --git a/backend/measles-protection/openApi.json b/backend/measles-protection/openApi.json
new file mode 100644
index 000000000..9ea20e99d
--- /dev/null
+++ b/backend/measles-protection/openApi.json
@@ -0,0 +1,7579 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is the API for the measles-protection module",
+    "title" : "Measles Protection Module API",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8086"
+  } ],
+  "paths" : {
+    "/appointment-blocks/appointment-block-groups" : {
+      "get" : {
+        "operationId" : "getAppointmentBlockGroups",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/AppointmentBlockSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAppointmentBlockGroupsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all appointment block groups.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-blocks/daily-appointment-block-groups" : {
+      "post" : {
+        "operationId" : "createDailyAppointmentBlocksForGroup",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CreateAppointmentBlockGroupResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create appointment group with blocks for week days.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-blocks/daily-appointment-block-groups/validate" : {
+      "post" : {
+        "operationId" : "validateDailyAppointmentBlocksForGroup",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ValidateAppointmentBlockGroupResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create appointment group with blocks for week days.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-blocks/free-appointments" : {
+      "get" : {
+        "operationId" : "getFreeAppointments",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "appointmentType",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "earliestDate",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "physicianId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFreeAppointmentsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get free appointments for an appointment type.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-types" : {
+      "get" : {
+        "operationId" : "getAppointmentTypes",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAppointmentTypesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets all Appointment Types",
+        "tags" : [ "AppointmentType" ]
+      }
+    },
+    "/appointment-types/{id}" : {
+      "get" : {
+        "operationId" : "getOneAppointmentType",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AppointmentTypeConfig"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets one Appointment Type by ID",
+        "tags" : [ "AppointmentType" ]
+      },
+      "put" : {
+        "operationId" : "updateAppointmentType",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateAppointmentTypeRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AppointmentTypeConfig"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modifies an existing Appointment Type",
+        "tags" : [ "AppointmentType" ]
+      }
+    },
+    "/approval-requests/{approvalRequestId}" : {
+      "get" : {
+        "operationId" : "getApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/approval-requests/{approvalRequestId}/decision" : {
+      "put" : {
+        "operationId" : "decideApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/Decision"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/archiving/config" : {
+      "get" : {
+        "operationId" : "getArchivingConfiguration",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetArchivingConfigurationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get archiving configuration",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/procedures" : {
+      "get" : {
+        "operationId" : "getArchivableProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `procedureType` is submitted, only procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `closedAtDay` is set, only procedures are returned which were closed at that date\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "closedAtDay",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `defaultArchivingRelevance` is submitted, only procedures are returned which have one of the submitted default archiving relevances.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "defaultArchivingRelevance",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ArchivingRelevance"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CLOSED_AT`: Sorting by closedAt attribute\n- `PROCEDURE_TYPE`: Sorting by procedureType attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetArchivableProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetArchivableProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetArchivableProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get archivable procedures",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/procedures/bulk-update-archiving-relevance" : {
+      "post" : {
+        "operationId" : "bulkUpdateProceduresArchivingRelevance",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/BulkUpdateProceduresArchivingRelevanceRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/BulkUpdateProceduresArchivingRelevanceResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Bulk update procedures archiving relevance",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/relevant-procedures" : {
+      "get" : {
+        "operationId" : "getRelevantArchivableProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `closedAtDay` is set, only procedures are returned which were closed at that date\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "closedAtDay",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `exported` is true, only procedures are returned which have already been exported.\n- If `exported` is false, only procedures are returned which have not been exported, yet.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "exported",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CLOSED_AT`: Sorting by closedAt attribute\n- `EXPORTED_AT`: Sorting by exportedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetRelevantArchivableProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetRelevantArchivableProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRelevantArchivableProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get relevant archivable procedures",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/relevant-procedures/export" : {
+      "post" : {
+        "operationId" : "exportRelevantProcedures",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ExportArchivingRelevantProceduresRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/feature-toggles" : {
+      "get" : {
+        "operationId" : "getFeatureToggles",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetMeaslesProtectionFeatureTogglesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "MeaslesProtectionFeatureToggles" ]
+      }
+    },
+    "/files/{fileId}" : {
+      "delete" : {
+        "operationId" : "deleteFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Soft deletes the specified file",
+        "tags" : [ "File" ]
+      },
+      "get" : {
+        "operationId" : "getFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/Image"
+                  }, {
+                    "$ref" : "#/components/schemas/Mail"
+                  }, {
+                    "$ref" : "#/components/schemas/Pdf"
+                  } ]
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Retrieves the meta data of the specified file",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/deletion-request" : {
+      "post" : {
+        "operationId" : "requestFileDeletion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateApprovalRequestRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Request deletion of a file entry",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/download" : {
+      "get" : {
+        "operationId" : "downloadFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/meta-data" : {
+      "put" : {
+        "operationId" : "updateFileMetaData",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "oneOf" : [ {
+                  "$ref" : "#/components/schemas/ImageMetaData"
+                }, {
+                  "$ref" : "#/components/schemas/MailMetaData"
+                }, {
+                  "$ref" : "#/components/schemas/PdfMetaData"
+                } ]
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/Image"
+                  }, {
+                    "$ref" : "#/components/schemas/Mail"
+                  }, {
+                    "$ref" : "#/components/schemas/Pdf"
+                  } ]
+                }
+              }
+            },
+            "description" : "Updated file"
+          }
+        },
+        "summary" : "Updates the meta data of the specified file",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/meta-data/history" : {
+      "get" : {
+        "operationId" : "getMetaDataHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetMetaDataHistoryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "File" ]
+      }
+    },
+    "/gdpr-validation-tasks" : {
+      "get" : {
+        "operationId" : "getAllGdprValidationTasks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "status",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAllValidationTasksResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all GDPR validation tasks",
+        "tags" : [ "GdprValidationTask" ]
+      },
+      "post" : {
+        "operationId" : "addGdprValidationTask",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddGdprValidationTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "Add a GDPR validation task"
+          }
+        },
+        "summary" : "Add a GDPR validation task",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/notification-banner" : {
+      "get" : {
+        "operationId" : "getGdprNotificationBanner",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprNotificationBannerResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get data for GDPR notification banner",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}" : {
+      "delete" : {
+        "operationId" : "deleteGdprValidationTaskAndDownloadPackages",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/DeleteDownloadPackagesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the GDPR validation task with gdprProcedureId and GDPR download packages with ids from request",
+        "tags" : [ "GdprValidationTask" ]
+      },
+      "get" : {
+        "operationId" : "getGdprValidationTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprValidationTaskResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get Gdpr Validation Task by Gdpr Procedure Id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures" : {
+      "get" : {
+        "operationId" : "getGdprValidationTaskDetails",
+        "parameters" : [ {
+          "description" : "The Id of the GDPR procedure.",
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprValidationTaskDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a GDPR validation task by id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}" : {
+      "delete" : {
+        "operationId" : "deleteBusinessProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "businessProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the businessProcedure with businessProcedureId for validationTask with gdprProcedureId with type right of erasure",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}/downloadPackage" : {
+      "post" : {
+        "operationId" : "addDownloadPackage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "businessProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Creates a downloadPackage for validationTask with gdprProcedureId with the data from the procedure with businessProcedureId",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/close" : {
+      "post" : {
+        "operationId" : "closeGdprValidationTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Close a GDPR validation task"
+          }
+        },
+        "summary" : "Close a GDPR validation task",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/download-packages" : {
+      "get" : {
+        "operationId" : "getGdprDownloadPackagesInfo",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprDownloadPackagesInfoResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get approved Gdpr Download Packages by Gdpr Procedure Id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}" : {
+      "get" : {
+        "operationId" : "getGdprDownloadPackage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "downloadId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get Gdpr Download Package by the gdprProcedureId and its downloadId",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/inbox-procedures" : {
+      "get" : {
+        "description" : "Get all inbox procedures with filter, sort, and pagination options\n",
+        "operationId" : "getInboxProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `inboxProcedureType` is submitted, only inbox procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "inboxProcedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If true, inbox procedures which have no type are returned in addition to the types specified by 'inboxProcedureType'.\n- If false or not submitted, inbox procedures which have no type are not returned.\n",
+          "in" : "query",
+          "name" : "includeUntyped",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `inboxProcedureStatus` is submitted, only inbox procedures are returned which have one of the submitted statuses.\n- If not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "inboxProcedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InboxProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CREATED_AT`: Sorting by createdAt attribute\n- `MODIFIED_AT`: Sorting by modifiedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetInboxProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetInboxProceduresSortOrder"
+          }
+        }, {
+          "description" : "Number of the requested page",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        }, {
+          "description" : "Amount of requested inbox procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInboxProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get inbox procedures",
+        "tags" : [ "InboxProcedure" ]
+      },
+      "post" : {
+        "description" : "Creates an inbox procedure with an optional file upload.\n\n       Permitted file formats:\n        - Image formats: jpeg, png\n        - PDF formats: pdf/a\n        - Mail formats: eml",
+        "operationId" : "addInboxProcedure",
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "createInboxProcedureRequest" : {
+                    "$ref" : "#/components/schemas/CreateInboxProcedureRequest"
+                  },
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  }
+                },
+                "required" : [ "createInboxProcedureRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InboxProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add inbox procedure",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/inbox-procedures/{inboxProcedureId}" : {
+      "get" : {
+        "operationId" : "getInboxProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inboxProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInboxProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get inbox procedure with detailed information",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/inbox-procedures/{inboxProcedureId}/inbox-procedure-status" : {
+      "put" : {
+        "operationId" : "updateInboxProcedureStatus",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inboxProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InboxProcedureStatus"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InboxProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update status of inbox procedure",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/organisations/documents/privacy-notice" : {
+      "get" : {
+        "operationId" : "getPrivacyNotice",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the privacy-notice document.",
+        "tags" : [ "OrganisationPortal" ]
+      }
+    },
+    "/organisations/documents/privacy-policy" : {
+      "get" : {
+        "operationId" : "getPrivacyPolicy",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the privacy-policy document.",
+        "tags" : [ "OrganisationPortal" ]
+      }
+    },
+    "/organisations/report" : {
+      "post" : {
+        "operationId" : "report",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ReportCaseRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "A method to report multiple affected persons belonging to a facility and open draft cases",
+        "tags" : [ "OrganisationPortal" ]
+      }
+    },
+    "/procedure-metrics" : {
+      "get" : {
+        "operationId" : "getProcedureMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of procedures"
+          }
+        },
+        "summary" : "Get procedure metrics for procedures created in the given time range",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures" : {
+      "get" : {
+        "description" : "GET operation for retrieving basic information of procedures for the procedure overview.\n",
+        "operationId" : "getProcedures_1",
+        "parameters" : [ {
+          "description" : "Only procedures are returned where the assigneeId of at least one task equals the `assignedToId`.\nIf not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "assignedToId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureType` is submitted, only procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CREATED_AT`: Sorting by createdAt attribute\n- `MODIFIED_AT`: Sorting by modifiedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/check-file-state-usage" : {
+      "post" : {
+        "operationId" : "checkFileStateUsage",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CheckFileStateUsageRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CheckFileStateUsageResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Identify which file state IDs are still used by active procedures.",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/recent" : {
+      "get" : {
+        "operationId" : "getRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "userId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/recent/self" : {
+      "get" : {
+        "operationId" : "getSelfRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the current users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for the current user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/search" : {
+      "get" : {
+        "operationId" : "searchProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "query",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}" : {
+      "get" : {
+        "operationId" : "getDetailedProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetDetailedProcedureResponse"
+                }
+              }
+            },
+            "description" : "a single procedure with details"
+          }
+        },
+        "summary" : "Get a single procedure with details",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}/approval-requests" : {
+      "get" : {
+        "operationId" : "getApprovalRequests",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureApprovalRequestsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all approval requests related to this procedure",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}/files" : {
+      "get" : {
+        "description" : "This returns all relevant (highest version per keydocument type and non-deleted) files sorted by descending creation date.\nThat is:\n * if an progress entry has a keydocument type set, then its files are only returned if it also has the highest keydocument version of the respective key document type.\n * if an progress entry does not have a keydocument type, then its files are always returned.\n",
+        "operationId" : "getProcedureFileDetails",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureFileDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get relevant procedure files",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries" : {
+      "get" : {
+        "operationId" : "getProgressEntries",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Filter on progressEntryType",
+          "in" : "query",
+          "name" : "progressEntryType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        }, {
+          "description" : "Filter on child class of progressEntry",
+          "in" : "query",
+          "name" : "progressEntryClass",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProgressEntryClass"
+            }
+          }
+        }, {
+          "description" : "If `initiatedBy` is set with a `userId` then the following is returned:\n* Only progressEntries with `createdBy`=`userId` in case `ManualProgressEntry` or `ProcessedInboxProgressEntry`\n* Only progressEntries with `triggeredBy`=`userId` in case `SystemProgressEntry`\n",
+          "in" : "query",
+          "name" : "initiatedBy",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "description" : "Filter on triggerType.\nIf this is set, only SystemProgressEntries are returned since only SystemProgressEntries have this attribute.\n",
+          "in" : "query",
+          "name" : "triggerType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TriggerType"
+            }
+          }
+        }, {
+          "description" : "Sorting on either modifiedAt or createdAt ",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProgressEntrySortBy"
+          }
+        }, {
+          "description" : "Sorting order. Possible options  \"ASC\" for ascending and \"DESC\" for descending.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProgressEntrySortOrder"
+          }
+        }, {
+          "description" : "Maximum number of elements to return",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Index of page to be returned",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProgressEntriesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get list of procedure's progress entries",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "post" : {
+        "description" : "Creates a manual progress entry with an optional file upload.\n\n       Permitted file formats:\n        - Image formats: jpeg, png\n        - PDF formats: pdf/a\n        - Mail formats: eml",
+        "operationId" : "addProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "createManualProgressEntryRequest" : {
+                    "$ref" : "#/components/schemas/CreateManualProgressEntryRequest"
+                  },
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  }
+                },
+                "required" : [ "createManualProgressEntryRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ManualProgressEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}" : {
+      "delete" : {
+        "operationId" : "removeProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Remove a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "get" : {
+        "operationId" : "getProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProgressEntryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a progress entry",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "patch" : {
+        "operationId" : "patchProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchManualProgressEntryRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ManualProgressEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modify a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}/deletion-request" : {
+      "post" : {
+        "operationId" : "requestProgressEntryDeletion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateApprovalRequestRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Request deletion of a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}/history" : {
+      "get" : {
+        "operationId" : "getManualProgressEntryHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetManualProgressEntryHistoryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the history of a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/protection-procedures" : {
+      "get" : {
+        "operationId" : "getProcedures",
+        "parameters" : [ {
+          "description" : "The page to be returned",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        }, {
+          "description" : "The number of items to be returned",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetMeaslesProtectionProceduresSortBy"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetMeaslesProtectionProceduresSortOrder"
+          }
+        }, {
+          "description" : "Filter logic:\n- If 'creationDate' is submitted, only measles procedures which were created at the provided date are returned.\n- If no 'creationDate' is submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "creationDate",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If 'birthday' is submitted, only measles procedures with affected persons born on the provided date are returned.\n- If no 'birthday' is submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "birthday",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If 'facilityType' is submitted, only measles procedures are returned which have one of the provided types.\n- If no 'facilityType' is submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "facilityType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/MPFacilityType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If 'caseStatus' is submitted, only measles procedures are returned which have one of the provided types.\n- If no 'caseStatus' is submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "caseStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CaseStatus"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If 'procedureStatus' is submitted, only measles procedures are returned which have one of the provided types.\n- If no 'procedureStatus' is submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If 'roleStatus' is submitted, only measles procedures are returned which have one of the provided types.\n- If no 'roleStatus' is submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "roleStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/RoleStatus"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If true, only measles procedures are returned which have an appointment.\n- If false, only measles procedures are returned which do not have an appointment.\n- If null, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "hasAppointment",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "Filter logic:\n- If 'measure' is submitted, only measles procedures are returned which have one of the provided types.\n- If no 'measure' is submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "measure",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Measure"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If 'proofRequestSent' is submitted, only measles procedures are returned which have one of the provided types.\n- If no 'proofRequestSent' is submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "proofRequestSent",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProofRequestSent"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If 'proofSubmissionResult' is submitted, only measles procedures are returned which have one of the provided types.\n- If no 'proofSubmissionResult' is submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "proofSubmissionResult",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/SubmissionResult"
+            }
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetMeaslesProtectionProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all open measles protection procedures.",
+        "tags" : [ "ProtectionProcedure" ]
+      }
+    },
+    "/protection-procedures/draft/affected-person" : {
+      "post" : {
+        "operationId" : "createPerson",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreatePersonRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CreatePersonResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a draft measles protection procedure with an affected person.",
+        "tags" : [ "DraftProtectionProcedure" ]
+      }
+    },
+    "/protection-procedures/draft/{id}/custodians" : {
+      "post" : {
+        "operationId" : "addCustodian",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddCustodianRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddCustodianResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add custodian to a draft measles protection procedure.",
+        "tags" : [ "DraftProtectionProcedure" ]
+      }
+    },
+    "/protection-procedures/draft/{id}/facilities" : {
+      "post" : {
+        "operationId" : "addFacility",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddFacilityRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddFacilityResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add facility to a draft measles protection procedure.",
+        "tags" : [ "DraftProtectionProcedure" ]
+      }
+    },
+    "/protection-procedures/draft/{id}/open" : {
+      "post" : {
+        "operationId" : "openProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/OpenProcedureRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/OpenProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Finalize draft of measles protection procedure.",
+        "tags" : [ "DraftProtectionProcedure" ]
+      }
+    },
+    "/protection-procedures/for-person" : {
+      "post" : {
+        "operationId" : "getProceduresForPerson",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetProceduresForPersonRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresForPersonResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all measles protection procedures for a given person.",
+        "tags" : [ "ProtectionProcedure" ]
+      }
+    },
+    "/protection-procedures/free-appointments" : {
+      "get" : {
+        "operationId" : "getFreeMeaslesProtectionAppointments",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFreeAppointmentsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get free appointments.",
+        "tags" : [ "AppointmentBooking" ]
+      }
+    },
+    "/protection-procedures/{id}" : {
+      "delete" : {
+        "operationId" : "deleteProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete measles protection procedure by id.",
+        "tags" : [ "ProtectionProcedure" ]
+      },
+      "get" : {
+        "operationId" : "getProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/DraftMeaslesProcedure"
+                  }, {
+                    "$ref" : "#/components/schemas/MeaslesProtectionProcedure"
+                  } ]
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get measles protection procedure by id.",
+        "tags" : [ "ProtectionProcedure" ]
+      },
+      "put" : {
+        "operationId" : "updateProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateProcedureRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/DraftMeaslesProcedure"
+                  }, {
+                    "$ref" : "#/components/schemas/MeaslesProtectionProcedure"
+                  } ]
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update a measles protection procedure.",
+        "tags" : [ "ProtectionProcedure" ]
+      }
+    },
+    "/protection-procedures/{id}/access-restriction" : {
+      "patch" : {
+        "operationId" : "updateAccessRestriction",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateAccessRestriction"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AccessRestriction"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update an access restriction of a procedure",
+        "tags" : [ "AccessRestriction" ]
+      },
+      "post" : {
+        "operationId" : "createAccessRestriction",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateAccessRestriction"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AccessRestriction"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Enforce an access restriction",
+        "tags" : [ "AccessRestriction" ]
+      }
+    },
+    "/protection-procedures/{id}/access-restriction/letters" : {
+      "post" : {
+        "operationId" : "createAccessRestrictionLetter",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  },
+                  "request" : {
+                    "$ref" : "#/components/schemas/CreateAccessRestrictionLetter"
+                  }
+                },
+                "required" : [ "request" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AccessRestrictionLetter"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create or attach an access restriction letter.",
+        "tags" : [ "AccessRestriction" ]
+      }
+    },
+    "/protection-procedures/{id}/case-status" : {
+      "patch" : {
+        "operationId" : "updateCaseStatus",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CaseStatus"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/DraftMeaslesProcedure"
+                  }, {
+                    "$ref" : "#/components/schemas/MeaslesProtectionProcedure"
+                  } ]
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update the case status of a measles protection procedure.",
+        "tags" : [ "ProtectionProcedure" ]
+      }
+    },
+    "/protection-procedures/{id}/monetary-fines" : {
+      "post" : {
+        "operationId" : "createMonetaryFine",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateMonetaryFine"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/MonetaryFine"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Document a monetary fine entry.",
+        "tags" : [ "MonetaryFine" ]
+      }
+    },
+    "/protection-procedures/{id}/monetary-fines/{monetaryFineId}" : {
+      "patch" : {
+        "operationId" : "updateMonetaryFine",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "monetaryFineId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateMonetaryFine"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/MonetaryFine"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update a monetary fine.",
+        "tags" : [ "MonetaryFine" ]
+      }
+    },
+    "/protection-procedures/{id}/proof-submissions" : {
+      "post" : {
+        "operationId" : "createProofSubmission",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  },
+                  "request" : {
+                    "$ref" : "#/components/schemas/CreateProofSubmission"
+                  }
+                },
+                "required" : [ "request" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ProofSubmission"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add a proof submission to a procedure",
+        "tags" : [ "ProofSubmission" ]
+      }
+    },
+    "/protection-procedures/{id}/proof-submissions/letters" : {
+      "get" : {
+        "operationId" : "getProofRequestLetters",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProofRequestLettersResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "List proof submission letters",
+        "tags" : [ "ProofRequestLetter" ]
+      }
+    },
+    "/protection-procedures/{id}/proof-submissions/letters/create" : {
+      "post" : {
+        "operationId" : "createProofRequestLetter",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateProofRequestLetter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "byte"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a proof request letter",
+        "tags" : [ "ProofRequestLetter" ]
+      }
+    },
+    "/protection-procedures/{id}/proof-submissions/letters/save" : {
+      "post" : {
+        "operationId" : "saveProofRequestLetter",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SaveProofRequestLetter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create and save a proof request letter",
+        "tags" : [ "ProofRequestLetter" ]
+      }
+    },
+    "/protection-procedures/{id}/proof-submissions/{proofSubmissionId}" : {
+      "patch" : {
+        "operationId" : "updateProofSubmission",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "proofSubmissionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateProofSubmission"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ProofSubmission"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update a proof submission of a procedure",
+        "tags" : [ "ProofSubmission" ]
+      }
+    },
+    "/protection-procedures/{procedureId}/book-appointment" : {
+      "post" : {
+        "operationId" : "bookAppointmentForProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/BookAppointmentRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/MeaslesProtectionProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Book or update an appointment for a given procedure.",
+        "tags" : [ "AppointmentBooking" ]
+      }
+    },
+    "/protection-procedures/{procedureId}/close" : {
+      "put" : {
+        "operationId" : "close",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Close measles protection procedure.",
+        "tags" : [ "StatusTransition" ]
+      }
+    },
+    "/protection-procedures/{procedureId}/delete-appointment" : {
+      "delete" : {
+        "operationId" : "deleteAppointmentForProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/MeaslesProtectionProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Remove an appointment for a given procedure.",
+        "tags" : [ "AppointmentBooking" ]
+      }
+    },
+    "/protection-procedures/{procedureId}/reopen" : {
+      "put" : {
+        "operationId" : "reopen",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Reopen measles protection procedure.",
+        "tags" : [ "StatusTransition" ]
+      }
+    },
+    "/task-metrics" : {
+      "get" : {
+        "operationId" : "getTaskMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTaskMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of a specific procedure type"
+          }
+        },
+        "summary" : "Get tasks metrics for a procedure type of a business module for procedures created in the given time range",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks" : {
+      "get" : {
+        "operationId" : "getTasks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "assigneeId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "assignedById",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "taskTypes",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "taskStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortBy"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortOrder"
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TaskResponse"
+                }
+              }
+            },
+            "description" : "tasks"
+          }
+        },
+        "summary" : "Get tasks",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/dashboard" : {
+      "get" : {
+        "operationId" : "getTasksForDashboard",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TaskResponse"
+                }
+              }
+            },
+            "description" : "tasks"
+          }
+        },
+        "summary" : "Get tasks for the dashboard",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/team-view" : {
+      "get" : {
+        "description" : "Returns all _open_ tasks per module group member.",
+        "operationId" : "getTasksByAssignee",
+        "parameters" : [ {
+          "description" : "If provided, `assignee` must be member of the module group.\nIf not provided, all tasks for all members of the module group are returned.\n",
+          "in" : "query",
+          "name" : "assigneeId",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTaskByUserResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/{taskId}/assignment" : {
+      "put" : {
+        "operationId" : "assignTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "taskId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AssignTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Task"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/{taskId}/self-assignment" : {
+      "put" : {
+        "operationId" : "selfAssignTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "taskId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SelfAssignTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Task"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/test-helper/archiving-job" : {
+      "post" : {
+        "operationId" : "runArchivingJob",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/audit-log-storage" : {
+      "delete" : {
+        "operationId" : "clearAuditLogStorageDirectory",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/enabled-new-features/{featureToEnable}" : {
+      "post" : {
+        "operationId" : "enableNewFeature",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "featureToEnable",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/MeaslesProtectionFeature"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population/procedures" : {
+      "post" : {
+        "operationId" : "populateMeaslesProtectionProcedures",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PopulationRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/MeaslesProtectionProcedurePopulationResult"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "AbstractFile" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFileReference"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "createdAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "fileName" : {
+              "type" : "string"
+            },
+            "fileSizeBytes" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "fileType" : {
+              "$ref" : "#/components/schemas/FileType"
+            },
+            "locked" : {
+              "type" : "boolean"
+            },
+            "modifiedAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/ApprovalRequestEntity"
+        } ]
+      },
+      "AbstractFileReference" : {
+        "required" : [ "@type", "deletable", "deleted", "fileId" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "deletable" : {
+            "type" : "boolean"
+          },
+          "deleted" : {
+            "type" : "boolean"
+          },
+          "fileId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AccessRestriction" : {
+        "required" : [ "restrictionIssuedDate", "restrictionStartDate" ],
+        "type" : "object",
+        "properties" : {
+          "letters" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AccessRestrictionLetter"
+            }
+          },
+          "restrictionIssuedDate" : {
+            "type" : "string",
+            "description" : "The date when the access restriction was issued.",
+            "format" : "date",
+            "example" : "2024-02-03"
+          },
+          "restrictionStartDate" : {
+            "type" : "string",
+            "description" : "The date when the access restriction becomes effective.",
+            "format" : "date",
+            "example" : "2024-02-10"
+          },
+          "restrictionTerminationDate" : {
+            "type" : "string",
+            "description" : "The date when the access restriction is terminated.",
+            "format" : "date",
+            "example" : "2024-02-28"
+          }
+        }
+      },
+      "AccessRestrictionLetter" : {
+        "required" : [ "externalId", "recipientId", "sentAt" ],
+        "type" : "object",
+        "properties" : {
+          "documentFileId" : {
+            "type" : "string",
+            "description" : "The id of the document related to the access restriction letter.",
+            "format" : "uuid"
+          },
+          "externalId" : {
+            "type" : "string",
+            "description" : "The unique identifier for the access restriction letter.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "recipientId" : {
+            "type" : "string",
+            "description" : "The unique identifier for the recipient of the restriction letter.",
+            "format" : "uuid"
+          },
+          "sentAt" : {
+            "type" : "string",
+            "description" : "The date and time when the access restriction letter was sent.",
+            "format" : "date",
+            "example" : "2024-06-03"
+          }
+        }
+      },
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "AddCustodianRequest" : {
+        "required" : [ "custodian" ],
+        "type" : "object",
+        "properties" : {
+          "custodian" : {
+            "$ref" : "#/components/schemas/CustodianDetails"
+          }
+        }
+      },
+      "AddCustodianResponse" : {
+        "required" : [ "custodian", "id" ],
+        "type" : "object",
+        "properties" : {
+          "custodian" : {
+            "$ref" : "#/components/schemas/CustodianDetails"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "AddFacilityFileStateRequest" : {
+        "required" : [ "dataOrigin", "name" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "referenceFacilityId" : {
+            "type" : "string",
+            "description" : "Id of a referenceFacility. If this Id is provided, a new File State with the input attributes is created for that referenceFacility, regardless of any matching logic.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          }
+        },
+        "description" : "Request used for adding facilities from non-external sources"
+      },
+      "AddFacilityRequest" : {
+        "required" : [ "facility", "type" ],
+        "type" : "object",
+        "properties" : {
+          "facility" : {
+            "$ref" : "#/components/schemas/AddFacilityFileStateRequest"
+          },
+          "otherFacilityTypeInformation" : {
+            "type" : "string"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/MPFacilityType"
+          }
+        }
+      },
+      "AddFacilityResponse" : {
+        "required" : [ "facility", "id" ],
+        "type" : "object",
+        "properties" : {
+          "facility" : {
+            "$ref" : "#/components/schemas/Facility"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "AddGdprValidationTaskRequest" : {
+        "required" : [ "gdprProcedureId", "startedAt", "type" ],
+        "type" : "object",
+        "properties" : {
+          "gdprProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "startedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }
+      },
+      "AddPersonFileStateRequest" : {
+        "required" : [ "dataOrigin", "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "The date of birth of the Person.",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Person.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Person.",
+            "example" : "Doe"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name at birth of the Person.",
+            "example" : "Smith"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Person.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The place of birth (without country) of the Person.",
+            "example" : "Berlin"
+          },
+          "referencePersonId" : {
+            "type" : "string",
+            "description" : "Id of a referencePerson. If this Id is provided, a new File State with the input attributes is created for that referencePerson, regardless of any matching logic.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a Person.",
+            "example" : "Prof. Dr."
+          }
+        },
+        "description" : "Request used for adding persons from non-external sources"
+      },
+      "Address" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AffectedPerson" : {
+        "required" : [ "address", "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "Date of birth of the affected person.",
+            "format" : "date",
+            "example" : "2018-07-26"
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "type" : "string",
+            "description" : "First name of the affected person.",
+            "example" : "Susanne"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "lastName" : {
+            "type" : "string",
+            "description" : "Last name of the affected person.",
+            "example" : "Gerber"
+          },
+          "nameAtBirth" : {
+            "type" : "string"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "type" : "string"
+          },
+          "roleStatus" : {
+            "$ref" : "#/components/schemas/RoleStatus"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "type" : "string"
+          }
+        },
+        "description" : "Represents the individual the facility reports on and is the integral part of the procedure."
+      },
+      "AffectedPersonDetails" : {
+        "required" : [ "address", "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "custodians" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CustodianDetails"
+            }
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "Date of birth of the affected person.",
+            "format" : "date",
+            "example" : "2018-07-26"
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "type" : "string",
+            "description" : "First name of the affected person.",
+            "example" : "Susanne"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "type" : "string",
+            "description" : "Last name of the affected person.",
+            "example" : "Gerber"
+          },
+          "nameAtBirth" : {
+            "type" : "string"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "type" : "string"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "type" : "string"
+          }
+        },
+        "description" : "Represents the individual the facility reports on and is the integral part of the procedure."
+      },
+      "AffectedPersonSupplementalData" : {
+        "type" : "object",
+        "properties" : {
+          "reportData" : {
+            "$ref" : "#/components/schemas/ReportData"
+          },
+          "roleStatus" : {
+            "$ref" : "#/components/schemas/RoleStatus"
+          }
+        },
+        "description" : "Used to include reporting data and role status with draft procedures submitted via the citizen portal measles reporting form."
+      },
+      "Appointment" : {
+        "required" : [ "end", "start" ],
+        "type" : "object",
+        "properties" : {
+          "end" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "start" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        },
+        "description" : "Appointment of a procedure."
+      },
+      "AppointmentBlockSortKey" : {
+        "type" : "string",
+        "enum" : [ "START", "END" ]
+      },
+      "AppointmentLocation" : {
+        "required" : [ "id", "name" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "AppointmentType" : {
+        "type" : "string",
+        "enum" : [ "CONSULTATION", "VACCINATION", "REGULAR_EXAMINATION", "CAN_CHILD", "ENTRY_LEVEL", "SPECIAL_NEEDS", "PROOF_SUBMISSION", "HIV_STI_CONSULTATION", "SEX_WORK", "RESULTS_REVIEW", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "AppointmentTypeConfig" : {
+        "required" : [ "appointmentTypeDto", "id", "standardDurationInMinutes" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentTypeDto" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "standardDurationInMinutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "ApprovalRequest" : {
+        "required" : [ "approvalRequestId", "createdAt", "createdBy", "operation", "reason", "status" ],
+        "type" : "object",
+        "properties" : {
+          "approvalRequestId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decidedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "decidedBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decision" : {
+            "$ref" : "#/components/schemas/Decision"
+          },
+          "entity" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/ManualProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "operation" : {
+            "$ref" : "#/components/schemas/Operation"
+          },
+          "reason" : {
+            "type" : "string"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ApprovalRequestStatus"
+          }
+        }
+      },
+      "ApprovalRequestEntity" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ApprovalRequestStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "ArchivingDetails" : {
+        "required" : [ "archivingPeriodYears", "archivingRelevance" ],
+        "type" : "object",
+        "properties" : {
+          "archivingPeriodYears" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          }
+        }
+      },
+      "ArchivingRelevance" : {
+        "type" : "string",
+        "enum" : [ "DEFAULT", "RELEVANT", "IRRELEVANT" ]
+      },
+      "ArchivingRelevanceSettings" : {
+        "required" : [ "archivingRelevance", "defaultArchivingRelevance" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "defaultArchivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          }
+        }
+      },
+      "AssignTaskRequest" : {
+        "required" : [ "assignee", "taskVersion" ],
+        "type" : "object",
+        "properties" : {
+          "assignee" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "taskVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "BookAppointmentRequest" : {
+        "required" : [ "end", "start" ],
+        "type" : "object",
+        "properties" : {
+          "end" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "start" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "BulkUpdateProceduresArchivingRelevanceRequest" : {
+        "required" : [ "archivingRelevance", "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "BulkUpdateProceduresArchivingRelevanceResponse" : {
+        "required" : [ "archivingRelevance", "failedProcedures", "updatedProcedures" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "failedProcedures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "updatedProcedures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "BusinessModule" : {
+        "type" : "string",
+        "enum" : [ "INSPECTION", "SCHOOL_ENTRY", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY", "DENTAL", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "BusinessProcedureInclusionStatus" : {
+        "type" : "string",
+        "enum" : [ "INCLUDED", "UNDECIDED" ]
+      },
+      "BusinessProcedureWithInclusionStatus" : {
+        "required" : [ "businessProcedure", "inclusionStatus" ],
+        "type" : "object",
+        "properties" : {
+          "businessProcedure" : {
+            "$ref" : "#/components/schemas/Procedure"
+          },
+          "inclusionStatus" : {
+            "$ref" : "#/components/schemas/BusinessProcedureInclusionStatus"
+          }
+        }
+      },
+      "CaseStatus" : {
+        "type" : "string",
+        "description" : "Indicates the current status of the procedure or the final outcome.",
+        "enum" : [ "PROCEDURE_VALIDATION", "PROCEDURE_RECORDED", "LETTER_SEND", "FOLLOW_UP_LETTER_SEND", "APPOINTMENT_BOOKED", "FOLLOW_UP_APPOINTMENT", "PROOF_SUBMITTED", "ATTENDED_NO_PROOF", "REPORT_WITHDRAWN", "PERSON_NOT_ACTIVE", "PERSON_TEMP_NOT_ACTIVE", "MEDICAL_ATTEST", "TEMP_MEDICAL_ATTEST", "AUTHORITY_HANDOVER", "ACCESS_RESTRICTED", "INDIVIDUAL_REVIEW" ]
+      },
+      "CheckFileStateUsageRequest" : {
+        "required" : [ "fileStatesIds" ],
+        "type" : "object",
+        "properties" : {
+          "fileStatesIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "CheckFileStateUsageResponse" : {
+        "required" : [ "inUse" ],
+        "type" : "object",
+        "properties" : {
+          "inUse" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "ContactDetails" : {
+        "required" : [ "contactType", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "$ref" : "#/components/schemas/InboxProcedureAddress"
+          },
+          "contactType" : {
+            "$ref" : "#/components/schemas/ContactType"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "emailAddress" : {
+            "type" : "string"
+          },
+          "facilityName" : {
+            "type" : "string"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "lastName" : {
+            "type" : "string"
+          },
+          "phoneNumber" : {
+            "type" : "string"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "$ref" : "#/components/schemas/Title"
+          }
+        }
+      },
+      "ContactType" : {
+        "type" : "string",
+        "enum" : [ "PRIVATE_PERSON", "FACILITY" ]
+      },
+      "CountryCode" : {
+        "type" : "string",
+        "description" : "List of country codes in ISO 3166-1 alpha-2 format. With custom extensions for stateless, non-standard countries, and unknown countries.",
+        "enum" : [ "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW", "XK", "UNKNOWN", "STATELESS" ]
+      },
+      "CreateAccessRestriction" : {
+        "required" : [ "restrictionIssuedDate", "restrictionStartDate" ],
+        "type" : "object",
+        "properties" : {
+          "restrictionIssuedDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "restrictionStartDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "restrictionTerminationDate" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }
+      },
+      "CreateAccessRestrictionLetter" : {
+        "required" : [ "recipientId", "sentAt" ],
+        "type" : "object",
+        "properties" : {
+          "recipientId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "sentAt" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }
+      },
+      "CreateAppointmentBlockGroupResponse" : {
+        "required" : [ "appointmentBlockIds", "id" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlockIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the AppointmentBlockGroup.",
+            "format" : "uuid",
+            "example" : "UUID_3"
+          }
+        }
+      },
+      "CreateApprovalRequestRequest" : {
+        "required" : [ "reason" ],
+        "type" : "object",
+        "properties" : {
+          "reason" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateDailyAppointmentBlock" : {
+        "required" : [ "daysOfWeek", "end", "start" ],
+        "type" : "object",
+        "properties" : {
+          "daysOfWeek" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DayOfWeek"
+            }
+          },
+          "end" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block ends.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:45:00.123456+01:00"
+          },
+          "start" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block starts.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:00:00.123456+01:00"
+          }
+        }
+      },
+      "CreateDailyAppointmentBlockGroupRequest" : {
+        "required" : [ "appointmentBlocks", "parallelExaminations", "type" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlocks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CreateDailyAppointmentBlock"
+            }
+          },
+          "consultants" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "locationId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "mfas" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "parallelExaminations" : {
+            "maximum" : 10,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "physicians" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }
+      },
+      "CreateInboxProcedureRequest" : {
+        "required" : [ "contactDetails", "inboxProgressEntry" ],
+        "type" : "object",
+        "properties" : {
+          "contactDetails" : {
+            "$ref" : "#/components/schemas/ContactDetails"
+          },
+          "inboxProcedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "inboxProgressEntry" : {
+            "$ref" : "#/components/schemas/CreateInboxProgressEntry"
+          }
+        }
+      },
+      "CreateInboxProgressEntry" : {
+        "required" : [ "inboxProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProgressEntryType" : {
+            "$ref" : "#/components/schemas/InboxProgressEntryType"
+          },
+          "messageText" : {
+            "type" : "string"
+          },
+          "subject" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateManualProgressEntryRequest" : {
+        "required" : [ "manualProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "keyDocumentType" : {
+            "type" : "string"
+          },
+          "manualProgressEntryType" : {
+            "$ref" : "#/components/schemas/ManualProgressEntryType"
+          },
+          "note" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateMonetaryFine" : {
+        "required" : [ "fineIssuedDate" ],
+        "type" : "object",
+        "properties" : {
+          "fineIssuedDate" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }
+      },
+      "CreatePersonRequest" : {
+        "required" : [ "person" ],
+        "type" : "object",
+        "properties" : {
+          "person" : {
+            "$ref" : "#/components/schemas/AffectedPersonDetails"
+          }
+        }
+      },
+      "CreatePersonResponse" : {
+        "required" : [ "affectedPerson", "id" ],
+        "type" : "object",
+        "properties" : {
+          "affectedPerson" : {
+            "$ref" : "#/components/schemas/AffectedPersonDetails"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "CreateProofRequestLetter" : {
+        "required" : [ "deadline", "recipientId", "withDeliveryCertificate" ],
+        "type" : "object",
+        "properties" : {
+          "deadline" : {
+            "type" : "string",
+            "description" : "The deadline in the future by which a proof must be submitted.",
+            "format" : "date",
+            "example" : "2024-06-03"
+          },
+          "recipientId" : {
+            "type" : "string",
+            "description" : "The id of the letter recipient, e.g affected person, custodian, etc..",
+            "format" : "uuid"
+          },
+          "withDeliveryCertificate" : {
+            "type" : "boolean",
+            "description" : "Indicates whether the letter was sent with a delivery certificate."
+          }
+        }
+      },
+      "CreateProofSubmission" : {
+        "required" : [ "submissionDate", "submissionResult" ],
+        "type" : "object",
+        "properties" : {
+          "medicalAttestDeadline" : {
+            "type" : "string",
+            "description" : "Indicates a deadline when a temporary medical attest was provided.",
+            "format" : "date",
+            "example" : "2024-07-17"
+          },
+          "submissionDate" : {
+            "type" : "string",
+            "description" : "The date of the proof submission.",
+            "format" : "date",
+            "example" : "2024-06-03"
+          },
+          "submissionResult" : {
+            "$ref" : "#/components/schemas/SubmissionResult"
+          }
+        }
+      },
+      "Custodian" : {
+        "required" : [ "address", "custodianId", "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "custodianId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "Date of birth of the custodian.",
+            "format" : "date",
+            "example" : "1951-02-16"
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "type" : "string",
+            "description" : "First name of the custodian.",
+            "example" : "Mike"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "type" : "string",
+            "description" : "Last name of the custodian.",
+            "example" : "Himmel"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "type" : "string"
+          }
+        },
+        "description" : "Related to the affected person and required if the affected person is a minor."
+      },
+      "CustodianDetails" : {
+        "required" : [ "address", "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "Date of birth of the custodian.",
+            "format" : "date",
+            "example" : "1951-02-16"
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "type" : "string",
+            "description" : "First name of the custodian.",
+            "example" : "Mike"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "type" : "string",
+            "description" : "Last name of the custodian.",
+            "example" : "Himmel"
+          },
+          "nameAtBirth" : {
+            "type" : "string"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "type" : "string"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "type" : "string"
+          }
+        },
+        "description" : "Related to the affected person and required if the affected person is a minor."
+      },
+      "DataOrigin" : {
+        "type" : "string",
+        "description" : "A list of possible origins of Persons and Facility in the Central Files. EDIT will only be set automatically on changes. EXTERNAL is for entries that come, e.g., from the citizen portal. IMPORT is reserved for automatic imports. MANUAL shall be set for every creation or connection done by an employee.",
+        "enum" : [ "MANUAL", "EXTERNAL", "IMPORT", "EDIT" ]
+      },
+      "DayOfWeek" : {
+        "type" : "string",
+        "enum" : [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ]
+      },
+      "Decision" : {
+        "type" : "string",
+        "enum" : [ "GRANTED", "DENIED" ]
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "DeleteDownloadPackagesRequest" : {
+        "required" : [ "downloadIds" ],
+        "type" : "object",
+        "properties" : {
+          "downloadIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "DetailedFacility" : {
+        "required" : [ "facilityFileState", "facilityType" ],
+        "type" : "object",
+        "properties" : {
+          "facilityFileState" : {
+            "$ref" : "#/components/schemas/GetFacilityFileStateResponse"
+          },
+          "facilityType" : {
+            "$ref" : "#/components/schemas/FacilityType"
+          }
+        }
+      },
+      "DetailedPerson" : {
+        "required" : [ "person", "personType" ],
+        "type" : "object",
+        "properties" : {
+          "person" : {
+            "$ref" : "#/components/schemas/GetPersonFileStateResponse"
+          },
+          "personType" : {
+            "$ref" : "#/components/schemas/PersonType"
+          }
+        }
+      },
+      "DetailedTask" : {
+        "required" : [ "task" ],
+        "type" : "object",
+        "properties" : {
+          "assignedByName" : {
+            "type" : "string"
+          },
+          "assigneeName" : {
+            "type" : "string"
+          },
+          "task" : {
+            "$ref" : "#/components/schemas/Task"
+          }
+        }
+      },
+      "DomesticAddress" : {
+        "required" : [ "city", "country", "postalCode", "street" ],
+        "type" : "object",
+        "description" : "A usual domestic address.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "addressAddition" : {
+              "maxLength" : 100,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "A descriptive addition to the address.",
+              "example" : "2.OG links"
+            },
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "houseNumber" : {
+              "maxLength" : 11,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The house number of the address, including extensions.",
+              "example" : "1a"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "street" : {
+              "maxLength" : 55,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the street of the address, without the house number.",
+              "example" : "Beispielweg"
+            }
+          }
+        } ]
+      },
+      "DraftMeaslesProcedure" : {
+        "required" : [ "affectedPerson", "createdAt", "id", "isOpen", "procedureStatus" ],
+        "type" : "object",
+        "description" : "Used for the initial creation and completion of the procedure, and also for validation of externally submitted procedures.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProtectionProcedure"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "affectedPerson" : {
+              "$ref" : "#/components/schemas/AffectedPerson"
+            },
+            "caseStatus" : {
+              "$ref" : "#/components/schemas/CaseStatus"
+            },
+            "createdAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "custodians" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/Custodian"
+              }
+            },
+            "facility" : {
+              "$ref" : "#/components/schemas/Facility"
+            },
+            "id" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "isOpen" : {
+              "type" : "boolean"
+            },
+            "procedureStatus" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            },
+            "reportData" : {
+              "$ref" : "#/components/schemas/ReportData"
+            }
+          }
+        } ]
+      },
+      "ExportArchivingRelevantProceduresRequest" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "ExternalAddFacilityFileStateRequest" : {
+        "required" : [ "name" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          }
+        },
+        "description" : "Request used for adding facilities from external sources"
+      },
+      "Facility" : {
+        "required" : [ "contactAddress", "name", "type" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "Contact person in the facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddress" : {
+            "type" : "string",
+            "description" : "Email address of the facility.",
+            "example" : "example@mail.de"
+          },
+          "name" : {
+            "type" : "string",
+            "description" : "Name of the facility.",
+            "example" : "Geschwister-Scholl-Schule"
+          },
+          "otherFacilityTypeInformation" : {
+            "type" : "string",
+            "description" : "Additional facility type if not listed."
+          },
+          "phoneNumber" : {
+            "type" : "string",
+            "description" : "Phone number of the facility.",
+            "example" : "+491234567890"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/MPFacilityType"
+          }
+        }
+      },
+      "FacilityContactPerson" : {
+        "required" : [ "emailAddress", "firstName", "lastName", "phoneNumber" ],
+        "type" : "object",
+        "properties" : {
+          "emailAddress" : {
+            "type" : "string"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "lastName" : {
+            "type" : "string"
+          },
+          "phoneNumber" : {
+            "type" : "string"
+          },
+          "role" : {
+            "type" : "string"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "type" : "string"
+          }
+        },
+        "description" : "Contact person in the facility."
+      },
+      "FacilityType" : {
+        "type" : "string",
+        "enum" : [ "SCHOOL", "INSPECTION", "DAYCARE", "HOSPITAL", "MEDICAL_PRACTICE", "REFUGEE_ACCOMMODATION", "OTHER" ]
+      },
+      "FileMetaData" : {
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          }
+        }
+      },
+      "FileType" : {
+        "type" : "string",
+        "enum" : [ "JPEG", "PNG", "PDF", "EML" ]
+      },
+      "GdprDownloadPackageInfo" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GdprFacility" : {
+        "required" : [ "address", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "dataTransmitterPseudonymId" : {
+              "type" : "string",
+              "description" : "The 'DatenübermittlerPseudonymId' of the MUK user",
+              "example" : "du-986b2b54ab89cf4ed674ad8c3126b966b54d4872"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Facility.",
+              "example" : "mail@address.de"
+            },
+            "name" : {
+              "maxLength" : 300,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the Facility.",
+              "example" : "123 Example Facility"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The phone number of the Facility.",
+              "example" : "+491234567890"
+            }
+          }
+        } ]
+      },
+      "GdprIdentificationData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "GdprPerson" : {
+        "required" : [ "address", "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "bpk2" : {
+              "type" : "string",
+              "description" : "The bpk2 of the BundId user",
+              "example" : "VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0"
+            },
+            "dateOfBirth" : {
+              "type" : "string",
+              "description" : "The date of birth of the Person.",
+              "format" : "date",
+              "example" : "2000-01-01"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Person.",
+              "example" : "mail@address.de"
+            },
+            "firstName" : {
+              "maxLength" : 80,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The given name(s) of the Person.",
+              "example" : "John"
+            },
+            "lastName" : {
+              "maxLength" : 120,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The last name of the Person.",
+              "example" : "Doe"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 0,
+              "type" : "string",
+              "description" : "The phone number of the Person.",
+              "example" : "+491234567890"
+            },
+            "salutation" : {
+              "$ref" : "#/components/schemas/Salutation"
+            },
+            "title" : {
+              "maxLength" : 119,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The academic title of the Person.",
+              "example" : "Prof. Dr."
+            }
+          }
+        } ]
+      },
+      "GdprProcedureType" : {
+        "type" : "string",
+        "description" : "A list of types of GDPR procedures.",
+        "enum" : [ "RIGHT_OF_ACCESS", "RIGHT_TO_ERASURE" ]
+      },
+      "GdprValidationTask" : {
+        "required" : [ "dueDate", "gdprProcedureId", "identificationData", "status", "type" ],
+        "type" : "object",
+        "properties" : {
+          "dueDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "gdprProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "identificationData" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GdprFacility"
+            }, {
+              "$ref" : "#/components/schemas/GdprPerson"
+            } ]
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }
+      },
+      "GdprValidationTaskSortKey" : {
+        "type" : "string",
+        "enum" : [ "CREATED_AT" ]
+      },
+      "GdprValidationTaskStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "Gender" : {
+        "type" : "string",
+        "description" : "The list of genders as specified in the German Personenstandsgesetz.",
+        "enum" : [ "NOT_SPECIFIED", "DIVERSE", "FEMALE", "MALE" ]
+      },
+      "GenericFileReference" : {
+        "required" : [ "@type", "deletable", "deleted", "fileId" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFileReference"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "GetAllValidationTasksResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GdprValidationTask"
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetAppointmentBlock" : {
+        "required" : [ "end", "id", "numberOfBookedAppointments", "numberOfFreeAppointments", "start" ],
+        "type" : "object",
+        "properties" : {
+          "end" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block ends.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:45:00.123456+01:00"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the AppointmentBlock.",
+            "format" : "uuid",
+            "example" : "UUID_3"
+          },
+          "numberOfBookedAppointments" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "numberOfFreeAppointments" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "start" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block starts.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:00:00.123456+01:00"
+          }
+        },
+        "description" : "A planned appointment block. Appointment blocks offer a set of bookable appointments at different times within the timeframe of the appointment block."
+      },
+      "GetAppointmentBlockGroup" : {
+        "required" : [ "appointmentBlocks", "id", "parallelExaminations", "type" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlocks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GetAppointmentBlock"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the AppointmentBlockGroup.",
+            "format" : "uuid",
+            "example" : "UUID_3"
+          },
+          "location" : {
+            "$ref" : "#/components/schemas/AppointmentLocation"
+          },
+          "parallelExaminations" : {
+            "maximum" : 10,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }
+      },
+      "GetAppointmentBlockGroupsResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GetAppointmentBlockGroup"
+            }
+          },
+          "totalNumberOfElements" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetAppointmentTypesResponse" : {
+        "required" : [ "appointmentTypeConfigDtos" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentTypeConfigDtos" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AppointmentTypeConfig"
+            }
+          }
+        }
+      },
+      "GetArchivableProceduresResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetArchivableProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CLOSED_AT",
+        "enum" : [ "CLOSED_AT", "PROCEDURE_TYPE" ]
+      },
+      "GetArchivableProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetArchivingConfigurationResponse" : {
+        "required" : [ "archivingDetails", "gracePeriodMonths" ],
+        "type" : "object",
+        "properties" : {
+          "archivingDetails" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/ArchivingDetails"
+            }
+          },
+          "gracePeriodMonths" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetDetailedProcedureResponse" : {
+        "required" : [ "facilities", "persons", "procedure", "tasks" ],
+        "type" : "object",
+        "properties" : {
+          "facilities" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedFacility"
+            }
+          },
+          "persons" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedPerson"
+            }
+          },
+          "procedure" : {
+            "$ref" : "#/components/schemas/Procedure"
+          },
+          "tasks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedTask"
+            }
+          }
+        }
+      },
+      "GetFacilityFileStateResponse" : {
+        "required" : [ "contactPersons", "dataOrigin", "emailAddresses", "id", "name", "phoneNumbers", "referenceVersion" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Facility.",
+            "format" : "uuid",
+            "example" : "UUID_4"
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referenceFacility it is connected to.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          }
+        }
+      },
+      "GetFreeAppointmentsResponse" : {
+        "required" : [ "appointments" ],
+        "type" : "object",
+        "properties" : {
+          "appointments" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Appointment"
+            }
+          }
+        }
+      },
+      "GetGdprDownloadPackagesInfoResponse" : {
+        "required" : [ "downloadPackages" ],
+        "type" : "object",
+        "properties" : {
+          "downloadPackages" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GdprDownloadPackageInfo"
+            }
+          }
+        }
+      },
+      "GetGdprNotificationBannerResponse" : {
+        "required" : [ "openValidationTasksCount" ],
+        "type" : "object",
+        "properties" : {
+          "earliestDueDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "openValidationTasksCount" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetGdprValidationTaskDetailsResponse" : {
+        "required" : [ "proceduresWithStatus", "validationTask" ],
+        "type" : "object",
+        "properties" : {
+          "proceduresWithStatus" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessProcedureWithInclusionStatus"
+            }
+          },
+          "validationTask" : {
+            "$ref" : "#/components/schemas/GdprValidationTask"
+          }
+        }
+      },
+      "GetGdprValidationTaskResponse" : {
+        "required" : [ "status" ],
+        "type" : "object",
+        "properties" : {
+          "status" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          }
+        }
+      },
+      "GetInboxProcedureResponse" : {
+        "required" : [ "inboxProcedure", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProcedure" : {
+            "$ref" : "#/components/schemas/InboxProcedure"
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetInboxProceduresResponse" : {
+        "required" : [ "inboxProcedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProcedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InboxProcedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetInboxProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "CREATED_AT" ]
+      },
+      "GetInboxProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetManualProgressEntryHistoryResponse" : {
+        "type" : "object",
+        "properties" : {
+          "manualProgressEntryHistory" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ManualProgressEntryHistory"
+            }
+          }
+        }
+      },
+      "GetMeaslesProtectionFeatureTogglesResponse" : {
+        "required" : [ "disabledOldFeatures", "enabledNewFeatures" ],
+        "type" : "object",
+        "properties" : {
+          "disabledOldFeatures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/MeaslesProtectionFeature"
+            }
+          },
+          "enabledNewFeatures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/MeaslesProtectionFeature"
+            }
+          }
+        }
+      },
+      "GetMeaslesProtectionProceduresResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DraftMeaslesProcedure"
+              }, {
+                "$ref" : "#/components/schemas/MeaslesProtectionProcedure"
+              } ]
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "the total amount of elements",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "The number of total pages",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetMeaslesProtectionProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "FIRST_NAME", "LAST_NAME", "DATE_OF_BIRTH", "CREATED_AT", "FACILITY_NAME", "FACILITY_TYPE", "CASE_STATUS", "PROCEDURE_STATUS" ]
+      },
+      "GetMeaslesProtectionProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "DESC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetMetaDataHistoryResponse" : {
+        "type" : "object",
+        "properties" : {
+          "metaDataHistory" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ImageMetaDataHistory"
+              }, {
+                "$ref" : "#/components/schemas/MailMetaDataHistory"
+              }, {
+                "$ref" : "#/components/schemas/PdfMetaDataHistory"
+              } ]
+            }
+          }
+        }
+      },
+      "GetPersonFileStateResponse" : {
+        "required" : [ "dataOrigin", "dateOfBirth", "emailAddresses", "firstName", "gender", "id", "lastName", "phoneNumbers", "referenceVersion", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "The date of birth of the Person.",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Person.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Person.",
+            "format" : "uuid",
+            "example" : "UUID_4"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Person.",
+            "example" : "Doe"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name at birth of the Person.",
+            "example" : "Smith"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referencePerson it is connected to. Set to 'null' if unchecked.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Person.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The place of birth (without country) of the Person.",
+            "example" : "Berlin"
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "GetProcedureApprovalRequestsResponse" : {
+        "required" : [ "approvalRequests", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "approvalRequests" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ApprovalRequest"
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetProcedureFileDetailsResponse" : {
+        "required" : [ "fileDetails", "procedureId" ],
+        "type" : "object",
+        "properties" : {
+          "fileDetails" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProgressEntryReferenceFilePair"
+            }
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GetProcedureMetricsResponse" : {
+        "required" : [ "procedureMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "procedureMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureMetric"
+            }
+          }
+        }
+      },
+      "GetProceduresForPersonRequest" : {
+        "required" : [ "person" ],
+        "type" : "object",
+        "properties" : {
+          "person" : {
+            "$ref" : "#/components/schemas/AddPersonFileStateRequest"
+          }
+        }
+      },
+      "GetProceduresForPersonResponse" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureForPerson"
+            }
+          }
+        }
+      },
+      "GetProceduresResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "MODIFIED_AT", "CREATED_AT" ]
+      },
+      "GetProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetProgressEntriesResponse" : {
+        "required" : [ "progressEntries", "resolvedUsers", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "progressEntries" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ManualProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/ProcessedInboxProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/SystemProgressEntry"
+              } ]
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetProgressEntryResponse" : {
+        "required" : [ "progressEntry", "relatedKeyDocumentProgressEntries", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "progressEntry" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/ManualProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/ProcessedInboxProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/SystemProgressEntry"
+            } ]
+          },
+          "relatedKeyDocumentProgressEntries" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ManualProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/SystemProgressEntry"
+              } ]
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetProofRequestLettersResponse" : {
+        "required" : [ "letters" ],
+        "type" : "object",
+        "properties" : {
+          "letters" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProofRequestLetter"
+            }
+          }
+        }
+      },
+      "GetRecentProceduresResponse" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          }
+        }
+      },
+      "GetRelevantArchivableProceduresResponse" : {
+        "required" : [ "fileSizeBytes", "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "fileSizeBytes" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetRelevantArchivableProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CLOSED_AT",
+        "enum" : [ "CLOSED_AT", "EXPORTED_AT" ]
+      },
+      "GetRelevantArchivableProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetTaskByUserResponse" : {
+        "required" : [ "resolvedUsers", "tasksByUser" ],
+        "type" : "object",
+        "properties" : {
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "tasksByUser" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/Task"
+              }
+            }
+          }
+        }
+      },
+      "GetTaskMetricsResponse" : {
+        "required" : [ "businessModule", "closedProcedureCount", "fastestProcedures", "procedureType", "slowestProcedures", "taskMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedProcedureCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "fastestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "slowestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "taskMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskMetric"
+            }
+          }
+        }
+      },
+      "GetTasksSortBy" : {
+        "type" : "string",
+        "enum" : [ "PRIORITY", "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "GetTasksSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "Image" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/ImageMetaData"
+            }
+          }
+        } ]
+      },
+      "ImageMetaData" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "ImageMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "imageMetaData" : {
+              "$ref" : "#/components/schemas/ImageMetaData"
+            }
+          }
+        } ]
+      },
+      "InboxProcedure" : {
+        "required" : [ "contactDetails", "createdAt", "createdBy", "inboxProcedureId", "inboxProcedureStatus", "inboxProgressEntry" ],
+        "type" : "object",
+        "properties" : {
+          "closedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "contactDetails" : {
+            "$ref" : "#/components/schemas/ContactDetails"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProcedureStatus" : {
+            "$ref" : "#/components/schemas/InboxProcedureStatus"
+          },
+          "inboxProcedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "inboxProgressEntry" : {
+            "$ref" : "#/components/schemas/InboxProgressEntry"
+          }
+        }
+      },
+      "InboxProcedureAddress" : {
+        "type" : "object",
+        "properties" : {
+          "addressAddition" : {
+            "type" : "string"
+          },
+          "city" : {
+            "type" : "string"
+          },
+          "country" : {
+            "type" : "string"
+          },
+          "houseNumber" : {
+            "type" : "string"
+          },
+          "postalCode" : {
+            "type" : "string"
+          },
+          "postboxNumber" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "street" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InboxProcedureStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "InboxProgressEntry" : {
+        "required" : [ "inboxProgressEntryId", "inboxProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "fileReference" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GenericFileReference"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "inboxProgressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProgressEntryType" : {
+            "$ref" : "#/components/schemas/InboxProgressEntryType"
+          },
+          "messageText" : {
+            "type" : "string"
+          },
+          "subject" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InboxProgressEntryType" : {
+        "type" : "string",
+        "enum" : [ "LETTER", "PHONE_CALL", "EMAIL" ]
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "KeyDocumentAwareProgressEntry" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "keyDocumentType" : {
+            "type" : "string"
+          },
+          "keyDocumentVersion" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "MPFacilityType" : {
+        "type" : "string",
+        "description" : "Type of the facility.",
+        "enum" : [ "SCHOOL", "DAY_NURSERY", "DAYCARE", "CHILDRENS_HOME", "REFUGEE_ACCOMMODATION", "HOSPITAL", "MEDICAL_PRACTICE", "OUTPATIENT_SURGERY", "REHABILITATION_CENTRE", "DIALYSIS_CENTRE", "DAY_CLINIC", "MATERNITY_CENTRE", "OTHER_MEDICAL_PRACTICE", "PUBLIC_HEALTH_SERVICE", "EMERGENCY_SERVICE", "CIVIL_PROTECTION", "OTHER" ]
+      },
+      "Mail" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt", "removedInvalidAttachments" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/MailMetaData"
+            },
+            "removedInvalidAttachments" : {
+              "type" : "integer",
+              "format" : "int32"
+            }
+          }
+        } ]
+      },
+      "MailMetaData" : {
+        "required" : [ "mailFrom", "mailTo", "messageText", "sentDate", "subject" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "mailFrom" : {
+              "type" : "string"
+            },
+            "mailTo" : {
+              "type" : "string"
+            },
+            "messageText" : {
+              "type" : "string"
+            },
+            "sentDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "subject" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "MailMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "mailMetaData" : {
+              "$ref" : "#/components/schemas/MailMetaData"
+            }
+          }
+        } ]
+      },
+      "ManualProgressEntry" : {
+        "required" : [ "createdAt", "createdBy", "locked", "manualProgressEntryType", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "keyDocumentType" : {
+              "type" : "string"
+            },
+            "keyDocumentVersion" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "locked" : {
+              "type" : "boolean"
+            },
+            "manualProgressEntryType" : {
+              "$ref" : "#/components/schemas/ManualProgressEntryType"
+            },
+            "note" : {
+              "type" : "string"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/ApprovalRequestEntity"
+        }, {
+          "$ref" : "#/components/schemas/KeyDocumentAwareProgressEntry"
+        } ]
+      },
+      "ManualProgressEntryHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "properties" : {
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "manualProgressEntry" : {
+            "$ref" : "#/components/schemas/ManualProgressEntry"
+          }
+        }
+      },
+      "ManualProgressEntryType" : {
+        "type" : "string",
+        "enum" : [ "LETTER", "PHONE_CALL", "NOTE", "EMAIL", "IMAGE", "DOCUMENT" ]
+      },
+      "MeaslesProtectionFeature" : {
+        "type" : "string",
+        "enum" : [ "EDIT_ACCESS_RESTRICTION" ]
+      },
+      "MeaslesProtectionProcedure" : {
+        "required" : [ "affectedPerson", "caseStatus", "createdAt", "facility", "id", "isOpen", "procedureStatus", "reportData" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProtectionProcedure"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "accessRestriction" : {
+              "$ref" : "#/components/schemas/AccessRestriction"
+            },
+            "affectedPerson" : {
+              "$ref" : "#/components/schemas/AffectedPerson"
+            },
+            "appointment" : {
+              "$ref" : "#/components/schemas/Appointment"
+            },
+            "caseStatus" : {
+              "$ref" : "#/components/schemas/CaseStatus"
+            },
+            "createdAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "custodians" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/Custodian"
+              }
+            },
+            "facility" : {
+              "$ref" : "#/components/schemas/Facility"
+            },
+            "id" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "isOpen" : {
+              "type" : "boolean"
+            },
+            "monetaryFines" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/MonetaryFine"
+              }
+            },
+            "procedureStatus" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            },
+            "proofSubmissions" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/ProofSubmission"
+              }
+            },
+            "reportData" : {
+              "$ref" : "#/components/schemas/ReportData"
+            }
+          }
+        } ]
+      },
+      "MeaslesProtectionProcedurePopulationResult" : {
+        "required" : [ "count", "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "count" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "procedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/OpenProcedureResponse"
+            }
+          }
+        }
+      },
+      "Measure" : {
+        "type" : "string",
+        "enum" : [ "ACCESS_RESTRICTION", "MONETARY_FINE" ]
+      },
+      "MetaData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "description" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "MetaDataHistory" : {
+        "required" : [ "@type", "changedAt" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "MonetaryFine" : {
+        "required" : [ "externalId", "fineIssuedDate" ],
+        "type" : "object",
+        "properties" : {
+          "externalId" : {
+            "type" : "string",
+            "description" : "The unique identifier for the monetary fine.",
+            "format" : "uuid"
+          },
+          "fineIssuedDate" : {
+            "type" : "string",
+            "description" : "The date when the monetary fine was issued.",
+            "format" : "date"
+          }
+        }
+      },
+      "OpenProcedureRequest" : {
+        "required" : [ "reportData", "roleStatus" ],
+        "type" : "object",
+        "properties" : {
+          "reportData" : {
+            "$ref" : "#/components/schemas/ReportData"
+          },
+          "roleStatus" : {
+            "$ref" : "#/components/schemas/RoleStatus"
+          }
+        }
+      },
+      "OpenProcedureResponse" : {
+        "required" : [ "procedureId" ],
+        "type" : "object",
+        "properties" : {
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "Operation" : {
+        "type" : "string",
+        "enum" : [ "DELETE" ]
+      },
+      "PatchManualProgressEntryRequest" : {
+        "type" : "object",
+        "properties" : {
+          "manualProgressEntryType" : {
+            "$ref" : "#/components/schemas/ManualProgressEntryType"
+          },
+          "note" : {
+            "type" : "string",
+            "nullable" : true
+          }
+        }
+      },
+      "Pdf" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/PdfMetaData"
+            }
+          }
+        } ]
+      },
+      "PdfMetaData" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "PdfMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "pdfMetaData" : {
+              "$ref" : "#/components/schemas/PdfMetaData"
+            }
+          }
+        } ]
+      },
+      "PersonType" : {
+        "type" : "string",
+        "enum" : [ "PATIENT", "PARENT", "PROFESSIONAL" ]
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "PopulationRequest" : {
+        "required" : [ "numberOfEntitiesToPopulate" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfEntitiesToPopulate" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "PostboxAddress" : {
+        "required" : [ "city", "country", "postalCode", "postbox" ],
+        "type" : "object",
+        "description" : "An address which is a postbox.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "postbox" : {
+              "maxLength" : 21,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The number (or name) of the postbox.",
+              "example" : "123"
+            }
+          }
+        } ]
+      },
+      "Procedure" : {
+        "required" : [ "archivingRelevanceSettings", "businessModule", "createdAt", "modifiedAt", "procedureId", "procedureStatus", "procedureType", "summary" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevanceSettings" : {
+            "$ref" : "#/components/schemas/ArchivingRelevanceSettings"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "exportedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "procedureStatus" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "pattern" : "[a-zA-Z0-9.].+",
+            "type" : "string"
+          }
+        }
+      },
+      "ProcedureForPerson" : {
+        "required" : [ "externalId", "procedureStatus", "reportingDate" ],
+        "type" : "object",
+        "properties" : {
+          "externalId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "procedureStatus" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "reportingDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "reportingReason" : {
+            "$ref" : "#/components/schemas/ReportingReason"
+          }
+        }
+      },
+      "ProcedureMetric" : {
+        "required" : [ "abortedCount", "businessModule", "closedCount", "inProgressCount", "openOrDraftCount", "procedureType", "totalCount" ],
+        "type" : "object",
+        "properties" : {
+          "abortedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "inProgressCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "openOrDraftCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "totalCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ProcedureStatus" : {
+        "type" : "string",
+        "enum" : [ "DRAFT", "OPEN", "IN_PROGRESS", "CLOSED", "ABORTED" ]
+      },
+      "ProcedureType" : {
+        "type" : "string",
+        "enum" : [ "REGULAR_EXAMINATION", "CAN_CHILD", "ENTRY_LEVEL", "DRAFT_CITIZEN_OFFICE_IMPORT", "DRAFT_SCHOOL_IMPORT", "INSPECTION", "TM_VACCINATION_CONSULTATION", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY_ENTRY", "MEDICAL_REGISTRY_CITIZEN_DRAFT", "MEDICAL_REGISTRY_EMPLOYEE_DRAFT", "DENTAL_CHILD", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "ProcedureWithDuration" : {
+        "required" : [ "createdAt", "id" ],
+        "type" : "object",
+        "properties" : {
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "duration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ProcessedInboxProgressEntry" : {
+        "required" : [ "createdAt", "createdBy", "inboxProcedureId", "inboxProgressEntryType", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "inboxProcedureId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "inboxProgressEntryType" : {
+              "$ref" : "#/components/schemas/InboxProgressEntryType"
+            },
+            "messageText" : {
+              "type" : "string"
+            },
+            "subject" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "ProgressEntry" : {
+        "required" : [ "@type", "createdAt", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "fileReference" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GenericFileReference"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "progressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ProgressEntryClass" : {
+        "type" : "string",
+        "enum" : [ "MANUAL_PROGRESS_ENTRY", "SYSTEM_PROGRESS_ENTRY", "PROCESSED_INBOX_PROGRESS_ENTRY" ]
+      },
+      "ProgressEntryReferenceFilePair" : {
+        "required" : [ "file", "progressEntryId" ],
+        "type" : "object",
+        "properties" : {
+          "file" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "progressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ProgressEntrySortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "ProgressEntrySortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "ProofRequestLetter" : {
+        "required" : [ "deadline", "pdf", "recipientId", "sentAt" ],
+        "type" : "object",
+        "properties" : {
+          "deadline" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "pdf" : {
+            "$ref" : "#/components/schemas/Pdf"
+          },
+          "recipientId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "sentAt" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        },
+        "description" : "A letter sent by a health department to request evidence or confirmation of vaccination."
+      },
+      "ProofRequestSent" : {
+        "type" : "string",
+        "enum" : [ "FIRST_LETTER", "FOLLOW_UP_LETTER" ]
+      },
+      "ProofSubmission" : {
+        "required" : [ "externalId", "submissionDate", "submissionResult" ],
+        "type" : "object",
+        "properties" : {
+          "externalId" : {
+            "type" : "string",
+            "description" : "The unique identifier for the proof submission.",
+            "format" : "uuid",
+            "example" : "UUID_5"
+          },
+          "medicalAttestDeadline" : {
+            "type" : "string",
+            "description" : "Indicates a deadline when a temporary medical attest was provided.",
+            "format" : "date",
+            "example" : "2024-07-17"
+          },
+          "proofSubmissionDocumentId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "submissionDate" : {
+            "type" : "string",
+            "description" : "The date of the proof submission.",
+            "format" : "date",
+            "example" : "2024-06-03"
+          },
+          "submissionResult" : {
+            "$ref" : "#/components/schemas/SubmissionResult"
+          }
+        }
+      },
+      "ProtectionProcedure" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "open" : {
+            "type" : "boolean"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ReportCaseRequest" : {
+        "required" : [ "facility", "type" ],
+        "type" : "object",
+        "properties" : {
+          "affectedPersons" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ReportPerson"
+            }
+          },
+          "facility" : {
+            "$ref" : "#/components/schemas/ExternalAddFacilityFileStateRequest"
+          },
+          "otherFacilityTypeInformation" : {
+            "type" : "string"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/MPFacilityType"
+          }
+        }
+      },
+      "ReportData" : {
+        "required" : [ "reportingDate", "reportingReason" ],
+        "type" : "object",
+        "properties" : {
+          "commentReportingReason" : {
+            "type" : "string",
+            "description" : "Additional comment if the reporting reason is not listed.",
+            "example" : "Special not listed reason."
+          },
+          "reportingDate" : {
+            "type" : "string",
+            "description" : "The date on which the report was transmitted.",
+            "format" : "date",
+            "example" : "2024-06-03"
+          },
+          "reportingReason" : {
+            "$ref" : "#/components/schemas/ReportingReason"
+          }
+        }
+      },
+      "ReportPerson" : {
+        "required" : [ "affectedPersonDetails", "affectedPersonSupplementalData" ],
+        "type" : "object",
+        "properties" : {
+          "affectedPersonDetails" : {
+            "$ref" : "#/components/schemas/AffectedPersonDetails"
+          },
+          "affectedPersonSupplementalData" : {
+            "$ref" : "#/components/schemas/AffectedPersonSupplementalData"
+          }
+        },
+        "description" : "Represents the all data to an individual the facility reports from the portal."
+      },
+      "ReportingReason" : {
+        "type" : "string",
+        "description" : "Indicates the reason why the person was reported to the health care departement by the facility.",
+        "enum" : [ "NO_PROOF", "FIRST_VACCINE", "MEDICAL_CONTRAINDICATION", "UNASSESSABLE_PROOF", "OTHER" ]
+      },
+      "RoleStatus" : {
+        "type" : "string",
+        "description" : "Role status in the facility of the affected person.",
+        "enum" : [ "EMPLOYEE", "SUPERVISED" ]
+      },
+      "Salutation" : {
+        "type" : "string",
+        "description" : "A list of categories for the salutation from which specific salutation phrases can be derived. The choice of salutation is free for every citizen and not dependent on gender.",
+        "enum" : [ "NOT_SPECIFIED", "NEUTRAL", "FEMALE", "MALE" ]
+      },
+      "SaveProofRequestLetter" : {
+        "required" : [ "deadline", "recipientId", "withDeliveryCertificate" ],
+        "type" : "object",
+        "properties" : {
+          "deadline" : {
+            "type" : "string",
+            "description" : "The deadline in the future by which a proof must be submitted.",
+            "format" : "date",
+            "example" : "2024-06-03"
+          },
+          "recipientId" : {
+            "type" : "string",
+            "description" : "The id of the letter recipient, e.g affected person, custodian, etc..",
+            "format" : "uuid"
+          },
+          "withDeliveryCertificate" : {
+            "type" : "boolean",
+            "description" : "Indicates whether the letter was sent with a delivery certificate."
+          }
+        }
+      },
+      "SelfAssignTaskRequest" : {
+        "required" : [ "taskVersion" ],
+        "type" : "object",
+        "properties" : {
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "taskVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "SortDirection" : {
+        "type" : "string",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "SubmissionResult" : {
+        "type" : "string",
+        "description" : "The SubmissionResult describes the current state and the final outcome of a proof submission.\n",
+        "example" : "PROOF_SUBMITTED",
+        "enum" : [ "UNDER_REVIEW", "ATTENDED_NO_PROOF", "TEMP_MEDICAL_ATTEST", "MEDICAL_ATTEST", "PROOF_SUBMITTED" ]
+      },
+      "SystemProgressEntry" : {
+        "required" : [ "createdAt", "modifiedAt", "progressEntryId", "systemProgressEntryType", "triggerType" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "changeDescription" : {
+              "type" : "string"
+            },
+            "keyDocumentType" : {
+              "type" : "string"
+            },
+            "keyDocumentVersion" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "previousFileStateId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "systemProgressEntryType" : {
+              "type" : "string"
+            },
+            "triggerType" : {
+              "$ref" : "#/components/schemas/TriggerType"
+            },
+            "triggeredBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/KeyDocumentAwareProgressEntry"
+        } ]
+      },
+      "Task" : {
+        "required" : [ "businessModule", "createdAt", "isOverdue", "modifiedAt", "procedureId", "summary", "taskId", "taskStatus", "taskType", "version" ],
+        "type" : "object",
+        "properties" : {
+          "assignedById" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "assigneeId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "isOverdue" : {
+            "type" : "boolean"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "taskId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "taskStatus" : {
+            "$ref" : "#/components/schemas/TaskStatus"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "TaskMetric" : {
+        "required" : [ "moreThanTwoOccurrencesCount", "noOccurrencesCount", "oneOccurrenceCount", "taskType", "twoOccurrencesCount" ],
+        "type" : "object",
+        "properties" : {
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "moreThanTwoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "noOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "oneOccurrenceCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "twoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TaskResponse" : {
+        "required" : [ "count", "tasks" ],
+        "type" : "object",
+        "properties" : {
+          "count" : {
+            "type" : "integer",
+            "description" : "total number of tasks for this query",
+            "format" : "int64"
+          },
+          "tasks" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Task"
+            }
+          }
+        }
+      },
+      "TaskStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "TaskType" : {
+        "type" : "string",
+        "enum" : [ "BOOK_APPOINTMENT", "PERFORM_SCHOOL_ENTRY_EXAMINATION", "INSPECTION_PLANNING", "INSPECTION_EXECUTION", "INSPECTION_REPORT", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      },
+      "Title" : {
+        "type" : "string",
+        "enum" : [ "DR", "PROF", "PROF_DR" ]
+      },
+      "TriggerType" : {
+        "type" : "string",
+        "enum" : [ "SYSTEM_AUTOMATIC", "EMPLOYEE", "CITIZEN" ]
+      },
+      "UpdateAccessRestriction" : {
+        "required" : [ "restrictionTerminationDate" ],
+        "type" : "object",
+        "properties" : {
+          "restrictionTerminationDate" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }
+      },
+      "UpdateAppointmentTypeRequest" : {
+        "required" : [ "standardDurationInMinutes" ],
+        "type" : "object",
+        "properties" : {
+          "standardDurationInMinutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "UpdateMonetaryFine" : {
+        "required" : [ "fineIssuedDate" ],
+        "type" : "object",
+        "properties" : {
+          "fineIssuedDate" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }
+      },
+      "UpdateProcedureRequest" : {
+        "type" : "object",
+        "properties" : {
+          "reportData" : {
+            "$ref" : "#/components/schemas/UpdateReportData"
+          },
+          "roleStatus" : {
+            "$ref" : "#/components/schemas/RoleStatus"
+          }
+        }
+      },
+      "UpdateProofSubmission" : {
+        "type" : "object",
+        "properties" : {
+          "medicalAttestDeadline" : {
+            "type" : "string",
+            "description" : "Indicates a deadline when a temporary medical attest was provided.",
+            "format" : "date",
+            "example" : "2024-07-17"
+          },
+          "submissionDate" : {
+            "type" : "string",
+            "description" : "The date of the proof submission.",
+            "format" : "date",
+            "example" : "2024-06-03"
+          },
+          "submissionResult" : {
+            "$ref" : "#/components/schemas/SubmissionResult"
+          }
+        }
+      },
+      "UpdateReportData" : {
+        "type" : "object",
+        "properties" : {
+          "commentReportingReason" : {
+            "type" : "string"
+          },
+          "reportingDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "reportingReason" : {
+            "$ref" : "#/components/schemas/ReportingReason"
+          }
+        }
+      },
+      "User" : {
+        "required" : [ "enabled", "firstName", "lastName", "userId", "username" ],
+        "type" : "object",
+        "properties" : {
+          "email" : {
+            "type" : "string",
+            "description" : "The email address of a user.",
+            "example" : "example@mail.de"
+          },
+          "enabled" : {
+            "type" : "boolean",
+            "description" : "True, if the user can login",
+            "example" : false
+          },
+          "externalChatUsername" : {
+            "type" : "string",
+            "description" : "The chat username of the gematik TI-Messenger (matrix chat).",
+            "example" : "@username:server"
+          },
+          "firstName" : {
+            "type" : "string",
+            "description" : "The given name(s) of a user.",
+            "example" : "John"
+          },
+          "lastName" : {
+            "type" : "string",
+            "description" : "The last name of a user.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "type" : "string",
+            "description" : "The phone number of a user.",
+            "example" : "+491234567890"
+          },
+          "userId" : {
+            "type" : "string",
+            "description" : "The Id of the user.",
+            "format" : "uuid",
+            "example" : "UUID_6"
+          },
+          "username" : {
+            "type" : "string",
+            "description" : "The username which is displayed in the application and can be used for the login.",
+            "example" : "testuser"
+          }
+        }
+      },
+      "ValidateAppointmentBlockGroupResponse" : {
+        "required" : [ "userIdsWithEventConflicts", "userIdsWithoutEventConflicts" ],
+        "type" : "object",
+        "properties" : {
+          "userIdsWithEventConflicts" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "userIdsWithoutEventConflicts" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/backend/measles-protection/openApi.yaml b/backend/measles-protection/openApi.yaml
deleted file mode 100644
index 2c5bf99ff..000000000
--- a/backend/measles-protection/openApi.yaml
+++ /dev/null
@@ -1,6428 +0,0 @@
-# Copyright 2025 cronn GmbH
-# SPDX-License-Identifier: AGPL-3.0-only
-
-openapi: 3.0.1
-info:
-  description: This is the API for the measles-protection module
-  title: Measles Protection Module API
-  version: "0.1"
-servers:
-- url: http://localhost:8086
-paths:
-  /appointment-blocks/appointment-block-groups:
-    get:
-      operationId: getAppointmentBlockGroups
-      parameters:
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/AppointmentBlockSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAppointmentBlockGroupsResponse"
-          description: OK
-      summary: Get all appointment block groups.
-      tags:
-      - AppointmentBlock
-  /appointment-blocks/daily-appointment-block-groups:
-    post:
-      operationId: createDailyAppointmentBlocksForGroup
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CreateAppointmentBlockGroupResponse"
-          description: OK
-      summary: Create appointment group with blocks for week days.
-      tags:
-      - AppointmentBlock
-  /appointment-blocks/daily-appointment-block-groups/validate:
-    post:
-      operationId: validateDailyAppointmentBlocksForGroup
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ValidateAppointmentBlockGroupResponse"
-          description: OK
-      summary: Create appointment group with blocks for week days.
-      tags:
-      - AppointmentBlock
-  /appointment-blocks/free-appointments:
-    get:
-      operationId: getFreeAppointments
-      parameters:
-      - in: query
-        name: appointmentType
-        required: true
-        schema:
-          $ref: "#/components/schemas/AppointmentType"
-      - in: query
-        name: earliestDate
-        required: false
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: physicianId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetFreeAppointmentsResponse"
-          description: OK
-      summary: Get free appointments for an appointment type.
-      tags:
-      - AppointmentBlock
-  /appointment-types:
-    get:
-      operationId: getAppointmentTypes
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAppointmentTypesResponse"
-          description: OK
-      summary: Gets all Appointment Types
-      tags:
-      - AppointmentType
-  /appointment-types/{id}:
-    get:
-      operationId: getOneAppointmentType
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AppointmentTypeConfig"
-          description: OK
-      summary: Gets one Appointment Type by ID
-      tags:
-      - AppointmentType
-    put:
-      operationId: updateAppointmentType
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateAppointmentTypeRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AppointmentTypeConfig"
-          description: OK
-      summary: Modifies an existing Appointment Type
-      tags:
-      - AppointmentType
-  /approval-requests/{approvalRequestId}:
-    get:
-      operationId: getApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      tags:
-      - ApprovalRequest
-  /approval-requests/{approvalRequestId}/decision:
-    put:
-      operationId: decideApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/Decision"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - ApprovalRequest
-  /archiving/config:
-    get:
-      operationId: getArchivingConfiguration
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetArchivingConfigurationResponse"
-          description: OK
-      summary: Get archiving configuration
-      tags:
-      - Archiving
-  /archiving/procedures:
-    get:
-      operationId: getArchivableProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `closedAtDay` is set, only procedures are returned which were closed at that date
-          - If not submitted, no filtering takes place
-        in: query
-        name: closedAtDay
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If `defaultArchivingRelevance` is submitted, only procedures are returned which have one of the submitted default archiving relevances.
-          - If not submitted, no filtering takes place
-        in: query
-        name: defaultArchivingRelevance
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ArchivingRelevance"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CLOSED_AT`: Sorting by closedAt attribute
-          - `PROCEDURE_TYPE`: Sorting by procedureType attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetArchivableProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetArchivableProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetArchivableProceduresResponse"
-          description: OK
-      summary: Get archivable procedures
-      tags:
-      - Archiving
-  /archiving/procedures/bulk-update-archiving-relevance:
-    post:
-      operationId: bulkUpdateProceduresArchivingRelevance
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/BulkUpdateProceduresArchivingRelevanceRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/BulkUpdateProceduresArchivingRelevanceResponse"
-          description: OK
-      summary: Bulk update procedures archiving relevance
-      tags:
-      - Archiving
-  /archiving/relevant-procedures:
-    get:
-      operationId: getRelevantArchivableProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `closedAtDay` is set, only procedures are returned which were closed at that date
-          - If not submitted, no filtering takes place
-        in: query
-        name: closedAtDay
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If `exported` is true, only procedures are returned which have already been exported.
-          - If `exported` is false, only procedures are returned which have not been exported, yet.
-          - If not submitted, no filtering takes place
-        in: query
-        name: exported
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          The following sorting options are available:
-          - `CLOSED_AT`: Sorting by closedAt attribute
-          - `EXPORTED_AT`: Sorting by exportedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetRelevantArchivableProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetRelevantArchivableProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRelevantArchivableProceduresResponse"
-          description: OK
-      summary: Get relevant archivable procedures
-      tags:
-      - Archiving
-  /archiving/relevant-procedures/export:
-    post:
-      operationId: exportRelevantProcedures
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ExportArchivingRelevantProceduresRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - Archiving
-  /feature-toggles:
-    get:
-      operationId: getFeatureToggles
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetMeaslesProtectionFeatureTogglesResponse"
-          description: OK
-      tags:
-      - MeaslesProtectionFeatureToggles
-  /files/{fileId}:
-    delete:
-      operationId: deleteFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Soft deletes the specified file
-      tags:
-      - File
-    get:
-      operationId: getFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/Image"
-                - $ref: "#/components/schemas/Mail"
-                - $ref: "#/components/schemas/Pdf"
-          description: OK
-      summary: Retrieves the meta data of the specified file
-      tags:
-      - File
-  /files/{fileId}/deletion-request:
-    post:
-      operationId: requestFileDeletion
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateApprovalRequestRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      summary: Request deletion of a file entry
-      tags:
-      - File
-  /files/{fileId}/download:
-    get:
-      operationId: downloadFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - File
-  /files/{fileId}/meta-data:
-    put:
-      operationId: updateFileMetaData
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              oneOf:
-              - $ref: "#/components/schemas/ImageMetaData"
-              - $ref: "#/components/schemas/MailMetaData"
-              - $ref: "#/components/schemas/PdfMetaData"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/Image"
-                - $ref: "#/components/schemas/Mail"
-                - $ref: "#/components/schemas/Pdf"
-          description: Updated file
-      summary: Updates the meta data of the specified file
-      tags:
-      - File
-  /files/{fileId}/meta-data/history:
-    get:
-      operationId: getMetaDataHistory
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetMetaDataHistoryResponse"
-          description: OK
-      tags:
-      - File
-  /gdpr-validation-tasks:
-    get:
-      operationId: getAllGdprValidationTasks
-      parameters:
-      - in: query
-        name: status
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprValidationTaskSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAllValidationTasksResponse"
-          description: OK
-      summary: Get all GDPR validation tasks
-      tags:
-      - GdprValidationTask
-    post:
-      operationId: addGdprValidationTask
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddGdprValidationTaskRequest"
-        required: true
-      responses:
-        "200":
-          description: Add a GDPR validation task
-      summary: Add a GDPR validation task
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/notification-banner:
-    get:
-      operationId: getGdprNotificationBanner
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprNotificationBannerResponse"
-          description: OK
-      summary: Get data for GDPR notification banner
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}:
-    delete:
-      operationId: deleteGdprValidationTaskAndDownloadPackages
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/DeleteDownloadPackagesRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Delete the GDPR validation task with gdprProcedureId and GDPR download
-        packages with ids from request
-      tags:
-      - GdprValidationTask
-    get:
-      operationId: getGdprValidationTask
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprValidationTaskResponse"
-          description: OK
-      summary: Get Gdpr Validation Task by Gdpr Procedure Id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures:
-    get:
-      operationId: getGdprValidationTaskDetails
-      parameters:
-      - description: The Id of the GDPR procedure.
-        in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprValidationTaskDetailsResponse"
-          description: OK
-      summary: Get a GDPR validation task by id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}:
-    delete:
-      operationId: deleteBusinessProcedure
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: businessProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Delete the businessProcedure with businessProcedureId for validationTask
-        with gdprProcedureId with type right of erasure
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}/downloadPackage:
-    post:
-      operationId: addDownloadPackage
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: businessProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Creates a downloadPackage for validationTask with gdprProcedureId with
-        the data from the procedure with businessProcedureId
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/close:
-    post:
-      operationId: closeGdprValidationTask
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Close a GDPR validation task
-      summary: Close a GDPR validation task
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/download-packages:
-    get:
-      operationId: getGdprDownloadPackagesInfo
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprDownloadPackagesInfoResponse"
-          description: OK
-      summary: Get approved Gdpr Download Packages by Gdpr Procedure Id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}:
-    get:
-      operationId: getGdprDownloadPackage
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: downloadId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get Gdpr Download Package by the gdprProcedureId and its downloadId
-      tags:
-      - GdprValidationTask
-  /inbox-procedures:
-    get:
-      description: |
-        Get all inbox procedures with filter, sort, and pagination options
-      operationId: getInboxProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `inboxProcedureType` is submitted, only inbox procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place.
-        in: query
-        name: inboxProcedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If true, inbox procedures which have no type are returned in addition to the types specified by 'inboxProcedureType'.
-          - If false or not submitted, inbox procedures which have no type are not returned.
-        in: query
-        name: includeUntyped
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          Filter logic:
-          - If `inboxProcedureStatus` is submitted, only inbox procedures are returned which have one of the submitted statuses.
-          - If not submitted, no filtering takes place.
-        in: query
-        name: inboxProcedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/InboxProcedureStatus"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CREATED_AT`: Sorting by createdAt attribute
-          - `MODIFIED_AT`: Sorting by modifiedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetInboxProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetInboxProceduresSortOrder"
-      - description: Number of the requested page
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      - description: Amount of requested inbox procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 25
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInboxProceduresResponse"
-          description: OK
-      summary: Get inbox procedures
-      tags:
-      - InboxProcedure
-    post:
-      description: |-
-        Creates an inbox procedure with an optional file upload.
-
-               Permitted file formats:
-                - Image formats: jpeg, png
-                - PDF formats: pdf/a
-                - Mail formats: eml
-      operationId: addInboxProcedure
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                createInboxProcedureRequest:
-                  $ref: "#/components/schemas/CreateInboxProcedureRequest"
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-              required:
-              - createInboxProcedureRequest
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InboxProcedure"
-          description: OK
-      summary: Add inbox procedure
-      tags:
-      - InboxProcedure
-  /inbox-procedures/{inboxProcedureId}:
-    get:
-      operationId: getInboxProcedure
-      parameters:
-      - in: path
-        name: inboxProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInboxProcedureResponse"
-          description: OK
-      summary: Get inbox procedure with detailed information
-      tags:
-      - InboxProcedure
-  /inbox-procedures/{inboxProcedureId}/inbox-procedure-status:
-    put:
-      operationId: updateInboxProcedureStatus
-      parameters:
-      - in: path
-        name: inboxProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InboxProcedureStatus"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InboxProcedure"
-          description: OK
-      summary: Update status of inbox procedure
-      tags:
-      - InboxProcedure
-  /organisations/documents/privacy-notice:
-    get:
-      operationId: getPrivacyNotice
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get the privacy-notice document.
-      tags:
-      - OrganisationPortal
-  /organisations/documents/privacy-policy:
-    get:
-      operationId: getPrivacyPolicy
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get the privacy-policy document.
-      tags:
-      - OrganisationPortal
-  /organisations/report:
-    post:
-      operationId: report
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ReportCaseRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: A method to report multiple affected persons belonging to a facility
-        and open draft cases
-      tags:
-      - OrganisationPortal
-  /procedure-metrics:
-    get:
-      operationId: getProcedureMetrics
-      parameters:
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureMetricsResponse"
-          description: the metrics of procedures
-      summary: Get procedure metrics for procedures created in the given time range
-      tags:
-      - Procedure
-  /procedures:
-    get:
-      description: |
-        GET operation for retrieving basic information of procedures for the procedure overview.
-      operationId: getProcedures_1
-      parameters:
-      - description: |
-          Only procedures are returned where the assigneeId of at least one task equals the `assignedToId`.
-          If not submitted, no filtering takes place.
-        in: query
-        name: assignedToId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: |
-          Filter logic:
-          - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CREATED_AT`: Sorting by createdAt attribute
-          - `MODIFIED_AT`: Sorting by modifiedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for user
-      tags:
-      - Procedure
-  /procedures/check-file-state-usage:
-    post:
-      operationId: checkFileStateUsage
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CheckFileStateUsageRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CheckFileStateUsageResponse"
-          description: OK
-      summary: Identify which file state IDs are still used by active procedures.
-      tags:
-      - Procedure
-  /procedures/recent:
-    get:
-      operationId: getRecentProcedures
-      parameters:
-      - in: query
-        name: userId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRecentProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for user
-      tags:
-      - Procedure
-  /procedures/recent/self:
-    get:
-      operationId: getSelfRecentProcedures
-      parameters:
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRecentProceduresResponse"
-          description: the current users recent procedures
-      summary: Get recent procedures for the current user
-      tags:
-      - Procedure
-  /procedures/search:
-    get:
-      operationId: searchProcedures
-      parameters:
-      - in: query
-        name: query
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresResponse"
-          description: OK
-      tags:
-      - Procedure
-  /procedures/{id}:
-    get:
-      operationId: getDetailedProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetDetailedProcedureResponse"
-          description: a single procedure with details
-      summary: Get a single procedure with details
-      tags:
-      - Procedure
-  /procedures/{id}/approval-requests:
-    get:
-      operationId: getApprovalRequests
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureApprovalRequestsResponse"
-          description: OK
-      summary: Get all approval requests related to this procedure
-      tags:
-      - Procedure
-  /procedures/{id}/files:
-    get:
-      description: |
-        This returns all relevant (highest version per keydocument type and non-deleted) files sorted by descending creation date.
-        That is:
-         * if an progress entry has a keydocument type set, then its files are only returned if it also has the highest keydocument version of the respective key document type.
-         * if an progress entry does not have a keydocument type, then its files are always returned.
-      operationId: getProcedureFileDetails
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureFileDetailsResponse"
-          description: OK
-      summary: Get relevant procedure files
-      tags:
-      - Procedure
-  /procedures/{procedureId}/progress-entries:
-    get:
-      operationId: getProgressEntries
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - description: Filter on progressEntryType
-        in: query
-        name: progressEntryType
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-          uniqueItems: true
-      - description: Filter on child class of progressEntry
-        in: query
-        name: progressEntryClass
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProgressEntryClass"
-          uniqueItems: true
-      - description: |
-          If `initiatedBy` is set with a `userId` then the following is returned:
-          * Only progressEntries with `createdBy`=`userId` in case `ManualProgressEntry` or `ProcessedInboxProgressEntry`
-          * Only progressEntries with `triggeredBy`=`userId` in case `SystemProgressEntry`
-        in: query
-        name: initiatedBy
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      - description: |
-          Filter on triggerType.
-          If this is set, only SystemProgressEntries are returned since only SystemProgressEntries have this attribute.
-        in: query
-        name: triggerType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TriggerType"
-          uniqueItems: true
-      - description: 'Sorting on either modifiedAt or createdAt '
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProgressEntrySortBy"
-      - description: Sorting order. Possible options  "ASC" for ascending and "DESC"
-          for descending.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProgressEntrySortOrder"
-      - description: Maximum number of elements to return
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Index of page to be returned
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProgressEntriesResponse"
-          description: OK
-      summary: Get list of procedure's progress entries
-      tags:
-      - ProgressEntry
-    post:
-      description: |-
-        Creates a manual progress entry with an optional file upload.
-
-               Permitted file formats:
-                - Image formats: jpeg, png
-                - PDF formats: pdf/a
-                - Mail formats: eml
-      operationId: addProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                createManualProgressEntryRequest:
-                  $ref: "#/components/schemas/CreateManualProgressEntryRequest"
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-              required:
-              - createManualProgressEntryRequest
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ManualProgressEntry"
-          description: OK
-      summary: Create a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}:
-    delete:
-      operationId: removeProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Remove a manual progress entry
-      tags:
-      - ProgressEntry
-    get:
-      operationId: getProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProgressEntryResponse"
-          description: OK
-      summary: Get a progress entry
-      tags:
-      - ProgressEntry
-    patch:
-      operationId: patchProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchManualProgressEntryRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ManualProgressEntry"
-          description: OK
-      summary: Modify a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}/deletion-request:
-    post:
-      operationId: requestProgressEntryDeletion
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateApprovalRequestRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      summary: Request deletion of a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}/history:
-    get:
-      operationId: getManualProgressEntryHistory
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetManualProgressEntryHistoryResponse"
-          description: OK
-      summary: Get the history of a manual progress entry
-      tags:
-      - ProgressEntry
-  /protection-procedures:
-    get:
-      operationId: getProcedures
-      parameters:
-      - description: The page to be returned
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      - description: The number of items to be returned
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 25
-          maximum: 200
-          minimum: 1
-      - in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetMeaslesProtectionProceduresSortBy"
-      - in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetMeaslesProtectionProceduresSortOrder"
-      - description: |
-          Filter logic:
-          - If 'creationDate' is submitted, only measles procedures which were created at the provided date are returned.
-          - If no 'creationDate' is submitted, no filtering takes place.
-        in: query
-        name: creationDate
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If 'birthday' is submitted, only measles procedures with affected persons born on the provided date are returned.
-          - If no 'birthday' is submitted, no filtering takes place.
-        in: query
-        name: birthday
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If 'facilityType' is submitted, only measles procedures are returned which have one of the provided types.
-          - If no 'facilityType' is submitted, no filtering takes place.
-        in: query
-        name: facilityType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/MPFacilityType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If 'caseStatus' is submitted, only measles procedures are returned which have one of the provided types.
-          - If no 'caseStatus' is submitted, no filtering takes place.
-        in: query
-        name: caseStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/CaseStatus"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If 'procedureStatus' is submitted, only measles procedures are returned which have one of the provided types.
-          - If no 'procedureStatus' is submitted, no filtering takes place.
-        in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If 'roleStatus' is submitted, only measles procedures are returned which have one of the provided types.
-          - If no 'roleStatus' is submitted, no filtering takes place.
-        in: query
-        name: roleStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/RoleStatus"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If true, only measles procedures are returned which have an appointment.
-          - If false, only measles procedures are returned which do not have an appointment.
-          - If null, no filtering takes place.
-        in: query
-        name: hasAppointment
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          Filter logic:
-          - If 'measure' is submitted, only measles procedures are returned which have one of the provided types.
-          - If no 'measure' is submitted, no filtering takes place.
-        in: query
-        name: measure
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/Measure"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If 'proofRequestSent' is submitted, only measles procedures are returned which have one of the provided types.
-          - If no 'proofRequestSent' is submitted, no filtering takes place.
-        in: query
-        name: proofRequestSent
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProofRequestSent"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If 'proofSubmissionResult' is submitted, only measles procedures are returned which have one of the provided types.
-          - If no 'proofSubmissionResult' is submitted, no filtering takes place.
-        in: query
-        name: proofSubmissionResult
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/SubmissionResult"
-          uniqueItems: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetMeaslesProtectionProceduresResponse"
-          description: OK
-      summary: Get all open measles protection procedures.
-      tags:
-      - ProtectionProcedure
-  /protection-procedures/draft/affected-person:
-    post:
-      operationId: createPerson
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreatePersonRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CreatePersonResponse"
-          description: OK
-      summary: Create a draft measles protection procedure with an affected person.
-      tags:
-      - DraftProtectionProcedure
-  /protection-procedures/draft/{id}/custodians:
-    post:
-      operationId: addCustodian
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddCustodianRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddCustodianResponse"
-          description: OK
-      summary: Add custodian to a draft measles protection procedure.
-      tags:
-      - DraftProtectionProcedure
-  /protection-procedures/draft/{id}/facilities:
-    post:
-      operationId: addFacility
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddFacilityRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddFacilityResponse"
-          description: OK
-      summary: Add facility to a draft measles protection procedure.
-      tags:
-      - DraftProtectionProcedure
-  /protection-procedures/draft/{id}/open:
-    post:
-      operationId: openProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/OpenProcedureRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/OpenProcedureResponse"
-          description: OK
-      summary: Finalize draft of measles protection procedure.
-      tags:
-      - DraftProtectionProcedure
-  /protection-procedures/for-person:
-    post:
-      operationId: getProceduresForPerson
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GetProceduresForPersonRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresForPersonResponse"
-          description: OK
-      summary: Get all measles protection procedures for a given person.
-      tags:
-      - ProtectionProcedure
-  /protection-procedures/free-appointments:
-    get:
-      operationId: getFreeMeaslesProtectionAppointments
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetFreeAppointmentsResponse"
-          description: OK
-      summary: Get free appointments.
-      tags:
-      - AppointmentBooking
-  /protection-procedures/{id}:
-    delete:
-      operationId: deleteProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Delete measles protection procedure by id.
-      tags:
-      - ProtectionProcedure
-    get:
-      operationId: getProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/DraftMeaslesProcedure"
-                - $ref: "#/components/schemas/MeaslesProtectionProcedure"
-          description: OK
-      summary: Get measles protection procedure by id.
-      tags:
-      - ProtectionProcedure
-    put:
-      operationId: updateProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateProcedureRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/DraftMeaslesProcedure"
-                - $ref: "#/components/schemas/MeaslesProtectionProcedure"
-          description: OK
-      summary: Update a measles protection procedure.
-      tags:
-      - ProtectionProcedure
-  /protection-procedures/{id}/access-restriction:
-    patch:
-      operationId: updateAccessRestriction
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateAccessRestriction"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AccessRestriction"
-          description: OK
-      summary: Update an access restriction of a procedure
-      tags:
-      - AccessRestriction
-    post:
-      operationId: createAccessRestriction
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateAccessRestriction"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AccessRestriction"
-          description: OK
-      summary: Enforce an access restriction
-      tags:
-      - AccessRestriction
-  /protection-procedures/{id}/access-restriction/letters:
-    post:
-      operationId: createAccessRestrictionLetter
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-                request:
-                  $ref: "#/components/schemas/CreateAccessRestrictionLetter"
-              required:
-              - request
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AccessRestrictionLetter"
-          description: OK
-      summary: Create or attach an access restriction letter.
-      tags:
-      - AccessRestriction
-  /protection-procedures/{id}/case-status:
-    patch:
-      operationId: updateCaseStatus
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CaseStatus"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/DraftMeaslesProcedure"
-                - $ref: "#/components/schemas/MeaslesProtectionProcedure"
-          description: OK
-      summary: Update the case status of a measles protection procedure.
-      tags:
-      - ProtectionProcedure
-  /protection-procedures/{id}/monetary-fines:
-    post:
-      operationId: createMonetaryFine
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateMonetaryFine"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/MonetaryFine"
-          description: OK
-      summary: Document a monetary fine entry.
-      tags:
-      - MonetaryFine
-  /protection-procedures/{id}/monetary-fines/{monetaryFineId}:
-    patch:
-      operationId: updateMonetaryFine
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: monetaryFineId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateMonetaryFine"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/MonetaryFine"
-          description: OK
-      summary: Update a monetary fine.
-      tags:
-      - MonetaryFine
-  /protection-procedures/{id}/proof-submissions:
-    post:
-      operationId: createProofSubmission
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-                request:
-                  $ref: "#/components/schemas/CreateProofSubmission"
-              required:
-              - request
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ProofSubmission"
-          description: OK
-      summary: Add a proof submission to a procedure
-      tags:
-      - ProofSubmission
-  /protection-procedures/{id}/proof-submissions/letters:
-    get:
-      operationId: getProofRequestLetters
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProofRequestLettersResponse"
-          description: OK
-      summary: List proof submission letters
-      tags:
-      - ProofRequestLetter
-  /protection-procedures/{id}/proof-submissions/letters/create:
-    post:
-      operationId: createProofRequestLetter
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateProofRequestLetter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: byte
-          description: OK
-      summary: Create a proof request letter
-      tags:
-      - ProofRequestLetter
-  /protection-procedures/{id}/proof-submissions/letters/save:
-    post:
-      operationId: saveProofRequestLetter
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SaveProofRequestLetter"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Create and save a proof request letter
-      tags:
-      - ProofRequestLetter
-  /protection-procedures/{id}/proof-submissions/{proofSubmissionId}:
-    patch:
-      operationId: updateProofSubmission
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: proofSubmissionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateProofSubmission"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ProofSubmission"
-          description: OK
-      summary: Update a proof submission of a procedure
-      tags:
-      - ProofSubmission
-  /protection-procedures/{procedureId}/book-appointment:
-    post:
-      operationId: bookAppointmentForProcedure
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/BookAppointmentRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/MeaslesProtectionProcedure"
-          description: OK
-      summary: Book or update an appointment for a given procedure.
-      tags:
-      - AppointmentBooking
-  /protection-procedures/{procedureId}/close:
-    put:
-      operationId: close
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Close measles protection procedure.
-      tags:
-      - StatusTransition
-  /protection-procedures/{procedureId}/delete-appointment:
-    delete:
-      operationId: deleteAppointmentForProcedure
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/MeaslesProtectionProcedure"
-          description: OK
-      summary: Remove an appointment for a given procedure.
-      tags:
-      - AppointmentBooking
-  /protection-procedures/{procedureId}/reopen:
-    put:
-      operationId: reopen
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Reopen measles protection procedure.
-      tags:
-      - StatusTransition
-  /task-metrics:
-    get:
-      operationId: getTaskMetrics
-      parameters:
-      - in: query
-        name: procedureType
-        required: true
-        schema:
-          $ref: "#/components/schemas/ProcedureType"
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTaskMetricsResponse"
-          description: the metrics of a specific procedure type
-      summary: Get tasks metrics for a procedure type of a business module for procedures
-        created in the given time range
-      tags:
-      - Task
-  /tasks:
-    get:
-      operationId: getTasks
-      parameters:
-      - in: query
-        name: assigneeId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: assignedById
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      - in: query
-        name: taskTypes
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskType"
-          uniqueItems: true
-      - in: query
-        name: taskStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskStatus"
-          uniqueItems: true
-      - in: query
-        name: sortKey
-        required: true
-        schema:
-          $ref: "#/components/schemas/GetTasksSortBy"
-      - in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetTasksSortOrder"
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TaskResponse"
-          description: tasks
-      summary: Get tasks
-      tags:
-      - Task
-  /tasks/dashboard:
-    get:
-      operationId: getTasksForDashboard
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TaskResponse"
-          description: tasks
-      summary: Get tasks for the dashboard
-      tags:
-      - Task
-  /tasks/team-view:
-    get:
-      description: Returns all _open_ tasks per module group member.
-      operationId: getTasksByAssignee
-      parameters:
-      - description: |
-          If provided, `assignee` must be member of the module group.
-          If not provided, all tasks for all members of the module group are returned.
-        in: query
-        name: assigneeId
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTaskByUserResponse"
-          description: OK
-      tags:
-      - Task
-  /tasks/{taskId}/assignment:
-    put:
-      operationId: assignTask
-      parameters:
-      - in: path
-        name: taskId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AssignTaskRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Task"
-          description: OK
-      tags:
-      - Task
-  /tasks/{taskId}/self-assignment:
-    put:
-      operationId: selfAssignTask
-      parameters:
-      - in: path
-        name: taskId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SelfAssignTaskRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Task"
-          description: OK
-      tags:
-      - Task
-  /test-helper/archiving-job:
-    post:
-      operationId: runArchivingJob
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/audit-log-storage:
-    delete:
-      operationId: clearAuditLogStorageDirectory
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/enabled-new-features/{featureToEnable}:
-    post:
-      operationId: enableNewFeature
-      parameters:
-      - in: path
-        name: featureToEnable
-        required: true
-        schema:
-          $ref: "#/components/schemas/MeaslesProtectionFeature"
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population/procedures:
-    post:
-      operationId: populateMeaslesProtectionProcedures
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PopulationRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/MeaslesProtectionProcedurePopulationResult"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-components:
-  schemas:
-    AbstractFile:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFileReference"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          createdAt:
-            type: string
-            format: date-time
-          createdBy:
-            type: string
-            format: uuid
-          fileName:
-            type: string
-          fileSizeBytes:
-            type: integer
-            format: int32
-          fileType:
-            $ref: "#/components/schemas/FileType"
-          locked:
-            type: boolean
-          modifiedAt:
-            type: string
-            format: date-time
-      - $ref: "#/components/schemas/ApprovalRequestEntity"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    AbstractFileReference:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        deletable:
-          type: boolean
-        deleted:
-          type: boolean
-        fileId:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - deletable
-      - deleted
-      - fileId
-    AccessRestriction:
-      type: object
-      properties:
-        letters:
-          type: array
-          items:
-            $ref: "#/components/schemas/AccessRestrictionLetter"
-        restrictionIssuedDate:
-          type: string
-          format: date
-          description: The date when the access restriction was issued.
-          example: 2024-02-03
-        restrictionStartDate:
-          type: string
-          format: date
-          description: The date when the access restriction becomes effective.
-          example: 2024-02-10
-        restrictionTerminationDate:
-          type: string
-          format: date
-          description: The date when the access restriction is terminated.
-          example: 2024-02-28
-      required:
-      - restrictionIssuedDate
-      - restrictionStartDate
-    AccessRestrictionLetter:
-      type: object
-      properties:
-        documentFileId:
-          type: string
-          format: uuid
-          description: The id of the document related to the access restriction letter.
-        externalId:
-          type: string
-          format: uuid
-          description: The unique identifier for the access restriction letter.
-          example: 0e47cc46-0092-40df-883b-581e31288e28
-        recipientId:
-          type: string
-          format: uuid
-          description: The unique identifier for the recipient of the restriction
-            letter.
-        sentAt:
-          type: string
-          format: date
-          description: The date and time when the access restriction letter was sent.
-          example: 2024-06-03
-      required:
-      - externalId
-      - recipientId
-      - sentAt
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    AddCustodianRequest:
-      type: object
-      properties:
-        custodian:
-          $ref: "#/components/schemas/CustodianDetails"
-      required:
-      - custodian
-    AddCustodianResponse:
-      type: object
-      properties:
-        custodian:
-          $ref: "#/components/schemas/CustodianDetails"
-        id:
-          type: string
-          format: uuid
-      required:
-      - custodian
-      - id
-    AddFacilityFileStateRequest:
-      type: object
-      description: Request used for adding facilities from non-external sources
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        referenceFacilityId:
-          type: string
-          format: uuid
-          description: "Id of a referenceFacility. If this Id is provided, a new File\
-            \ State with the input attributes is created for that referenceFacility,\
-            \ regardless of any matching logic."
-          example: be9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-      required:
-      - dataOrigin
-      - name
-    AddFacilityRequest:
-      type: object
-      properties:
-        facility:
-          $ref: "#/components/schemas/AddFacilityFileStateRequest"
-        otherFacilityTypeInformation:
-          type: string
-        type:
-          $ref: "#/components/schemas/MPFacilityType"
-      required:
-      - facility
-      - type
-    AddFacilityResponse:
-      type: object
-      properties:
-        facility:
-          $ref: "#/components/schemas/Facility"
-        id:
-          type: string
-          format: uuid
-      required:
-      - facility
-      - id
-    AddGdprValidationTaskRequest:
-      type: object
-      properties:
-        gdprProcedureId:
-          type: string
-          format: uuid
-        startedAt:
-          type: string
-          format: date-time
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - gdprProcedureId
-      - startedAt
-      - type
-    AddPersonFileStateRequest:
-      type: object
-      description: Request used for adding persons from non-external sources
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        dateOfBirth:
-          type: string
-          format: date
-          description: The date of birth of the Person.
-          example: 2000-01-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Person.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: The given name(s) of the Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: The last name of the Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          description: The last name at birth of the Person.
-          example: Smith
-          maxLength: 40
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Person.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          description: The place of birth (without country) of the Person.
-          example: Berlin
-          maxLength: 50
-          minLength: 1
-        referencePersonId:
-          type: string
-          format: uuid
-          description: "Id of a referencePerson. If this Id is provided, a new File\
-            \ State with the input attributes is created for that referencePerson,\
-            \ regardless of any matching logic."
-          example: be9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - dataOrigin
-      - dateOfBirth
-      - firstName
-      - lastName
-    Address:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    AffectedPerson:
-      type: object
-      description: Represents the individual the facility reports on and is the integral
-        part of the procedure.
-      properties:
-        address:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dateOfBirth:
-          type: string
-          format: date
-          description: Date of birth of the affected person.
-          example: 2018-07-26
-        emailAddresses:
-          type: array
-          items:
-            type: string
-        firstName:
-          type: string
-          description: First name of the affected person.
-          example: Susanne
-        gender:
-          $ref: "#/components/schemas/Gender"
-        id:
-          type: string
-          format: uuid
-        lastName:
-          type: string
-          description: Last name of the affected person.
-          example: Gerber
-        nameAtBirth:
-          type: string
-        phoneNumbers:
-          type: array
-          items:
-            type: string
-        placeOfBirth:
-          type: string
-        roleStatus:
-          $ref: "#/components/schemas/RoleStatus"
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-      required:
-      - address
-      - dateOfBirth
-      - firstName
-      - lastName
-    AffectedPersonDetails:
-      type: object
-      description: Represents the individual the facility reports on and is the integral
-        part of the procedure.
-      properties:
-        address:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        custodians:
-          type: array
-          items:
-            $ref: "#/components/schemas/CustodianDetails"
-        dateOfBirth:
-          type: string
-          format: date
-          description: Date of birth of the affected person.
-          example: 2018-07-26
-        emailAddresses:
-          type: array
-          items:
-            type: string
-        firstName:
-          type: string
-          description: First name of the affected person.
-          example: Susanne
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: Last name of the affected person.
-          example: Gerber
-        nameAtBirth:
-          type: string
-        phoneNumbers:
-          type: array
-          items:
-            type: string
-        placeOfBirth:
-          type: string
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-      required:
-      - address
-      - dateOfBirth
-      - firstName
-      - lastName
-    AffectedPersonSupplementalData:
-      type: object
-      description: Used to include reporting data and role status with draft procedures
-        submitted via the citizen portal measles reporting form.
-      properties:
-        reportData:
-          $ref: "#/components/schemas/ReportData"
-        roleStatus:
-          $ref: "#/components/schemas/RoleStatus"
-    Appointment:
-      type: object
-      description: Appointment of a procedure.
-      properties:
-        end:
-          type: string
-          format: date-time
-        start:
-          type: string
-          format: date-time
-      required:
-      - end
-      - start
-    AppointmentBlockSortKey:
-      type: string
-      enum:
-      - START
-      - END
-    AppointmentLocation:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-      required:
-      - id
-      - name
-    AppointmentType:
-      type: string
-      enum:
-      - CONSULTATION
-      - VACCINATION
-      - REGULAR_EXAMINATION
-      - CAN_CHILD
-      - ENTRY_LEVEL
-      - SPECIAL_NEEDS
-      - PROOF_SUBMISSION
-      - HIV_STI_CONSULTATION
-      - SEX_WORK
-      - RESULTS_REVIEW
-      - OFFICIAL_MEDICAL_SERVICE
-    AppointmentTypeConfig:
-      type: object
-      properties:
-        appointmentTypeDto:
-          $ref: "#/components/schemas/AppointmentType"
-        id:
-          type: string
-          format: uuid
-        standardDurationInMinutes:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - appointmentTypeDto
-      - id
-      - standardDurationInMinutes
-    ApprovalRequest:
-      type: object
-      properties:
-        approvalRequestId:
-          type: string
-          format: uuid
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-          format: uuid
-        decidedAt:
-          type: string
-          format: date-time
-        decidedBy:
-          type: string
-          format: uuid
-        decision:
-          $ref: "#/components/schemas/Decision"
-        entity:
-          oneOf:
-          - $ref: "#/components/schemas/ManualProgressEntry"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        operation:
-          $ref: "#/components/schemas/Operation"
-        reason:
-          type: string
-        status:
-          $ref: "#/components/schemas/ApprovalRequestStatus"
-      required:
-      - approvalRequestId
-      - createdAt
-      - createdBy
-      - operation
-      - reason
-      - status
-    ApprovalRequestEntity:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    ApprovalRequestStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    ArchivingDetails:
-      type: object
-      properties:
-        archivingPeriodYears:
-          type: integer
-          format: int32
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-      required:
-      - archivingPeriodYears
-      - archivingRelevance
-    ArchivingRelevance:
-      type: string
-      enum:
-      - DEFAULT
-      - RELEVANT
-      - IRRELEVANT
-    ArchivingRelevanceSettings:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        defaultArchivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-      required:
-      - archivingRelevance
-      - defaultArchivingRelevance
-    AssignTaskRequest:
-      type: object
-      properties:
-        assignee:
-          type: string
-          format: uuid
-        dueAt:
-          type: string
-          format: date-time
-        taskVersion:
-          type: integer
-          format: int64
-      required:
-      - assignee
-      - taskVersion
-    BookAppointmentRequest:
-      type: object
-      properties:
-        end:
-          type: string
-          format: date-time
-        start:
-          type: string
-          format: date-time
-      required:
-      - end
-      - start
-    BulkUpdateProceduresArchivingRelevanceRequest:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        procedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 200
-          minItems: 1
-          uniqueItems: true
-      required:
-      - archivingRelevance
-      - procedures
-    BulkUpdateProceduresArchivingRelevanceResponse:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        failedProcedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-        updatedProcedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      required:
-      - archivingRelevance
-      - failedProcedures
-      - updatedProcedures
-    BusinessModule:
-      type: string
-      enum:
-      - INSPECTION
-      - SCHOOL_ENTRY
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY
-      - DENTAL
-      - OFFICIAL_MEDICAL_SERVICE
-    BusinessProcedureInclusionStatus:
-      type: string
-      enum:
-      - INCLUDED
-      - UNDECIDED
-    BusinessProcedureWithInclusionStatus:
-      type: object
-      properties:
-        businessProcedure:
-          $ref: "#/components/schemas/Procedure"
-        inclusionStatus:
-          $ref: "#/components/schemas/BusinessProcedureInclusionStatus"
-      required:
-      - businessProcedure
-      - inclusionStatus
-    CaseStatus:
-      type: string
-      description: Indicates the current status of the procedure or the final outcome.
-      enum:
-      - PROCEDURE_VALIDATION
-      - PROCEDURE_RECORDED
-      - LETTER_SEND
-      - FOLLOW_UP_LETTER_SEND
-      - APPOINTMENT_BOOKED
-      - FOLLOW_UP_APPOINTMENT
-      - PROOF_SUBMITTED
-      - ATTENDED_NO_PROOF
-      - REPORT_WITHDRAWN
-      - PERSON_NOT_ACTIVE
-      - PERSON_TEMP_NOT_ACTIVE
-      - MEDICAL_ATTEST
-      - TEMP_MEDICAL_ATTEST
-      - AUTHORITY_HANDOVER
-      - ACCESS_RESTRICTED
-      - INDIVIDUAL_REVIEW
-    CheckFileStateUsageRequest:
-      type: object
-      properties:
-        fileStatesIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-      required:
-      - fileStatesIds
-    CheckFileStateUsageResponse:
-      type: object
-      properties:
-        inUse:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - inUse
-    ContactDetails:
-      type: object
-      properties:
-        address:
-          $ref: "#/components/schemas/InboxProcedureAddress"
-        contactType:
-          $ref: "#/components/schemas/ContactType"
-        dateOfBirth:
-          type: string
-          format: date
-        emailAddress:
-          type: string
-        facilityName:
-          type: string
-        firstName:
-          type: string
-        lastName:
-          type: string
-        phoneNumber:
-          type: string
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          $ref: "#/components/schemas/Title"
-      required:
-      - contactType
-      - salutation
-    ContactType:
-      type: string
-      enum:
-      - PRIVATE_PERSON
-      - FACILITY
-    CountryCode:
-      type: string
-      description: "List of country codes in ISO 3166-1 alpha-2 format. With custom\
-        \ extensions for stateless, non-standard countries, and unknown countries."
-      enum:
-      - AD
-      - AE
-      - AF
-      - AG
-      - AI
-      - AL
-      - AM
-      - AO
-      - AQ
-      - AR
-      - AS
-      - AT
-      - AU
-      - AW
-      - AX
-      - AZ
-      - BA
-      - BB
-      - BD
-      - BE
-      - BF
-      - BG
-      - BH
-      - BI
-      - BJ
-      - BL
-      - BM
-      - BN
-      - BO
-      - BQ
-      - BR
-      - BS
-      - BT
-      - BV
-      - BW
-      - BY
-      - BZ
-      - CA
-      - CC
-      - CD
-      - CF
-      - CG
-      - CH
-      - CI
-      - CK
-      - CL
-      - CM
-      - CN
-      - CO
-      - CR
-      - CU
-      - CV
-      - CW
-      - CX
-      - CY
-      - CZ
-      - DE
-      - DJ
-      - DK
-      - DM
-      - DO
-      - DZ
-      - EC
-      - EE
-      - EG
-      - EH
-      - ER
-      - ES
-      - ET
-      - FI
-      - FJ
-      - FK
-      - FM
-      - FO
-      - FR
-      - GA
-      - GB
-      - GD
-      - GE
-      - GF
-      - GG
-      - GH
-      - GI
-      - GL
-      - GM
-      - GN
-      - GP
-      - GQ
-      - GR
-      - GS
-      - GT
-      - GU
-      - GW
-      - GY
-      - HK
-      - HM
-      - HN
-      - HR
-      - HT
-      - HU
-      - ID
-      - IE
-      - IL
-      - IM
-      - IN
-      - IO
-      - IQ
-      - IR
-      - IS
-      - IT
-      - JE
-      - JM
-      - JO
-      - JP
-      - KE
-      - KG
-      - KH
-      - KI
-      - KM
-      - KN
-      - KP
-      - KR
-      - KW
-      - KY
-      - KZ
-      - LA
-      - LB
-      - LC
-      - LI
-      - LK
-      - LR
-      - LS
-      - LT
-      - LU
-      - LV
-      - LY
-      - MA
-      - MC
-      - MD
-      - ME
-      - MF
-      - MG
-      - MH
-      - MK
-      - ML
-      - MM
-      - MN
-      - MO
-      - MP
-      - MQ
-      - MR
-      - MS
-      - MT
-      - MU
-      - MV
-      - MW
-      - MX
-      - MY
-      - MZ
-      - NA
-      - NC
-      - NE
-      - NF
-      - NG
-      - NI
-      - NL
-      - "NO"
-      - NP
-      - NR
-      - NU
-      - NZ
-      - OM
-      - PA
-      - PE
-      - PF
-      - PG
-      - PH
-      - PK
-      - PL
-      - PM
-      - PN
-      - PR
-      - PS
-      - PT
-      - PW
-      - PY
-      - QA
-      - RE
-      - RO
-      - RS
-      - RU
-      - RW
-      - SA
-      - SB
-      - SC
-      - SD
-      - SE
-      - SG
-      - SH
-      - SI
-      - SJ
-      - SK
-      - SL
-      - SM
-      - SN
-      - SO
-      - SR
-      - SS
-      - ST
-      - SV
-      - SX
-      - SY
-      - SZ
-      - TC
-      - TD
-      - TF
-      - TG
-      - TH
-      - TJ
-      - TK
-      - TL
-      - TM
-      - TN
-      - TO
-      - TR
-      - TT
-      - TV
-      - TW
-      - TZ
-      - UA
-      - UG
-      - UM
-      - US
-      - UY
-      - UZ
-      - VA
-      - VC
-      - VE
-      - VG
-      - VI
-      - VN
-      - VU
-      - WF
-      - WS
-      - YE
-      - YT
-      - ZA
-      - ZM
-      - ZW
-      - XK
-      - UNKNOWN
-      - STATELESS
-    CreateAccessRestriction:
-      type: object
-      properties:
-        restrictionIssuedDate:
-          type: string
-          format: date
-        restrictionStartDate:
-          type: string
-          format: date
-        restrictionTerminationDate:
-          type: string
-          format: date
-      required:
-      - restrictionIssuedDate
-      - restrictionStartDate
-    CreateAccessRestrictionLetter:
-      type: object
-      properties:
-        recipientId:
-          type: string
-          format: uuid
-        sentAt:
-          type: string
-          format: date
-      required:
-      - recipientId
-      - sentAt
-    CreateAppointmentBlockGroupResponse:
-      type: object
-      properties:
-        appointmentBlockIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-        id:
-          type: string
-          format: uuid
-          description: Id of the AppointmentBlockGroup.
-          example: a765534d-760a-417d-8639-5e2fd59246e2
-      required:
-      - appointmentBlockIds
-      - id
-    CreateApprovalRequestRequest:
-      type: object
-      properties:
-        reason:
-          type: string
-      required:
-      - reason
-    CreateDailyAppointmentBlock:
-      type: object
-      properties:
-        daysOfWeek:
-          type: array
-          items:
-            $ref: "#/components/schemas/DayOfWeek"
-        end:
-          type: string
-          format: date-time
-          description: Time at which the appointment block ends.
-          example: 2016-01-01T01:45:00.123456+01:00
-        start:
-          type: string
-          format: date-time
-          description: Time at which the appointment block starts.
-          example: 2016-01-01T01:00:00.123456+01:00
-      required:
-      - daysOfWeek
-      - end
-      - start
-    CreateDailyAppointmentBlockGroupRequest:
-      type: object
-      properties:
-        appointmentBlocks:
-          type: array
-          items:
-            $ref: "#/components/schemas/CreateDailyAppointmentBlock"
-        consultants:
-          type: array
-          items:
-            type: string
-            format: uuid
-        locationId:
-          type: string
-          format: uuid
-        mfas:
-          type: array
-          items:
-            type: string
-            format: uuid
-        parallelExaminations:
-          type: integer
-          format: int32
-          maximum: 10
-          minimum: 1
-        physicians:
-          type: array
-          items:
-            type: string
-            format: uuid
-        type:
-          $ref: "#/components/schemas/AppointmentType"
-      required:
-      - appointmentBlocks
-      - parallelExaminations
-      - type
-    CreateInboxProcedureRequest:
-      type: object
-      properties:
-        contactDetails:
-          $ref: "#/components/schemas/ContactDetails"
-        inboxProcedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        inboxProgressEntry:
-          $ref: "#/components/schemas/CreateInboxProgressEntry"
-      required:
-      - contactDetails
-      - inboxProgressEntry
-    CreateInboxProgressEntry:
-      type: object
-      properties:
-        inboxProgressEntryType:
-          $ref: "#/components/schemas/InboxProgressEntryType"
-        messageText:
-          type: string
-        subject:
-          type: string
-      required:
-      - inboxProgressEntryType
-    CreateManualProgressEntryRequest:
-      type: object
-      properties:
-        keyDocumentType:
-          type: string
-        manualProgressEntryType:
-          $ref: "#/components/schemas/ManualProgressEntryType"
-        note:
-          type: string
-      required:
-      - manualProgressEntryType
-    CreateMonetaryFine:
-      type: object
-      properties:
-        fineIssuedDate:
-          type: string
-          format: date
-      required:
-      - fineIssuedDate
-    CreatePersonRequest:
-      type: object
-      properties:
-        person:
-          $ref: "#/components/schemas/AffectedPersonDetails"
-      required:
-      - person
-    CreatePersonResponse:
-      type: object
-      properties:
-        affectedPerson:
-          $ref: "#/components/schemas/AffectedPersonDetails"
-        id:
-          type: string
-          format: uuid
-      required:
-      - affectedPerson
-      - id
-    CreateProofRequestLetter:
-      type: object
-      properties:
-        deadline:
-          type: string
-          format: date
-          description: The deadline in the future by which a proof must be submitted.
-          example: 2024-06-03
-        recipientId:
-          type: string
-          format: uuid
-          description: "The id of the letter recipient, e.g affected person, custodian,\
-            \ etc.."
-        withDeliveryCertificate:
-          type: boolean
-          description: Indicates whether the letter was sent with a delivery certificate.
-      required:
-      - deadline
-      - recipientId
-      - withDeliveryCertificate
-    CreateProofSubmission:
-      type: object
-      properties:
-        medicalAttestDeadline:
-          type: string
-          format: date
-          description: Indicates a deadline when a temporary medical attest was provided.
-          example: 2024-07-17
-        submissionDate:
-          type: string
-          format: date
-          description: The date of the proof submission.
-          example: 2024-06-03
-        submissionResult:
-          $ref: "#/components/schemas/SubmissionResult"
-      required:
-      - submissionDate
-      - submissionResult
-    Custodian:
-      type: object
-      description: Related to the affected person and required if the affected person
-        is a minor.
-      properties:
-        address:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        custodianId:
-          type: string
-          format: uuid
-        dateOfBirth:
-          type: string
-          format: date
-          description: Date of birth of the custodian.
-          example: 1951-02-16
-        emailAddresses:
-          type: array
-          items:
-            type: string
-        firstName:
-          type: string
-          description: First name of the custodian.
-          example: Mike
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: Last name of the custodian.
-          example: Himmel
-        phoneNumbers:
-          type: array
-          items:
-            type: string
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-      required:
-      - address
-      - custodianId
-      - dateOfBirth
-      - firstName
-      - lastName
-    CustodianDetails:
-      type: object
-      description: Related to the affected person and required if the affected person
-        is a minor.
-      properties:
-        address:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        dateOfBirth:
-          type: string
-          format: date
-          description: Date of birth of the custodian.
-          example: 1951-02-16
-        emailAddresses:
-          type: array
-          items:
-            type: string
-        firstName:
-          type: string
-          description: First name of the custodian.
-          example: Mike
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: Last name of the custodian.
-          example: Himmel
-        nameAtBirth:
-          type: string
-        phoneNumbers:
-          type: array
-          items:
-            type: string
-        placeOfBirth:
-          type: string
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-      required:
-      - address
-      - dateOfBirth
-      - firstName
-      - lastName
-    DataOrigin:
-      type: string
-      description: "A list of possible origins of Persons and Facility in the Central\
-        \ Files. EDIT will only be set automatically on changes. EXTERNAL is for entries\
-        \ that come, e.g., from the citizen portal. IMPORT is reserved for automatic\
-        \ imports. MANUAL shall be set for every creation or connection done by an\
-        \ employee."
-      enum:
-      - MANUAL
-      - EXTERNAL
-      - IMPORT
-      - EDIT
-    DayOfWeek:
-      type: string
-      enum:
-      - MONDAY
-      - TUESDAY
-      - WEDNESDAY
-      - THURSDAY
-      - FRIDAY
-      - SATURDAY
-      - SUNDAY
-    Decision:
-      type: string
-      enum:
-      - GRANTED
-      - DENIED
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    DeleteDownloadPackagesRequest:
-      type: object
-      properties:
-        downloadIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - downloadIds
-    DetailedFacility:
-      type: object
-      properties:
-        facilityFileState:
-          $ref: "#/components/schemas/GetFacilityFileStateResponse"
-        facilityType:
-          $ref: "#/components/schemas/FacilityType"
-      required:
-      - facilityFileState
-      - facilityType
-    DetailedPerson:
-      type: object
-      properties:
-        person:
-          $ref: "#/components/schemas/GetPersonFileStateResponse"
-        personType:
-          $ref: "#/components/schemas/PersonType"
-      required:
-      - person
-      - personType
-    DetailedTask:
-      type: object
-      properties:
-        assignedByName:
-          type: string
-        assigneeName:
-          type: string
-        task:
-          $ref: "#/components/schemas/Task"
-      required:
-      - task
-    DomesticAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          addressAddition:
-            type: string
-            description: A descriptive addition to the address.
-            example: 2.OG links
-            maxLength: 100
-            minLength: 1
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          houseNumber:
-            type: string
-            description: "The house number of the address, including extensions."
-            example: 1a
-            maxLength: 11
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          street:
-            type: string
-            description: "The name of the street of the address, without the house\
-              \ number."
-            example: Beispielweg
-            maxLength: 55
-            minLength: 1
-      description: A usual domestic address.
-      required:
-      - city
-      - country
-      - postalCode
-      - street
-    DraftMeaslesProcedure:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProtectionProcedure"
-      - type: object
-        properties:
-          affectedPerson:
-            $ref: "#/components/schemas/AffectedPerson"
-          caseStatus:
-            $ref: "#/components/schemas/CaseStatus"
-          createdAt:
-            type: string
-            format: date-time
-          custodians:
-            type: array
-            items:
-              $ref: "#/components/schemas/Custodian"
-          facility:
-            $ref: "#/components/schemas/Facility"
-          id:
-            type: string
-            format: uuid
-          isOpen:
-            type: boolean
-          procedureStatus:
-            $ref: "#/components/schemas/ProcedureStatus"
-          reportData:
-            $ref: "#/components/schemas/ReportData"
-      description: "Used for the initial creation and completion of the procedure,\
-        \ and also for validation of externally submitted procedures."
-      required:
-      - affectedPerson
-      - createdAt
-      - id
-      - isOpen
-      - procedureStatus
-    ExportArchivingRelevantProceduresRequest:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-          uniqueItems: true
-      required:
-      - procedures
-    ExternalAddFacilityFileStateRequest:
-      type: object
-      description: Request used for adding facilities from external sources
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-      required:
-      - name
-    Facility:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: Contact person in the facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        description:
-          type: string
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddress:
-          type: string
-          description: Email address of the facility.
-          example: example@mail.de
-        name:
-          type: string
-          description: Name of the facility.
-          example: Geschwister-Scholl-Schule
-        otherFacilityTypeInformation:
-          type: string
-          description: Additional facility type if not listed.
-        phoneNumber:
-          type: string
-          description: Phone number of the facility.
-          example: "+491234567890"
-        type:
-          $ref: "#/components/schemas/MPFacilityType"
-      required:
-      - contactAddress
-      - name
-      - type
-    FacilityContactPerson:
-      type: object
-      description: Contact person in the facility.
-      properties:
-        emailAddress:
-          type: string
-        firstName:
-          type: string
-        lastName:
-          type: string
-        phoneNumber:
-          type: string
-        role:
-          type: string
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-      required:
-      - emailAddress
-      - firstName
-      - lastName
-      - phoneNumber
-    FacilityType:
-      type: string
-      enum:
-      - SCHOOL
-      - INSPECTION
-      - DAYCARE
-      - HOSPITAL
-      - MEDICAL_PRACTICE
-      - REFUGEE_ACCOMMODATION
-      - OTHER
-    FileMetaData:
-      type: object
-      properties:
-        description:
-          type: string
-    FileType:
-      type: string
-      enum:
-      - JPEG
-      - PNG
-      - PDF
-      - EML
-    GdprDownloadPackageInfo:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-      required:
-      - id
-    GdprFacility:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          dataTransmitterPseudonymId:
-            type: string
-            description: The 'DatenübermittlerPseudonymId' of the MUK user
-            example: du-986b2b54ab89cf4ed674ad8c3126b966b54d4872
-          emailAddress:
-            type: string
-            description: The email addresses of the Facility.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          name:
-            type: string
-            description: The name of the Facility.
-            example: 123 Example Facility
-            maxLength: 300
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Facility.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 1
-      required:
-      - address
-      - name
-    GdprIdentificationData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    GdprPerson:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          bpk2:
-            type: string
-            description: The bpk2 of the BundId user
-            example: VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0
-          dateOfBirth:
-            type: string
-            format: date
-            description: The date of birth of the Person.
-            example: 2000-01-01
-          emailAddress:
-            type: string
-            description: The email addresses of the Person.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          firstName:
-            type: string
-            description: The given name(s) of the Person.
-            example: John
-            maxLength: 80
-            minLength: 1
-          lastName:
-            type: string
-            description: The last name of the Person.
-            example: Doe
-            maxLength: 120
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Person.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 0
-          salutation:
-            $ref: "#/components/schemas/Salutation"
-          title:
-            type: string
-            description: The academic title of the Person.
-            example: Prof. Dr.
-            maxLength: 119
-            minLength: 1
-      required:
-      - address
-      - dateOfBirth
-      - firstName
-      - lastName
-    GdprProcedureType:
-      type: string
-      description: A list of types of GDPR procedures.
-      enum:
-      - RIGHT_OF_ACCESS
-      - RIGHT_TO_ERASURE
-    GdprValidationTask:
-      type: object
-      properties:
-        dueDate:
-          type: string
-          format: date
-        gdprProcedureId:
-          type: string
-          format: uuid
-        identificationData:
-          oneOf:
-          - $ref: "#/components/schemas/GdprFacility"
-          - $ref: "#/components/schemas/GdprPerson"
-        status:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - dueDate
-      - gdprProcedureId
-      - identificationData
-      - status
-      - type
-    GdprValidationTaskSortKey:
-      type: string
-      enum:
-      - CREATED_AT
-    GdprValidationTaskStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    Gender:
-      type: string
-      description: The list of genders as specified in the German Personenstandsgesetz.
-      enum:
-      - NOT_SPECIFIED
-      - DIVERSE
-      - FEMALE
-      - MALE
-    GenericFileReference:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFileReference"
-      - type: object
-        properties:
-          '@type':
-            type: string
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - deletable
-      - deleted
-      - fileId
-    GetAllValidationTasksResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/GdprValidationTask"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          minimum: 0
-      required:
-      - elements
-      - totalNumberOfElements
-    GetAppointmentBlock:
-      type: object
-      description: A planned appointment block. Appointment blocks offer a set of
-        bookable appointments at different times within the timeframe of the appointment
-        block.
-      properties:
-        end:
-          type: string
-          format: date-time
-          description: Time at which the appointment block ends.
-          example: 2016-01-01T01:45:00.123456+01:00
-        id:
-          type: string
-          format: uuid
-          description: Id of the AppointmentBlock.
-          example: a765534d-760a-417d-8639-5e2fd59246e2
-        numberOfBookedAppointments:
-          type: integer
-          format: int64
-          minimum: 0
-        numberOfFreeAppointments:
-          type: integer
-          format: int64
-          minimum: 0
-        start:
-          type: string
-          format: date-time
-          description: Time at which the appointment block starts.
-          example: 2016-01-01T01:00:00.123456+01:00
-      required:
-      - end
-      - id
-      - numberOfBookedAppointments
-      - numberOfFreeAppointments
-      - start
-    GetAppointmentBlockGroup:
-      type: object
-      properties:
-        appointmentBlocks:
-          type: array
-          items:
-            $ref: "#/components/schemas/GetAppointmentBlock"
-        id:
-          type: string
-          format: uuid
-          description: Id of the AppointmentBlockGroup.
-          example: a765534d-760a-417d-8639-5e2fd59246e2
-        location:
-          $ref: "#/components/schemas/AppointmentLocation"
-        parallelExaminations:
-          type: integer
-          format: int32
-          maximum: 10
-          minimum: 1
-        type:
-          $ref: "#/components/schemas/AppointmentType"
-      required:
-      - appointmentBlocks
-      - id
-      - parallelExaminations
-      - type
-    GetAppointmentBlockGroupsResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/GetAppointmentBlockGroup"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-      required:
-      - elements
-      - totalNumberOfElements
-    GetAppointmentTypesResponse:
-      type: object
-      properties:
-        appointmentTypeConfigDtos:
-          type: array
-          items:
-            $ref: "#/components/schemas/AppointmentTypeConfig"
-      required:
-      - appointmentTypeConfigDtos
-    GetArchivableProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetArchivableProceduresSortBy:
-      type: string
-      default: CLOSED_AT
-      enum:
-      - CLOSED_AT
-      - PROCEDURE_TYPE
-    GetArchivableProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetArchivingConfigurationResponse:
-      type: object
-      properties:
-        archivingDetails:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/ArchivingDetails"
-        gracePeriodMonths:
-          type: integer
-          format: int32
-      required:
-      - archivingDetails
-      - gracePeriodMonths
-    GetDetailedProcedureResponse:
-      type: object
-      properties:
-        facilities:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedFacility"
-        persons:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedPerson"
-        procedure:
-          $ref: "#/components/schemas/Procedure"
-        tasks:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedTask"
-      required:
-      - facilities
-      - persons
-      - procedure
-      - tasks
-    GetFacilityFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        id:
-          type: string
-          format: uuid
-          description: Id of the Facility.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referenceFacility
-            it is connected to.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-      required:
-      - contactPersons
-      - dataOrigin
-      - emailAddresses
-      - id
-      - name
-      - phoneNumbers
-      - referenceVersion
-    GetFreeAppointmentsResponse:
-      type: object
-      properties:
-        appointments:
-          type: array
-          items:
-            $ref: "#/components/schemas/Appointment"
-      required:
-      - appointments
-    GetGdprDownloadPackagesInfoResponse:
-      type: object
-      properties:
-        downloadPackages:
-          type: array
-          items:
-            $ref: "#/components/schemas/GdprDownloadPackageInfo"
-      required:
-      - downloadPackages
-    GetGdprNotificationBannerResponse:
-      type: object
-      properties:
-        earliestDueDate:
-          type: string
-          format: date
-        openValidationTasksCount:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - openValidationTasksCount
-    GetGdprValidationTaskDetailsResponse:
-      type: object
-      properties:
-        proceduresWithStatus:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessProcedureWithInclusionStatus"
-        validationTask:
-          $ref: "#/components/schemas/GdprValidationTask"
-      required:
-      - proceduresWithStatus
-      - validationTask
-    GetGdprValidationTaskResponse:
-      type: object
-      properties:
-        status:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-      required:
-      - status
-    GetInboxProcedureResponse:
-      type: object
-      properties:
-        inboxProcedure:
-          $ref: "#/components/schemas/InboxProcedure"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - inboxProcedure
-      - resolvedUsers
-    GetInboxProceduresResponse:
-      type: object
-      properties:
-        inboxProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/InboxProcedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - inboxProcedures
-      - totalElements
-      - totalPages
-    GetInboxProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - CREATED_AT
-    GetInboxProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetManualProgressEntryHistoryResponse:
-      type: object
-      properties:
-        manualProgressEntryHistory:
-          type: array
-          items:
-            $ref: "#/components/schemas/ManualProgressEntryHistory"
-    GetMeaslesProtectionFeatureTogglesResponse:
-      type: object
-      properties:
-        disabledOldFeatures:
-          type: array
-          items:
-            $ref: "#/components/schemas/MeaslesProtectionFeature"
-          uniqueItems: true
-        enabledNewFeatures:
-          type: array
-          items:
-            $ref: "#/components/schemas/MeaslesProtectionFeature"
-          uniqueItems: true
-      required:
-      - disabledOldFeatures
-      - enabledNewFeatures
-    GetMeaslesProtectionProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/DraftMeaslesProcedure"
-            - $ref: "#/components/schemas/MeaslesProtectionProcedure"
-        totalElements:
-          type: integer
-          format: int64
-          description: the total amount of elements
-        totalPages:
-          type: integer
-          format: int32
-          description: The number of total pages
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetMeaslesProtectionProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - FIRST_NAME
-      - LAST_NAME
-      - DATE_OF_BIRTH
-      - CREATED_AT
-      - FACILITY_NAME
-      - FACILITY_TYPE
-      - CASE_STATUS
-      - PROCEDURE_STATUS
-    GetMeaslesProtectionProceduresSortOrder:
-      type: string
-      default: DESC
-      enum:
-      - ASC
-      - DESC
-    GetMetaDataHistoryResponse:
-      type: object
-      properties:
-        metaDataHistory:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ImageMetaDataHistory"
-            - $ref: "#/components/schemas/MailMetaDataHistory"
-            - $ref: "#/components/schemas/PdfMetaDataHistory"
-    GetPersonFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        dateOfBirth:
-          type: string
-          format: date
-          description: The date of birth of the Person.
-          example: 2000-01-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Person.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: The given name(s) of the Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        id:
-          type: string
-          format: uuid
-          description: Id of the Person.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        lastName:
-          type: string
-          description: The last name of the Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          description: The last name at birth of the Person.
-          example: Smith
-          maxLength: 40
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referencePerson
-            it is connected to. Set to 'null' if unchecked.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Person.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          description: The place of birth (without country) of the Person.
-          example: Berlin
-          maxLength: 50
-          minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - dataOrigin
-      - dateOfBirth
-      - emailAddresses
-      - firstName
-      - gender
-      - id
-      - lastName
-      - phoneNumbers
-      - referenceVersion
-      - salutation
-    GetProcedureApprovalRequestsResponse:
-      type: object
-      properties:
-        approvalRequests:
-          type: array
-          items:
-            $ref: "#/components/schemas/ApprovalRequest"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - approvalRequests
-      - resolvedUsers
-    GetProcedureFileDetailsResponse:
-      type: object
-      properties:
-        fileDetails:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProgressEntryReferenceFilePair"
-        procedureId:
-          type: string
-          format: uuid
-      required:
-      - fileDetails
-      - procedureId
-    GetProcedureMetricsResponse:
-      type: object
-      properties:
-        procedureMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureMetric"
-      required:
-      - procedureMetrics
-    GetProceduresForPersonRequest:
-      type: object
-      properties:
-        person:
-          $ref: "#/components/schemas/AddPersonFileStateRequest"
-      required:
-      - person
-    GetProceduresForPersonResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureForPerson"
-      required:
-      - procedures
-    GetProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - MODIFIED_AT
-      - CREATED_AT
-    GetProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetProgressEntriesResponse:
-      type: object
-      properties:
-        progressEntries:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ManualProgressEntry"
-            - $ref: "#/components/schemas/ProcessedInboxProgressEntry"
-            - $ref: "#/components/schemas/SystemProgressEntry"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - progressEntries
-      - totalElements
-      - totalPages
-    GetProgressEntryResponse:
-      type: object
-      properties:
-        progressEntry:
-          oneOf:
-          - $ref: "#/components/schemas/ManualProgressEntry"
-          - $ref: "#/components/schemas/ProcessedInboxProgressEntry"
-          - $ref: "#/components/schemas/SystemProgressEntry"
-        relatedKeyDocumentProgressEntries:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ManualProgressEntry"
-            - $ref: "#/components/schemas/SystemProgressEntry"
-      required:
-      - progressEntry
-      - relatedKeyDocumentProgressEntries
-    GetProofRequestLettersResponse:
-      type: object
-      properties:
-        letters:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProofRequestLetter"
-      required:
-      - letters
-    GetRecentProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-      required:
-      - procedures
-    GetRelevantArchivableProceduresResponse:
-      type: object
-      properties:
-        fileSizeBytes:
-          type: integer
-          format: int32
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - fileSizeBytes
-      - procedures
-      - totalElements
-      - totalPages
-    GetRelevantArchivableProceduresSortBy:
-      type: string
-      default: CLOSED_AT
-      enum:
-      - CLOSED_AT
-      - EXPORTED_AT
-    GetRelevantArchivableProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetTaskByUserResponse:
-      type: object
-      properties:
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-        tasksByUser:
-          type: object
-          additionalProperties:
-            type: array
-            items:
-              $ref: "#/components/schemas/Task"
-      required:
-      - resolvedUsers
-      - tasksByUser
-    GetTaskMetricsResponse:
-      type: object
-      properties:
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedProcedureCount:
-          type: integer
-          format: int64
-        fastestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        slowestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        taskMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskMetric"
-      required:
-      - businessModule
-      - closedProcedureCount
-      - fastestProcedures
-      - procedureType
-      - slowestProcedures
-      - taskMetrics
-    GetTasksSortBy:
-      type: string
-      enum:
-      - PRIORITY
-      - CREATED_AT
-      - MODIFIED_AT
-    GetTasksSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    Image:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/ImageMetaData"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    ImageMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          createdDate:
-            type: string
-            format: date-time
-    ImageMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          imageMetaData:
-            $ref: "#/components/schemas/ImageMetaData"
-      required:
-      - changedAt
-    InboxProcedure:
-      type: object
-      properties:
-        closedAt:
-          type: string
-          format: date-time
-        contactDetails:
-          $ref: "#/components/schemas/ContactDetails"
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-          format: uuid
-        inboxProcedureId:
-          type: string
-          format: uuid
-        inboxProcedureStatus:
-          $ref: "#/components/schemas/InboxProcedureStatus"
-        inboxProcedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        inboxProgressEntry:
-          $ref: "#/components/schemas/InboxProgressEntry"
-      required:
-      - contactDetails
-      - createdAt
-      - createdBy
-      - inboxProcedureId
-      - inboxProcedureStatus
-      - inboxProgressEntry
-    InboxProcedureAddress:
-      type: object
-      properties:
-        addressAddition:
-          type: string
-        city:
-          type: string
-        country:
-          type: string
-        houseNumber:
-          type: string
-        postalCode:
-          type: string
-        postboxNumber:
-          type: integer
-          format: int32
-        street:
-          type: string
-    InboxProcedureStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    InboxProgressEntry:
-      type: object
-      properties:
-        fileReference:
-          oneOf:
-          - $ref: "#/components/schemas/GenericFileReference"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        inboxProgressEntryId:
-          type: string
-          format: uuid
-        inboxProgressEntryType:
-          $ref: "#/components/schemas/InboxProgressEntryType"
-        messageText:
-          type: string
-        subject:
-          type: string
-      required:
-      - inboxProgressEntryId
-      - inboxProgressEntryType
-    InboxProgressEntryType:
-      type: string
-      enum:
-      - LETTER
-      - PHONE_CALL
-      - EMAIL
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    KeyDocumentAwareProgressEntry:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        keyDocumentType:
-          type: string
-        keyDocumentVersion:
-          type: integer
-          format: int32
-      required:
-      - '@type'
-    MPFacilityType:
-      type: string
-      description: Type of the facility.
-      enum:
-      - SCHOOL
-      - DAY_NURSERY
-      - DAYCARE
-      - CHILDRENS_HOME
-      - REFUGEE_ACCOMMODATION
-      - HOSPITAL
-      - MEDICAL_PRACTICE
-      - OUTPATIENT_SURGERY
-      - REHABILITATION_CENTRE
-      - DIALYSIS_CENTRE
-      - DAY_CLINIC
-      - MATERNITY_CENTRE
-      - OTHER_MEDICAL_PRACTICE
-      - PUBLIC_HEALTH_SERVICE
-      - EMERGENCY_SERVICE
-      - CIVIL_PROTECTION
-      - OTHER
-    Mail:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/MailMetaData"
-          removedInvalidAttachments:
-            type: integer
-            format: int32
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-      - removedInvalidAttachments
-    MailMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          mailFrom:
-            type: string
-          mailTo:
-            type: string
-          messageText:
-            type: string
-          sentDate:
-            type: string
-            format: date-time
-          subject:
-            type: string
-      required:
-      - mailFrom
-      - mailTo
-      - messageText
-      - sentDate
-      - subject
-    MailMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          mailMetaData:
-            $ref: "#/components/schemas/MailMetaData"
-      required:
-      - changedAt
-    ManualProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          createdByUserFirstName:
-            type: string
-          createdByUserLastName:
-            type: string
-          keyDocumentType:
-            type: string
-          keyDocumentVersion:
-            type: integer
-            format: int32
-          locked:
-            type: boolean
-          manualProgressEntryType:
-            $ref: "#/components/schemas/ManualProgressEntryType"
-          note:
-            type: string
-      - $ref: "#/components/schemas/ApprovalRequestEntity"
-      - $ref: "#/components/schemas/KeyDocumentAwareProgressEntry"
-      required:
-      - createdAt
-      - createdBy
-      - locked
-      - manualProgressEntryType
-      - modifiedAt
-      - progressEntryId
-    ManualProgressEntryHistory:
-      type: object
-      properties:
-        changedAt:
-          type: string
-          format: date-time
-        manualProgressEntry:
-          $ref: "#/components/schemas/ManualProgressEntry"
-      required:
-      - changedAt
-    ManualProgressEntryType:
-      type: string
-      enum:
-      - LETTER
-      - PHONE_CALL
-      - NOTE
-      - EMAIL
-      - IMAGE
-      - DOCUMENT
-    MeaslesProtectionFeature:
-      type: string
-      enum:
-      - EDIT_ACCESS_RESTRICTION
-    MeaslesProtectionProcedure:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProtectionProcedure"
-      - type: object
-        properties:
-          accessRestriction:
-            $ref: "#/components/schemas/AccessRestriction"
-          affectedPerson:
-            $ref: "#/components/schemas/AffectedPerson"
-          appointment:
-            $ref: "#/components/schemas/Appointment"
-          caseStatus:
-            $ref: "#/components/schemas/CaseStatus"
-          createdAt:
-            type: string
-            format: date-time
-          custodians:
-            type: array
-            items:
-              $ref: "#/components/schemas/Custodian"
-          facility:
-            $ref: "#/components/schemas/Facility"
-          id:
-            type: string
-            format: uuid
-          isOpen:
-            type: boolean
-          monetaryFines:
-            type: array
-            items:
-              $ref: "#/components/schemas/MonetaryFine"
-          procedureStatus:
-            $ref: "#/components/schemas/ProcedureStatus"
-          proofSubmissions:
-            type: array
-            items:
-              $ref: "#/components/schemas/ProofSubmission"
-          reportData:
-            $ref: "#/components/schemas/ReportData"
-      required:
-      - affectedPerson
-      - caseStatus
-      - createdAt
-      - facility
-      - id
-      - isOpen
-      - procedureStatus
-      - reportData
-    MeaslesProtectionProcedurePopulationResult:
-      type: object
-      properties:
-        count:
-          type: integer
-          format: int64
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/OpenProcedureResponse"
-      required:
-      - count
-      - procedures
-    Measure:
-      type: string
-      enum:
-      - ACCESS_RESTRICTION
-      - MONETARY_FINE
-    MetaData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        description:
-          type: string
-      required:
-      - '@type'
-    MetaDataHistory:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        changedAt:
-          type: string
-          format: date-time
-      required:
-      - '@type'
-      - changedAt
-    MonetaryFine:
-      type: object
-      properties:
-        externalId:
-          type: string
-          format: uuid
-          description: The unique identifier for the monetary fine.
-        fineIssuedDate:
-          type: string
-          format: date
-          description: The date when the monetary fine was issued.
-      required:
-      - externalId
-      - fineIssuedDate
-    OpenProcedureRequest:
-      type: object
-      properties:
-        reportData:
-          $ref: "#/components/schemas/ReportData"
-        roleStatus:
-          $ref: "#/components/schemas/RoleStatus"
-      required:
-      - reportData
-      - roleStatus
-    OpenProcedureResponse:
-      type: object
-      properties:
-        procedureId:
-          type: string
-          format: uuid
-      required:
-      - procedureId
-    Operation:
-      type: string
-      enum:
-      - DELETE
-    PatchManualProgressEntryRequest:
-      type: object
-      properties:
-        manualProgressEntryType:
-          $ref: "#/components/schemas/ManualProgressEntryType"
-        note:
-          type: string
-          nullable: true
-    Pdf:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/PdfMetaData"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    PdfMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          createdDate:
-            type: string
-            format: date-time
-    PdfMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          pdfMetaData:
-            $ref: "#/components/schemas/PdfMetaData"
-      required:
-      - changedAt
-    PersonType:
-      type: string
-      enum:
-      - PATIENT
-      - PARENT
-      - PROFESSIONAL
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    PopulationRequest:
-      type: object
-      properties:
-        numberOfEntitiesToPopulate:
-          type: integer
-          format: int32
-      required:
-      - numberOfEntitiesToPopulate
-    PostboxAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          postbox:
-            type: string
-            description: The number (or name) of the postbox.
-            example: "123"
-            maxLength: 21
-            minLength: 1
-      description: An address which is a postbox.
-      required:
-      - city
-      - country
-      - postalCode
-      - postbox
-    Procedure:
-      type: object
-      properties:
-        archivingRelevanceSettings:
-          $ref: "#/components/schemas/ArchivingRelevanceSettings"
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedAt:
-          type: string
-          format: date-time
-        createdAt:
-          type: string
-          format: date-time
-        exportedAt:
-          type: string
-          format: date-time
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        procedureStatus:
-          $ref: "#/components/schemas/ProcedureStatus"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-          pattern: "[a-zA-Z0-9.].+"
-      required:
-      - archivingRelevanceSettings
-      - businessModule
-      - createdAt
-      - modifiedAt
-      - procedureId
-      - procedureStatus
-      - procedureType
-      - summary
-    ProcedureForPerson:
-      type: object
-      properties:
-        externalId:
-          type: string
-          format: uuid
-        procedureStatus:
-          $ref: "#/components/schemas/ProcedureStatus"
-        reportingDate:
-          type: string
-          format: date
-        reportingReason:
-          $ref: "#/components/schemas/ReportingReason"
-      required:
-      - externalId
-      - procedureStatus
-      - reportingDate
-    ProcedureMetric:
-      type: object
-      properties:
-        abortedCount:
-          type: integer
-          format: int64
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedCount:
-          type: integer
-          format: int64
-        inProgressCount:
-          type: integer
-          format: int64
-        openOrDraftCount:
-          type: integer
-          format: int64
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        totalCount:
-          type: integer
-          format: int64
-      required:
-      - abortedCount
-      - businessModule
-      - closedCount
-      - inProgressCount
-      - openOrDraftCount
-      - procedureType
-      - totalCount
-    ProcedureStatus:
-      type: string
-      enum:
-      - DRAFT
-      - OPEN
-      - IN_PROGRESS
-      - CLOSED
-      - ABORTED
-    ProcedureType:
-      type: string
-      enum:
-      - REGULAR_EXAMINATION
-      - CAN_CHILD
-      - ENTRY_LEVEL
-      - DRAFT_CITIZEN_OFFICE_IMPORT
-      - DRAFT_SCHOOL_IMPORT
-      - INSPECTION
-      - TM_VACCINATION_CONSULTATION
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY_ENTRY
-      - MEDICAL_REGISTRY_CITIZEN_DRAFT
-      - MEDICAL_REGISTRY_EMPLOYEE_DRAFT
-      - DENTAL_CHILD
-      - OFFICIAL_MEDICAL_SERVICE
-    ProcedureWithDuration:
-      type: object
-      properties:
-        createdAt:
-          type: string
-          format: date-time
-        duration:
-          type: string
-          description: A duration in ISO 8601
-        id:
-          type: string
-          format: uuid
-      required:
-      - createdAt
-      - id
-    ProcessedInboxProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          createdByUserFirstName:
-            type: string
-          createdByUserLastName:
-            type: string
-          inboxProcedureId:
-            type: string
-            format: uuid
-          inboxProgressEntryType:
-            $ref: "#/components/schemas/InboxProgressEntryType"
-          messageText:
-            type: string
-          subject:
-            type: string
-      required:
-      - createdAt
-      - createdBy
-      - inboxProcedureId
-      - inboxProgressEntryType
-      - modifiedAt
-      - progressEntryId
-    ProgressEntry:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        createdAt:
-          type: string
-          format: date-time
-        fileReference:
-          oneOf:
-          - $ref: "#/components/schemas/GenericFileReference"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        modifiedAt:
-          type: string
-          format: date-time
-        progressEntryId:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - createdAt
-      - modifiedAt
-      - progressEntryId
-    ProgressEntryClass:
-      type: string
-      enum:
-      - MANUAL_PROGRESS_ENTRY
-      - SYSTEM_PROGRESS_ENTRY
-      - PROCESSED_INBOX_PROGRESS_ENTRY
-    ProgressEntryReferenceFilePair:
-      type: object
-      properties:
-        file:
-          oneOf:
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        progressEntryId:
-          type: string
-          format: uuid
-      required:
-      - file
-      - progressEntryId
-    ProgressEntrySortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - CREATED_AT
-      - MODIFIED_AT
-    ProgressEntrySortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    ProofRequestLetter:
-      type: object
-      description: A letter sent by a health department to request evidence or confirmation
-        of vaccination.
-      properties:
-        deadline:
-          type: string
-          format: date
-        pdf:
-          $ref: "#/components/schemas/Pdf"
-        recipientId:
-          type: string
-          format: uuid
-        sentAt:
-          type: string
-          format: date
-      required:
-      - deadline
-      - pdf
-      - recipientId
-      - sentAt
-    ProofRequestSent:
-      type: string
-      enum:
-      - FIRST_LETTER
-      - FOLLOW_UP_LETTER
-    ProofSubmission:
-      type: object
-      properties:
-        externalId:
-          type: string
-          format: uuid
-          description: The unique identifier for the proof submission.
-          example: 31bdeb5d-4d00-4cf2-a001-4634e9396050
-        medicalAttestDeadline:
-          type: string
-          format: date
-          description: Indicates a deadline when a temporary medical attest was provided.
-          example: 2024-07-17
-        proofSubmissionDocumentId:
-          type: string
-          format: uuid
-        submissionDate:
-          type: string
-          format: date
-          description: The date of the proof submission.
-          example: 2024-06-03
-        submissionResult:
-          $ref: "#/components/schemas/SubmissionResult"
-      required:
-      - externalId
-      - submissionDate
-      - submissionResult
-    ProtectionProcedure:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        open:
-          type: boolean
-      required:
-      - '@type'
-    ReportCaseRequest:
-      type: object
-      properties:
-        affectedPersons:
-          type: array
-          items:
-            $ref: "#/components/schemas/ReportPerson"
-        facility:
-          $ref: "#/components/schemas/ExternalAddFacilityFileStateRequest"
-        otherFacilityTypeInformation:
-          type: string
-        type:
-          $ref: "#/components/schemas/MPFacilityType"
-      required:
-      - facility
-      - type
-    ReportData:
-      type: object
-      properties:
-        commentReportingReason:
-          type: string
-          description: Additional comment if the reporting reason is not listed.
-          example: Special not listed reason.
-        reportingDate:
-          type: string
-          format: date
-          description: The date on which the report was transmitted.
-          example: 2024-06-03
-        reportingReason:
-          $ref: "#/components/schemas/ReportingReason"
-      required:
-      - reportingDate
-      - reportingReason
-    ReportPerson:
-      type: object
-      description: Represents the all data to an individual the facility reports from
-        the portal.
-      properties:
-        affectedPersonDetails:
-          $ref: "#/components/schemas/AffectedPersonDetails"
-        affectedPersonSupplementalData:
-          $ref: "#/components/schemas/AffectedPersonSupplementalData"
-      required:
-      - affectedPersonDetails
-      - affectedPersonSupplementalData
-    ReportingReason:
-      type: string
-      description: Indicates the reason why the person was reported to the health
-        care departement by the facility.
-      enum:
-      - NO_PROOF
-      - FIRST_VACCINE
-      - MEDICAL_CONTRAINDICATION
-      - UNASSESSABLE_PROOF
-      - OTHER
-    RoleStatus:
-      type: string
-      description: Role status in the facility of the affected person.
-      enum:
-      - EMPLOYEE
-      - SUPERVISED
-    Salutation:
-      type: string
-      description: A list of categories for the salutation from which specific salutation
-        phrases can be derived. The choice of salutation is free for every citizen
-        and not dependent on gender.
-      enum:
-      - NOT_SPECIFIED
-      - NEUTRAL
-      - FEMALE
-      - MALE
-    SaveProofRequestLetter:
-      type: object
-      properties:
-        deadline:
-          type: string
-          format: date
-          description: The deadline in the future by which a proof must be submitted.
-          example: 2024-06-03
-        recipientId:
-          type: string
-          format: uuid
-          description: "The id of the letter recipient, e.g affected person, custodian,\
-            \ etc.."
-        withDeliveryCertificate:
-          type: boolean
-          description: Indicates whether the letter was sent with a delivery certificate.
-      required:
-      - deadline
-      - recipientId
-      - withDeliveryCertificate
-    SelfAssignTaskRequest:
-      type: object
-      properties:
-        dueAt:
-          type: string
-          format: date-time
-        taskVersion:
-          type: integer
-          format: int64
-      required:
-      - taskVersion
-    SortDirection:
-      type: string
-      enum:
-      - ASC
-      - DESC
-    SubmissionResult:
-      type: string
-      description: |
-        The SubmissionResult describes the current state and the final outcome of a proof submission.
-      enum:
-      - UNDER_REVIEW
-      - ATTENDED_NO_PROOF
-      - TEMP_MEDICAL_ATTEST
-      - MEDICAL_ATTEST
-      - PROOF_SUBMITTED
-      example: PROOF_SUBMITTED
-    SystemProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          changeDescription:
-            type: string
-          keyDocumentType:
-            type: string
-          keyDocumentVersion:
-            type: integer
-            format: int32
-          previousFileStateId:
-            type: string
-            format: uuid
-          systemProgressEntryType:
-            type: string
-          triggerType:
-            $ref: "#/components/schemas/TriggerType"
-          triggeredBy:
-            type: string
-            format: uuid
-          triggeredByUserFirstName:
-            type: string
-          triggeredByUserLastName:
-            type: string
-      - $ref: "#/components/schemas/KeyDocumentAwareProgressEntry"
-      required:
-      - createdAt
-      - modifiedAt
-      - progressEntryId
-      - systemProgressEntryType
-      - triggerType
-    Task:
-      type: object
-      properties:
-        assignedById:
-          type: string
-          format: uuid
-        assigneeId:
-          type: string
-          format: uuid
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        createdAt:
-          type: string
-          format: date-time
-        dueAt:
-          type: string
-          format: date-time
-        isOverdue:
-          type: boolean
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-        taskId:
-          type: string
-          format: uuid
-        taskStatus:
-          $ref: "#/components/schemas/TaskStatus"
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        version:
-          type: integer
-          format: int64
-      required:
-      - businessModule
-      - createdAt
-      - isOverdue
-      - modifiedAt
-      - procedureId
-      - summary
-      - taskId
-      - taskStatus
-      - taskType
-      - version
-    TaskMetric:
-      type: object
-      properties:
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        moreThanTwoOccurrencesCount:
-          type: integer
-          format: int32
-        noOccurrencesCount:
-          type: integer
-          format: int32
-        oneOccurrenceCount:
-          type: integer
-          format: int32
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        twoOccurrencesCount:
-          type: integer
-          format: int32
-      required:
-      - moreThanTwoOccurrencesCount
-      - noOccurrencesCount
-      - oneOccurrenceCount
-      - taskType
-      - twoOccurrencesCount
-    TaskResponse:
-      type: object
-      properties:
-        count:
-          type: integer
-          format: int64
-          description: total number of tasks for this query
-        tasks:
-          type: array
-          items:
-            $ref: "#/components/schemas/Task"
-          maxItems: 200
-          minItems: 0
-      required:
-      - count
-      - tasks
-    TaskStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    TaskType:
-      type: string
-      enum:
-      - BOOK_APPOINTMENT
-      - PERFORM_SCHOOL_ENTRY_EXAMINATION
-      - INSPECTION_PLANNING
-      - INSPECTION_EXECUTION
-      - INSPECTION_REPORT
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - OFFICIAL_MEDICAL_SERVICE
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
-    Title:
-      type: string
-      enum:
-      - DR
-      - PROF
-      - PROF_DR
-    TriggerType:
-      type: string
-      enum:
-      - SYSTEM_AUTOMATIC
-      - EMPLOYEE
-      - CITIZEN
-    UpdateAccessRestriction:
-      type: object
-      properties:
-        restrictionTerminationDate:
-          type: string
-          format: date
-      required:
-      - restrictionTerminationDate
-    UpdateAppointmentTypeRequest:
-      type: object
-      properties:
-        standardDurationInMinutes:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - standardDurationInMinutes
-    UpdateMonetaryFine:
-      type: object
-      properties:
-        fineIssuedDate:
-          type: string
-          format: date
-      required:
-      - fineIssuedDate
-    UpdateProcedureRequest:
-      type: object
-      properties:
-        reportData:
-          $ref: "#/components/schemas/UpdateReportData"
-        roleStatus:
-          $ref: "#/components/schemas/RoleStatus"
-    UpdateProofSubmission:
-      type: object
-      properties:
-        medicalAttestDeadline:
-          type: string
-          format: date
-          description: Indicates a deadline when a temporary medical attest was provided.
-          example: 2024-07-17
-        submissionDate:
-          type: string
-          format: date
-          description: The date of the proof submission.
-          example: 2024-06-03
-        submissionResult:
-          $ref: "#/components/schemas/SubmissionResult"
-    UpdateReportData:
-      type: object
-      properties:
-        commentReportingReason:
-          type: string
-        reportingDate:
-          type: string
-          format: date
-        reportingReason:
-          $ref: "#/components/schemas/ReportingReason"
-    User:
-      type: object
-      properties:
-        email:
-          type: string
-          description: The email address of a user.
-          example: example@mail.de
-        enabled:
-          type: boolean
-          description: "True, if the user can login"
-          example: false
-        externalChatUsername:
-          type: string
-          description: The chat username of the gematik TI-Messenger (matrix chat).
-          example: '@username:server'
-        firstName:
-          type: string
-          description: The given name(s) of a user.
-          example: John
-        lastName:
-          type: string
-          description: The last name of a user.
-          example: Doe
-        phoneNumber:
-          type: string
-          description: The phone number of a user.
-          example: "+491234567890"
-        userId:
-          type: string
-          format: uuid
-          description: The Id of the user.
-          example: fe9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        username:
-          type: string
-          description: The username which is displayed in the application and can
-            be used for the login.
-          example: testuser
-      required:
-      - enabled
-      - firstName
-      - lastName
-      - userId
-      - username
-    ValidateAppointmentBlockGroupResponse:
-      type: object
-      properties:
-        userIdsWithEventConflicts:
-          type: array
-          items:
-            type: string
-            format: uuid
-        userIdsWithoutEventConflicts:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - userIdsWithEventConflicts
-      - userIdsWithoutEventConflicts
diff --git a/backend/medical-registry/openApi.json b/backend/medical-registry/openApi.json
new file mode 100644
index 000000000..3a88f01e4
--- /dev/null
+++ b/backend/medical-registry/openApi.json
@@ -0,0 +1,6254 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is the API for the medical-registry module",
+    "title" : "Medical Registry Module API",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8097"
+  } ],
+  "paths" : {
+    "/approval-requests/{approvalRequestId}" : {
+      "get" : {
+        "operationId" : "getApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/approval-requests/{approvalRequestId}/decision" : {
+      "put" : {
+        "operationId" : "decideApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/Decision"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/archiving/config" : {
+      "get" : {
+        "operationId" : "getArchivingConfiguration",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetArchivingConfigurationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get archiving configuration",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/procedures" : {
+      "get" : {
+        "operationId" : "getArchivableProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `procedureType` is submitted, only procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `closedAtDay` is set, only procedures are returned which were closed at that date\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "closedAtDay",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `defaultArchivingRelevance` is submitted, only procedures are returned which have one of the submitted default archiving relevances.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "defaultArchivingRelevance",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ArchivingRelevance"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CLOSED_AT`: Sorting by closedAt attribute\n- `PROCEDURE_TYPE`: Sorting by procedureType attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetArchivableProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetArchivableProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetArchivableProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get archivable procedures",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/procedures/bulk-update-archiving-relevance" : {
+      "post" : {
+        "operationId" : "bulkUpdateProceduresArchivingRelevance",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/BulkUpdateProceduresArchivingRelevanceRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/BulkUpdateProceduresArchivingRelevanceResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Bulk update procedures archiving relevance",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/relevant-procedures" : {
+      "get" : {
+        "operationId" : "getRelevantArchivableProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `closedAtDay` is set, only procedures are returned which were closed at that date\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "closedAtDay",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `exported` is true, only procedures are returned which have already been exported.\n- If `exported` is false, only procedures are returned which have not been exported, yet.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "exported",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CLOSED_AT`: Sorting by closedAt attribute\n- `EXPORTED_AT`: Sorting by exportedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetRelevantArchivableProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetRelevantArchivableProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRelevantArchivableProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get relevant archivable procedures",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/relevant-procedures/export" : {
+      "post" : {
+        "operationId" : "exportRelevantProcedures",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ExportArchivingRelevantProceduresRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/feature-toggles" : {
+      "get" : {
+        "operationId" : "getFeatureToggles",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetMedicalRegistryFeatureTogglesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "MedicalRegistryFeatureTogglesPublic" ]
+      }
+    },
+    "/files/{fileId}" : {
+      "delete" : {
+        "operationId" : "deleteFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Soft deletes the specified file",
+        "tags" : [ "File" ]
+      },
+      "get" : {
+        "operationId" : "getFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/Image"
+                  }, {
+                    "$ref" : "#/components/schemas/Mail"
+                  }, {
+                    "$ref" : "#/components/schemas/Pdf"
+                  } ]
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Retrieves the meta data of the specified file",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/deletion-request" : {
+      "post" : {
+        "operationId" : "requestFileDeletion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateApprovalRequestRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Request deletion of a file entry",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/download" : {
+      "get" : {
+        "operationId" : "downloadFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/meta-data" : {
+      "put" : {
+        "operationId" : "updateFileMetaData",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "oneOf" : [ {
+                  "$ref" : "#/components/schemas/ImageMetaData"
+                }, {
+                  "$ref" : "#/components/schemas/MailMetaData"
+                }, {
+                  "$ref" : "#/components/schemas/PdfMetaData"
+                } ]
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/Image"
+                  }, {
+                    "$ref" : "#/components/schemas/Mail"
+                  }, {
+                    "$ref" : "#/components/schemas/Pdf"
+                  } ]
+                }
+              }
+            },
+            "description" : "Updated file"
+          }
+        },
+        "summary" : "Updates the meta data of the specified file",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/meta-data/history" : {
+      "get" : {
+        "operationId" : "getMetaDataHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetMetaDataHistoryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "File" ]
+      }
+    },
+    "/gdpr-validation-tasks" : {
+      "get" : {
+        "operationId" : "getAllGdprValidationTasks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "status",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAllValidationTasksResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all GDPR validation tasks",
+        "tags" : [ "GdprValidationTask" ]
+      },
+      "post" : {
+        "operationId" : "addGdprValidationTask",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddGdprValidationTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "Add a GDPR validation task"
+          }
+        },
+        "summary" : "Add a GDPR validation task",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/notification-banner" : {
+      "get" : {
+        "operationId" : "getGdprNotificationBanner",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprNotificationBannerResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get data for GDPR notification banner",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}" : {
+      "delete" : {
+        "operationId" : "deleteGdprValidationTaskAndDownloadPackages",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/DeleteDownloadPackagesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the GDPR validation task with gdprProcedureId and GDPR download packages with ids from request",
+        "tags" : [ "GdprValidationTask" ]
+      },
+      "get" : {
+        "operationId" : "getGdprValidationTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprValidationTaskResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get Gdpr Validation Task by Gdpr Procedure Id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures" : {
+      "get" : {
+        "operationId" : "getGdprValidationTaskDetails",
+        "parameters" : [ {
+          "description" : "The Id of the GDPR procedure.",
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprValidationTaskDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a GDPR validation task by id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}" : {
+      "delete" : {
+        "operationId" : "deleteBusinessProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "businessProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the businessProcedure with businessProcedureId for validationTask with gdprProcedureId with type right of erasure",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}/downloadPackage" : {
+      "post" : {
+        "operationId" : "addDownloadPackage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "businessProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Creates a downloadPackage for validationTask with gdprProcedureId with the data from the procedure with businessProcedureId",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/close" : {
+      "post" : {
+        "operationId" : "closeGdprValidationTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Close a GDPR validation task"
+          }
+        },
+        "summary" : "Close a GDPR validation task",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/download-packages" : {
+      "get" : {
+        "operationId" : "getGdprDownloadPackagesInfo",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprDownloadPackagesInfoResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get approved Gdpr Download Packages by Gdpr Procedure Id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}" : {
+      "get" : {
+        "operationId" : "getGdprDownloadPackage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "downloadId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get Gdpr Download Package by the gdprProcedureId and its downloadId",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/import" : {
+      "post" : {
+        "operationId" : "importData",
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  }
+                },
+                "required" : [ "file" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/MultiValueMapStringObject"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "MedicalRegistryImport" ]
+      }
+    },
+    "/import/template" : {
+      "get" : {
+        "operationId" : "getImportTemplate",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the XLSX import template.",
+        "tags" : [ "MedicalRegistryImport" ]
+      }
+    },
+    "/inbox-procedures" : {
+      "get" : {
+        "description" : "Get all inbox procedures with filter, sort, and pagination options\n",
+        "operationId" : "getInboxProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `inboxProcedureType` is submitted, only inbox procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "inboxProcedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If true, inbox procedures which have no type are returned in addition to the types specified by 'inboxProcedureType'.\n- If false or not submitted, inbox procedures which have no type are not returned.\n",
+          "in" : "query",
+          "name" : "includeUntyped",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `inboxProcedureStatus` is submitted, only inbox procedures are returned which have one of the submitted statuses.\n- If not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "inboxProcedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InboxProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CREATED_AT`: Sorting by createdAt attribute\n- `MODIFIED_AT`: Sorting by modifiedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetInboxProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetInboxProceduresSortOrder"
+          }
+        }, {
+          "description" : "Number of the requested page",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        }, {
+          "description" : "Amount of requested inbox procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInboxProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get inbox procedures",
+        "tags" : [ "InboxProcedure" ]
+      },
+      "post" : {
+        "description" : "Creates an inbox procedure with an optional file upload.\n\n       Permitted file formats:\n        - Image formats: jpeg, png\n        - PDF formats: pdf/a\n        - Mail formats: eml",
+        "operationId" : "addInboxProcedure",
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "createInboxProcedureRequest" : {
+                    "$ref" : "#/components/schemas/CreateInboxProcedureRequest"
+                  },
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  }
+                },
+                "required" : [ "createInboxProcedureRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InboxProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add inbox procedure",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/inbox-procedures/{inboxProcedureId}" : {
+      "get" : {
+        "operationId" : "getInboxProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inboxProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInboxProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get inbox procedure with detailed information",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/inbox-procedures/{inboxProcedureId}/inbox-procedure-status" : {
+      "put" : {
+        "operationId" : "updateInboxProcedureStatus",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inboxProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InboxProcedureStatus"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InboxProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update status of inbox procedure",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/medical-registry-entries" : {
+      "get" : {
+        "operationId" : "getProcedureOverview",
+        "parameters" : [ {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        }, {
+          "description" : "Filter logic:\n- In case of `true` only procedures are returned where a certificate was requested.\n- In case of `false` only procedures are returned where no certificate was requested\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "certificateRequested",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.\n- `procedureStatus` and `procedureType` are always submitted together\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureType` is submitted, only procedures are returned which have one of the submitted types.\n- `procedureStatus` and `procedureType` are always submitted together\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `professionalTitle` is specified, only procedures associated with professionals in one of the given areas are returned.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "professionalTitle",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProfessionalTitle"
+            }
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetMedicalRegistryEntries"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get paginated and optionally filtered medical registry procedures. Filtering is optional",
+        "tags" : [ "MedicalRegistry" ]
+      },
+      "post" : {
+        "operationId" : "createProcedure",
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "employeeList" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "identificationDocument" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "otherRelevantDocuments" : {
+                    "type" : "array",
+                    "items" : {
+                      "type" : "string",
+                      "format" : "binary"
+                    }
+                  },
+                  "procedure" : {
+                    "oneOf" : [ {
+                      "$ref" : "#/components/schemas/CreateApplicantChangeRequest"
+                    }, {
+                      "$ref" : "#/components/schemas/CreateFullChangeRequest"
+                    }, {
+                      "$ref" : "#/components/schemas/CreatePracticeChangeRequest"
+                    } ]
+                  },
+                  "professionalLicenseCertificate" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "workPermit" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  }
+                },
+                "required" : [ "identificationDocument", "procedure" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "uuid"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "MedicalRegistry" ]
+      }
+    },
+    "/medical-registry-entries/public" : {
+      "post" : {
+        "operationId" : "createProcedureFromCitizenPortal",
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "employeeList" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "identificationDocument" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "otherRelevantDocuments" : {
+                    "type" : "array",
+                    "items" : {
+                      "type" : "string",
+                      "format" : "binary"
+                    }
+                  },
+                  "procedure" : {
+                    "oneOf" : [ {
+                      "$ref" : "#/components/schemas/CreateApplicantChangeRequest"
+                    }, {
+                      "$ref" : "#/components/schemas/CreateFullChangeRequest"
+                    }, {
+                      "$ref" : "#/components/schemas/CreatePracticeChangeRequest"
+                    } ]
+                  },
+                  "professionalLicenseCertificate" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "workPermit" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  }
+                },
+                "required" : [ "identificationDocument", "procedure" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "uuid"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "MedicalRegistry" ]
+      }
+    },
+    "/medical-registry-entries/search" : {
+      "get" : {
+        "description" : "Searches for matches in person and facility.\nAs well as lifetime doctor number, establishment number and institution identifier.\n",
+        "operationId" : "searchProcedures_1",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "query",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetMedicalRegistryEntries"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Search medical registry entries for request parameter",
+        "tags" : [ "MedicalRegistry" ]
+      }
+    },
+    "/medical-registry-entries/{procedureId}" : {
+      "delete" : {
+        "operationId" : "deleteProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/DeleteProcedureRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete medical registry procedure by id.",
+        "tags" : [ "MedicalRegistry" ]
+      },
+      "get" : {
+        "operationId" : "getProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/GetProcedureConfirmedResponse"
+                  }, {
+                    "$ref" : "#/components/schemas/GetProcedureDraftResponse"
+                  } ]
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get medical registry procedure by id.",
+        "tags" : [ "MedicalRegistry" ]
+      }
+    },
+    "/medical-registry-entries/{procedureId}/confirm" : {
+      "post" : {
+        "operationId" : "confirmProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ConfirmProcedureRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "uuid"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "MedicalRegistry" ]
+      }
+    },
+    "/procedure-metrics" : {
+      "get" : {
+        "operationId" : "getProcedureMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of procedures"
+          }
+        },
+        "summary" : "Get procedure metrics for procedures created in the given time range",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures" : {
+      "get" : {
+        "description" : "GET operation for retrieving basic information of procedures for the procedure overview.\n",
+        "operationId" : "getProcedures",
+        "parameters" : [ {
+          "description" : "Only procedures are returned where the assigneeId of at least one task equals the `assignedToId`.\nIf not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "assignedToId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureType` is submitted, only procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CREATED_AT`: Sorting by createdAt attribute\n- `MODIFIED_AT`: Sorting by modifiedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/check-file-state-usage" : {
+      "post" : {
+        "operationId" : "checkFileStateUsage",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CheckFileStateUsageRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CheckFileStateUsageResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Identify which file state IDs are still used by active procedures.",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/recent" : {
+      "get" : {
+        "operationId" : "getRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "userId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/recent/self" : {
+      "get" : {
+        "operationId" : "getSelfRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the current users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for the current user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/search" : {
+      "get" : {
+        "operationId" : "searchProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "query",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/searchByPerson" : {
+      "get" : {
+        "operationId" : "searchProceduresByPerson",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "firstName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "lastName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "dateOfBirth",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SearchMedicalRegistryByPersonResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}" : {
+      "get" : {
+        "operationId" : "getDetailedProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetDetailedProcedureResponse"
+                }
+              }
+            },
+            "description" : "a single procedure with details"
+          }
+        },
+        "summary" : "Get a single procedure with details",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}/approval-requests" : {
+      "get" : {
+        "operationId" : "getApprovalRequests",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureApprovalRequestsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all approval requests related to this procedure",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}/files" : {
+      "get" : {
+        "description" : "This returns all relevant (highest version per keydocument type and non-deleted) files sorted by descending creation date.\nThat is:\n * if an progress entry has a keydocument type set, then its files are only returned if it also has the highest keydocument version of the respective key document type.\n * if an progress entry does not have a keydocument type, then its files are always returned.\n",
+        "operationId" : "getProcedureFileDetails",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureFileDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get relevant procedure files",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries" : {
+      "get" : {
+        "operationId" : "getProgressEntries",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Filter on progressEntryType",
+          "in" : "query",
+          "name" : "progressEntryType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        }, {
+          "description" : "Filter on child class of progressEntry",
+          "in" : "query",
+          "name" : "progressEntryClass",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProgressEntryClass"
+            }
+          }
+        }, {
+          "description" : "If `initiatedBy` is set with a `userId` then the following is returned:\n* Only progressEntries with `createdBy`=`userId` in case `ManualProgressEntry` or `ProcessedInboxProgressEntry`\n* Only progressEntries with `triggeredBy`=`userId` in case `SystemProgressEntry`\n",
+          "in" : "query",
+          "name" : "initiatedBy",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "description" : "Filter on triggerType.\nIf this is set, only SystemProgressEntries are returned since only SystemProgressEntries have this attribute.\n",
+          "in" : "query",
+          "name" : "triggerType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TriggerType"
+            }
+          }
+        }, {
+          "description" : "Sorting on either modifiedAt or createdAt ",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProgressEntrySortBy"
+          }
+        }, {
+          "description" : "Sorting order. Possible options  \"ASC\" for ascending and \"DESC\" for descending.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProgressEntrySortOrder"
+          }
+        }, {
+          "description" : "Maximum number of elements to return",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Index of page to be returned",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProgressEntriesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get list of procedure's progress entries",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "post" : {
+        "description" : "Creates a manual progress entry with an optional file upload.\n\n       Permitted file formats:\n        - Image formats: jpeg, png\n        - PDF formats: pdf/a\n        - Mail formats: eml",
+        "operationId" : "addProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "createManualProgressEntryRequest" : {
+                    "$ref" : "#/components/schemas/CreateManualProgressEntryRequest"
+                  },
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  }
+                },
+                "required" : [ "createManualProgressEntryRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ManualProgressEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}" : {
+      "delete" : {
+        "operationId" : "removeProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Remove a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "get" : {
+        "operationId" : "getProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProgressEntryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a progress entry",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "patch" : {
+        "operationId" : "patchProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchManualProgressEntryRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ManualProgressEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modify a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}/deletion-request" : {
+      "post" : {
+        "operationId" : "requestProgressEntryDeletion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateApprovalRequestRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Request deletion of a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}/history" : {
+      "get" : {
+        "operationId" : "getManualProgressEntryHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetManualProgressEntryHistoryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the history of a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/public/privacy-notice" : {
+      "get" : {
+        "operationId" : "getPrivacyNotice",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the privacy-notice document.",
+        "tags" : [ "MedicalRegistryPublicCitizen" ]
+      }
+    },
+    "/public/privacy-policy" : {
+      "get" : {
+        "operationId" : "getPrivacyPolicy",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the privacy-policy document.",
+        "tags" : [ "MedicalRegistryPublicCitizen" ]
+      }
+    },
+    "/task-metrics" : {
+      "get" : {
+        "operationId" : "getTaskMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTaskMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of a specific procedure type"
+          }
+        },
+        "summary" : "Get tasks metrics for a procedure type of a business module for procedures created in the given time range",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks" : {
+      "get" : {
+        "operationId" : "getTasks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "assigneeId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "assignedById",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "taskTypes",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "taskStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortBy"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortOrder"
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TaskResponse"
+                }
+              }
+            },
+            "description" : "tasks"
+          }
+        },
+        "summary" : "Get tasks",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/dashboard" : {
+      "get" : {
+        "operationId" : "getTasksForDashboard",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TaskResponse"
+                }
+              }
+            },
+            "description" : "tasks"
+          }
+        },
+        "summary" : "Get tasks for the dashboard",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/team-view" : {
+      "get" : {
+        "description" : "Returns all _open_ tasks per module group member.",
+        "operationId" : "getTasksByAssignee",
+        "parameters" : [ {
+          "description" : "If provided, `assignee` must be member of the module group.\nIf not provided, all tasks for all members of the module group are returned.\n",
+          "in" : "query",
+          "name" : "assigneeId",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTaskByUserResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/{taskId}/assignment" : {
+      "put" : {
+        "operationId" : "assignTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "taskId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AssignTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Task"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/{taskId}/self-assignment" : {
+      "put" : {
+        "operationId" : "selfAssignTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "taskId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SelfAssignTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Task"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/test-helper/archiving-job" : {
+      "post" : {
+        "operationId" : "runArchivingJob",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/audit-log-storage" : {
+      "delete" : {
+        "operationId" : "clearAuditLogStorageDirectory",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/enabled-new-features/{featureToDisable}" : {
+      "delete" : {
+        "operationId" : "disableNewFeature",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "featureToDisable",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/MedicalRegistryFeature"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/enabled-new-features/{featureToEnable}" : {
+      "post" : {
+        "operationId" : "enableNewFeature",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "featureToEnable",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/MedicalRegistryFeature"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "AbstractFile" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFileReference"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "createdAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "fileName" : {
+              "type" : "string"
+            },
+            "fileSizeBytes" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "fileType" : {
+              "$ref" : "#/components/schemas/FileType"
+            },
+            "locked" : {
+              "type" : "boolean"
+            },
+            "modifiedAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/ApprovalRequestEntity"
+        } ]
+      },
+      "AbstractFileReference" : {
+        "required" : [ "@type", "deletable", "deleted", "fileId" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "deletable" : {
+            "type" : "boolean"
+          },
+          "deleted" : {
+            "type" : "boolean"
+          },
+          "fileId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "AddGdprValidationTaskRequest" : {
+        "required" : [ "gdprProcedureId", "startedAt", "type" ],
+        "type" : "object",
+        "properties" : {
+          "gdprProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "startedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }
+      },
+      "Address" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "Applicant" : {
+        "required" : [ "address", "dateOfBirth", "emailAddresses", "firstName", "gender", "lastName", "nationality", "phoneNumbers", "placeOfBirth" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "$ref" : "#/components/schemas/ApplicantAddress"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "nationality" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string"
+          }
+        }
+      },
+      "ApplicantAddress" : {
+        "required" : [ "city", "country", "houseNumber", "postalCode", "street" ],
+        "type" : "object",
+        "properties" : {
+          "city" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "country" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "houseNumber" : {
+            "maxLength" : 11,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "postalCode" : {
+            "maxLength" : 20,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "street" : {
+            "maxLength" : 55,
+            "minLength" : 1,
+            "type" : "string"
+          }
+        }
+      },
+      "ApprovalRequest" : {
+        "required" : [ "approvalRequestId", "createdAt", "createdBy", "operation", "reason", "status" ],
+        "type" : "object",
+        "properties" : {
+          "approvalRequestId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decidedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "decidedBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decision" : {
+            "$ref" : "#/components/schemas/Decision"
+          },
+          "entity" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/ManualProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "operation" : {
+            "$ref" : "#/components/schemas/Operation"
+          },
+          "reason" : {
+            "type" : "string"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ApprovalRequestStatus"
+          }
+        }
+      },
+      "ApprovalRequestEntity" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ApprovalRequestStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "ArchivingDetails" : {
+        "required" : [ "archivingPeriodYears", "archivingRelevance" ],
+        "type" : "object",
+        "properties" : {
+          "archivingPeriodYears" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          }
+        }
+      },
+      "ArchivingRelevance" : {
+        "type" : "string",
+        "enum" : [ "DEFAULT", "RELEVANT", "IRRELEVANT" ]
+      },
+      "ArchivingRelevanceSettings" : {
+        "required" : [ "archivingRelevance", "defaultArchivingRelevance" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "defaultArchivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          }
+        }
+      },
+      "AssignTaskRequest" : {
+        "required" : [ "assignee", "taskVersion" ],
+        "type" : "object",
+        "properties" : {
+          "assignee" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "taskVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "BulkUpdateProceduresArchivingRelevanceRequest" : {
+        "required" : [ "archivingRelevance", "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "BulkUpdateProceduresArchivingRelevanceResponse" : {
+        "required" : [ "archivingRelevance", "failedProcedures", "updatedProcedures" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "failedProcedures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "updatedProcedures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "BusinessModule" : {
+        "type" : "string",
+        "enum" : [ "INSPECTION", "SCHOOL_ENTRY", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY", "DENTAL", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "BusinessProcedureInclusionStatus" : {
+        "type" : "string",
+        "enum" : [ "INCLUDED", "UNDECIDED" ]
+      },
+      "BusinessProcedureWithInclusionStatus" : {
+        "required" : [ "businessProcedure", "inclusionStatus" ],
+        "type" : "object",
+        "properties" : {
+          "businessProcedure" : {
+            "$ref" : "#/components/schemas/Procedure"
+          },
+          "inclusionStatus" : {
+            "$ref" : "#/components/schemas/BusinessProcedureInclusionStatus"
+          }
+        }
+      },
+      "CheckFileStateUsageRequest" : {
+        "required" : [ "fileStatesIds" ],
+        "type" : "object",
+        "properties" : {
+          "fileStatesIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "CheckFileStateUsageResponse" : {
+        "required" : [ "inUse" ],
+        "type" : "object",
+        "properties" : {
+          "inUse" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "ConfirmProcedureRequest" : {
+        "required" : [ "version" ],
+        "type" : "object",
+        "properties" : {
+          "practiceReferenceFacility" : {
+            "$ref" : "#/components/schemas/PracticeReferenceFacility"
+          },
+          "professionalReferencePerson" : {
+            "$ref" : "#/components/schemas/ProfessionalReferencePerson"
+          },
+          "target" : {
+            "$ref" : "#/components/schemas/ProcedureReference"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ContactDetails" : {
+        "required" : [ "contactType", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "$ref" : "#/components/schemas/InboxProcedureAddress"
+          },
+          "contactType" : {
+            "$ref" : "#/components/schemas/ContactType"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "emailAddress" : {
+            "type" : "string"
+          },
+          "facilityName" : {
+            "type" : "string"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "lastName" : {
+            "type" : "string"
+          },
+          "phoneNumber" : {
+            "type" : "string"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "$ref" : "#/components/schemas/Title"
+          }
+        }
+      },
+      "ContactType" : {
+        "type" : "string",
+        "enum" : [ "PRIVATE_PERSON", "FACILITY" ]
+      },
+      "CountryCode" : {
+        "type" : "string",
+        "description" : "List of country codes in ISO 3166-1 alpha-2 format. With custom extensions for stateless, non-standard countries, and unknown countries.",
+        "enum" : [ "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW", "XK", "UNKNOWN", "STATELESS" ]
+      },
+      "CreateApplicant" : {
+        "required" : [ "address", "dateOfBirth", "firstName", "gender", "lastName", "nationality", "phoneNumber", "placeOfBirth" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "$ref" : "#/components/schemas/ApplicantAddress"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "emailAddress" : {
+            "type" : "string"
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "nationality" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "phoneNumber" : {
+            "maxLength" : 23,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string"
+          }
+        }
+      },
+      "CreateApplicantChangeRequest" : {
+        "required" : [ "applicant", "consentToPrivacyPolicy", "requestForWrittenConfirmation", "typeOfApplicantChange" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/CreateProcedureRequest"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "typeOfApplicantChange" : {
+              "$ref" : "#/components/schemas/TypeOfApplicantChange"
+            }
+          }
+        } ]
+      },
+      "CreateApprovalRequestRequest" : {
+        "required" : [ "reason" ],
+        "type" : "object",
+        "properties" : {
+          "reason" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateFullChangeRequest" : {
+        "required" : [ "applicant", "consentToPrivacyPolicy", "employeesEmployed", "professionInformation", "requestForWrittenConfirmation", "typeOfFullChange" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/CreateProcedureRequest"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "employeesEmployed" : {
+              "type" : "boolean"
+            },
+            "practice" : {
+              "$ref" : "#/components/schemas/CreatePractice"
+            },
+            "professionInformation" : {
+              "$ref" : "#/components/schemas/CreateProfessionInformation"
+            },
+            "typeOfFullChange" : {
+              "$ref" : "#/components/schemas/TypeOfFullChange"
+            }
+          }
+        } ]
+      },
+      "CreateInboxProcedureRequest" : {
+        "required" : [ "contactDetails", "inboxProgressEntry" ],
+        "type" : "object",
+        "properties" : {
+          "contactDetails" : {
+            "$ref" : "#/components/schemas/ContactDetails"
+          },
+          "inboxProcedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "inboxProgressEntry" : {
+            "$ref" : "#/components/schemas/CreateInboxProgressEntry"
+          }
+        }
+      },
+      "CreateInboxProgressEntry" : {
+        "required" : [ "inboxProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProgressEntryType" : {
+            "$ref" : "#/components/schemas/InboxProgressEntryType"
+          },
+          "messageText" : {
+            "type" : "string"
+          },
+          "subject" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateManualProgressEntryRequest" : {
+        "required" : [ "manualProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "keyDocumentType" : {
+            "type" : "string"
+          },
+          "manualProgressEntryType" : {
+            "$ref" : "#/components/schemas/ManualProgressEntryType"
+          },
+          "note" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreatePractice" : {
+        "required" : [ "address", "emailAddress", "healthInsuranceAuthorization", "name", "phoneNumber" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "$ref" : "#/components/schemas/PracticeAddress"
+          },
+          "emailAddress" : {
+            "type" : "string"
+          },
+          "establishmentNumber" : {
+            "pattern" : "\\d+",
+            "type" : "string"
+          },
+          "healthInsuranceAuthorization" : {
+            "type" : "boolean"
+          },
+          "institutionIdentifier" : {
+            "pattern" : "\\d+",
+            "type" : "string"
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "openingHours" : {
+            "type" : "string"
+          },
+          "phoneNumber" : {
+            "maxLength" : 23,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "website" : {
+            "maxLength" : 254,
+            "minLength" : 6,
+            "type" : "string"
+          }
+        }
+      },
+      "CreatePracticeChangeRequest" : {
+        "required" : [ "applicant", "consentToPrivacyPolicy", "employeesEmployed", "practice", "requestForWrittenConfirmation", "typeOfPracticeChange" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/CreateProcedureRequest"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "employeesEmployed" : {
+              "type" : "boolean"
+            },
+            "practice" : {
+              "$ref" : "#/components/schemas/CreatePractice"
+            },
+            "typeOfPracticeChange" : {
+              "$ref" : "#/components/schemas/TypeOfPracticeChange"
+            }
+          }
+        } ]
+      },
+      "CreateProcedureRequest" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "applicant" : {
+            "$ref" : "#/components/schemas/CreateApplicant"
+          },
+          "consentToPrivacyPolicy" : {
+            "type" : "boolean"
+          },
+          "requestForWrittenConfirmation" : {
+            "type" : "boolean"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "CreateProfessionInformation" : {
+        "required" : [ "approbationGrantedOn", "approbationIssuingAuthority", "employmentStatus", "employmentType", "professionalTitle" ],
+        "type" : "object",
+        "properties" : {
+          "approbationGrantedOn" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "approbationIssuingAuthority" : {
+            "type" : "string"
+          },
+          "employmentStatus" : {
+            "$ref" : "#/components/schemas/EmploymentStatus"
+          },
+          "employmentType" : {
+            "$ref" : "#/components/schemas/EmploymentType"
+          },
+          "fieldOfExpertise" : {
+            "type" : "string"
+          },
+          "furtherTraining" : {
+            "type" : "string"
+          },
+          "lifetimeDoctorNumber" : {
+            "pattern" : "\\d{9}",
+            "type" : "string"
+          },
+          "professionalTitle" : {
+            "$ref" : "#/components/schemas/ProfessionalTitle"
+          },
+          "qualifications" : {
+            "type" : "string"
+          },
+          "specialistTitle" : {
+            "type" : "string"
+          }
+        }
+      },
+      "DataOrigin" : {
+        "type" : "string",
+        "description" : "A list of possible origins of Persons and Facility in the Central Files. EDIT will only be set automatically on changes. EXTERNAL is for entries that come, e.g., from the citizen portal. IMPORT is reserved for automatic imports. MANUAL shall be set for every creation or connection done by an employee.",
+        "enum" : [ "MANUAL", "EXTERNAL", "IMPORT", "EDIT" ]
+      },
+      "Decision" : {
+        "type" : "string",
+        "enum" : [ "GRANTED", "DENIED" ]
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "DeleteDownloadPackagesRequest" : {
+        "required" : [ "downloadIds" ],
+        "type" : "object",
+        "properties" : {
+          "downloadIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "DeleteProcedureRequest" : {
+        "required" : [ "version" ],
+        "type" : "object",
+        "properties" : {
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "DetailedFacility" : {
+        "required" : [ "facilityFileState", "facilityType" ],
+        "type" : "object",
+        "properties" : {
+          "facilityFileState" : {
+            "$ref" : "#/components/schemas/GetFacilityFileStateResponse"
+          },
+          "facilityType" : {
+            "$ref" : "#/components/schemas/FacilityType"
+          }
+        }
+      },
+      "DetailedPerson" : {
+        "required" : [ "person", "personType" ],
+        "type" : "object",
+        "properties" : {
+          "person" : {
+            "$ref" : "#/components/schemas/GetPersonFileStateResponse"
+          },
+          "personType" : {
+            "$ref" : "#/components/schemas/PersonType"
+          }
+        }
+      },
+      "DetailedTask" : {
+        "required" : [ "task" ],
+        "type" : "object",
+        "properties" : {
+          "assignedByName" : {
+            "type" : "string"
+          },
+          "assigneeName" : {
+            "type" : "string"
+          },
+          "task" : {
+            "$ref" : "#/components/schemas/Task"
+          }
+        }
+      },
+      "DomesticAddress" : {
+        "required" : [ "city", "country", "postalCode", "street" ],
+        "type" : "object",
+        "description" : "A usual domestic address.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "addressAddition" : {
+              "maxLength" : 100,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "A descriptive addition to the address.",
+              "example" : "2.OG links"
+            },
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "houseNumber" : {
+              "maxLength" : 11,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The house number of the address, including extensions.",
+              "example" : "1a"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "street" : {
+              "maxLength" : 55,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the street of the address, without the house number.",
+              "example" : "Beispielweg"
+            }
+          }
+        } ]
+      },
+      "EmploymentStatus" : {
+        "type" : "string",
+        "enum" : [ "SELF_EMPLOYED", "FREELANCE", "EMPLOYEE" ]
+      },
+      "EmploymentType" : {
+        "type" : "string",
+        "enum" : [ "FULL_TIME", "PART_TIME" ]
+      },
+      "ExportArchivingRelevantProceduresRequest" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "FacilityContactPerson" : {
+        "required" : [ "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "emailAddress" : {
+            "maxLength" : 254,
+            "minLength" : 6,
+            "type" : "string",
+            "description" : "The email addresses of the Contact Person.",
+            "example" : "mail1@address.de"
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Contact Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Contact Person.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "maxLength" : 23,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The phone number of the Contact Person.",
+            "example" : "+491234567890"
+          },
+          "role" : {
+            "maxLength" : 255,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The role of the Contact Person in the Facility.",
+            "example" : "CEO"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of the Contact Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "FacilityType" : {
+        "type" : "string",
+        "enum" : [ "SCHOOL", "INSPECTION", "DAYCARE", "HOSPITAL", "MEDICAL_PRACTICE", "REFUGEE_ACCOMMODATION", "OTHER" ]
+      },
+      "FileMetaData" : {
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          }
+        }
+      },
+      "FileType" : {
+        "type" : "string",
+        "enum" : [ "JPEG", "PNG", "PDF", "EML" ]
+      },
+      "GdprDownloadPackageInfo" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GdprFacility" : {
+        "required" : [ "address", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "dataTransmitterPseudonymId" : {
+              "type" : "string",
+              "description" : "The 'DatenübermittlerPseudonymId' of the MUK user",
+              "example" : "du-986b2b54ab89cf4ed674ad8c3126b966b54d4872"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Facility.",
+              "example" : "mail@address.de"
+            },
+            "name" : {
+              "maxLength" : 300,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the Facility.",
+              "example" : "123 Example Facility"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The phone number of the Facility.",
+              "example" : "+491234567890"
+            }
+          }
+        } ]
+      },
+      "GdprIdentificationData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "GdprPerson" : {
+        "required" : [ "address", "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "bpk2" : {
+              "type" : "string",
+              "description" : "The bpk2 of the BundId user",
+              "example" : "VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0"
+            },
+            "dateOfBirth" : {
+              "type" : "string",
+              "description" : "The date of birth of the Person.",
+              "format" : "date",
+              "example" : "2000-01-01"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Person.",
+              "example" : "mail@address.de"
+            },
+            "firstName" : {
+              "maxLength" : 80,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The given name(s) of the Person.",
+              "example" : "John"
+            },
+            "lastName" : {
+              "maxLength" : 120,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The last name of the Person.",
+              "example" : "Doe"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 0,
+              "type" : "string",
+              "description" : "The phone number of the Person.",
+              "example" : "+491234567890"
+            },
+            "salutation" : {
+              "$ref" : "#/components/schemas/Salutation"
+            },
+            "title" : {
+              "maxLength" : 119,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The academic title of the Person.",
+              "example" : "Prof. Dr."
+            }
+          }
+        } ]
+      },
+      "GdprProcedureType" : {
+        "type" : "string",
+        "description" : "A list of types of GDPR procedures.",
+        "enum" : [ "RIGHT_OF_ACCESS", "RIGHT_TO_ERASURE" ]
+      },
+      "GdprValidationTask" : {
+        "required" : [ "dueDate", "gdprProcedureId", "identificationData", "status", "type" ],
+        "type" : "object",
+        "properties" : {
+          "dueDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "gdprProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "identificationData" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GdprFacility"
+            }, {
+              "$ref" : "#/components/schemas/GdprPerson"
+            } ]
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }
+      },
+      "GdprValidationTaskSortKey" : {
+        "type" : "string",
+        "enum" : [ "CREATED_AT" ]
+      },
+      "GdprValidationTaskStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "Gender" : {
+        "type" : "string",
+        "description" : "The list of genders as specified in the German Personenstandsgesetz.",
+        "enum" : [ "NOT_SPECIFIED", "DIVERSE", "FEMALE", "MALE" ]
+      },
+      "GenericFileReference" : {
+        "required" : [ "@type", "deletable", "deleted", "fileId" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFileReference"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "GetAllValidationTasksResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GdprValidationTask"
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetArchivableProceduresResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetArchivableProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CLOSED_AT",
+        "enum" : [ "CLOSED_AT", "PROCEDURE_TYPE" ]
+      },
+      "GetArchivableProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetArchivingConfigurationResponse" : {
+        "required" : [ "archivingDetails", "gracePeriodMonths" ],
+        "type" : "object",
+        "properties" : {
+          "archivingDetails" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/ArchivingDetails"
+            }
+          },
+          "gracePeriodMonths" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetDetailedProcedureResponse" : {
+        "required" : [ "facilities", "persons", "procedure", "tasks" ],
+        "type" : "object",
+        "properties" : {
+          "facilities" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedFacility"
+            }
+          },
+          "persons" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedPerson"
+            }
+          },
+          "procedure" : {
+            "$ref" : "#/components/schemas/Procedure"
+          },
+          "tasks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedTask"
+            }
+          }
+        }
+      },
+      "GetFacilityFileStateResponse" : {
+        "required" : [ "contactPersons", "dataOrigin", "emailAddresses", "id", "name", "phoneNumbers", "referenceVersion" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Facility.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referenceFacility it is connected to.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          }
+        }
+      },
+      "GetGdprDownloadPackagesInfoResponse" : {
+        "required" : [ "downloadPackages" ],
+        "type" : "object",
+        "properties" : {
+          "downloadPackages" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GdprDownloadPackageInfo"
+            }
+          }
+        }
+      },
+      "GetGdprNotificationBannerResponse" : {
+        "required" : [ "openValidationTasksCount" ],
+        "type" : "object",
+        "properties" : {
+          "earliestDueDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "openValidationTasksCount" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetGdprValidationTaskDetailsResponse" : {
+        "required" : [ "proceduresWithStatus", "validationTask" ],
+        "type" : "object",
+        "properties" : {
+          "proceduresWithStatus" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessProcedureWithInclusionStatus"
+            }
+          },
+          "validationTask" : {
+            "$ref" : "#/components/schemas/GdprValidationTask"
+          }
+        }
+      },
+      "GetGdprValidationTaskResponse" : {
+        "required" : [ "status" ],
+        "type" : "object",
+        "properties" : {
+          "status" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          }
+        }
+      },
+      "GetInboxProcedureResponse" : {
+        "required" : [ "inboxProcedure", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProcedure" : {
+            "$ref" : "#/components/schemas/InboxProcedure"
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetInboxProceduresResponse" : {
+        "required" : [ "inboxProcedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProcedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InboxProcedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetInboxProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "CREATED_AT" ]
+      },
+      "GetInboxProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetManualProgressEntryHistoryResponse" : {
+        "type" : "object",
+        "properties" : {
+          "manualProgressEntryHistory" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ManualProgressEntryHistory"
+            }
+          }
+        }
+      },
+      "GetMedicalRegistryEntries" : {
+        "required" : [ "medicalRegistryEntries", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "medicalRegistryEntries" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/MedicalRegistryEntry"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetMedicalRegistryFeatureTogglesResponse" : {
+        "required" : [ "disabledOldFeatures", "enabledNewFeatures" ],
+        "type" : "object",
+        "properties" : {
+          "disabledOldFeatures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/MedicalRegistryFeature"
+            }
+          },
+          "enabledNewFeatures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/MedicalRegistryFeature"
+            }
+          }
+        }
+      },
+      "GetMetaDataHistoryResponse" : {
+        "type" : "object",
+        "properties" : {
+          "metaDataHistory" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ImageMetaDataHistory"
+              }, {
+                "$ref" : "#/components/schemas/MailMetaDataHistory"
+              }, {
+                "$ref" : "#/components/schemas/PdfMetaDataHistory"
+              } ]
+            }
+          }
+        }
+      },
+      "GetPersonFileStateResponse" : {
+        "required" : [ "dataOrigin", "dateOfBirth", "emailAddresses", "firstName", "gender", "id", "lastName", "phoneNumbers", "referenceVersion", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "The date of birth of the Person.",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Person.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Person.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Person.",
+            "example" : "Doe"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name at birth of the Person.",
+            "example" : "Smith"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referencePerson it is connected to. Set to 'null' if unchecked.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Person.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The place of birth (without country) of the Person.",
+            "example" : "Berlin"
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "GetProcedureApprovalRequestsResponse" : {
+        "required" : [ "approvalRequests", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "approvalRequests" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ApprovalRequest"
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetProcedureConfirmedResponse" : {
+        "required" : [ "applicant", "consentToPrivacyPolicy", "employeesEmployed", "id", "practices", "procedureType", "professionInformation", "requestForWrittenConfirmation", "status", "version" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GetProcedureResponse"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "applicant" : {
+              "$ref" : "#/components/schemas/Applicant"
+            },
+            "consentToPrivacyPolicy" : {
+              "type" : "boolean"
+            },
+            "employeesEmployed" : {
+              "type" : "boolean"
+            },
+            "id" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "practices" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/Practice"
+              }
+            },
+            "procedureType" : {
+              "$ref" : "#/components/schemas/MedicalRegistryEntryProcedureType"
+            },
+            "professionInformation" : {
+              "$ref" : "#/components/schemas/ProfessionInformation"
+            },
+            "requestForWrittenConfirmation" : {
+              "type" : "boolean"
+            },
+            "status" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            },
+            "version" : {
+              "type" : "integer",
+              "format" : "int64"
+            }
+          }
+        } ]
+      },
+      "GetProcedureDraftResponse" : {
+        "required" : [ "applicant", "consentToPrivacyPolicy", "id", "practices", "procedureType", "requestForWrittenConfirmation", "status", "typeOfChange", "version" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GetProcedureResponse"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "applicant" : {
+              "$ref" : "#/components/schemas/Applicant"
+            },
+            "consentToPrivacyPolicy" : {
+              "type" : "boolean"
+            },
+            "employeesEmployed" : {
+              "type" : "boolean"
+            },
+            "id" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "practices" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/Practice"
+              }
+            },
+            "procedureType" : {
+              "$ref" : "#/components/schemas/MedicalRegistryEntryProcedureType"
+            },
+            "professionInformation" : {
+              "$ref" : "#/components/schemas/ProfessionInformation"
+            },
+            "requestForWrittenConfirmation" : {
+              "type" : "boolean"
+            },
+            "status" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            },
+            "typeOfChange" : {
+              "$ref" : "#/components/schemas/TypeOfChange"
+            },
+            "version" : {
+              "type" : "integer",
+              "format" : "int64"
+            }
+          }
+        } ]
+      },
+      "GetProcedureFileDetailsResponse" : {
+        "required" : [ "fileDetails", "procedureId" ],
+        "type" : "object",
+        "properties" : {
+          "fileDetails" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProgressEntryReferenceFilePair"
+            }
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GetProcedureMetricsResponse" : {
+        "required" : [ "procedureMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "procedureMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureMetric"
+            }
+          }
+        }
+      },
+      "GetProcedureResponse" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "GetProceduresResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "MODIFIED_AT", "CREATED_AT" ]
+      },
+      "GetProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetProgressEntriesResponse" : {
+        "required" : [ "progressEntries", "resolvedUsers", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "progressEntries" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ManualProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/ProcessedInboxProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/SystemProgressEntry"
+              } ]
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetProgressEntryResponse" : {
+        "required" : [ "progressEntry", "relatedKeyDocumentProgressEntries", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "progressEntry" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/ManualProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/ProcessedInboxProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/SystemProgressEntry"
+            } ]
+          },
+          "relatedKeyDocumentProgressEntries" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ManualProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/SystemProgressEntry"
+              } ]
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetRecentProceduresResponse" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          }
+        }
+      },
+      "GetReferencePersonResponse" : {
+        "required" : [ "dataOrigin", "dateOfBirth", "emailAddresses", "firstName", "gender", "id", "lastName", "phoneNumbers", "salutation", "version" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "The date of birth of the Person.",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Person.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Person.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Person.",
+            "example" : "Doe"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name at birth of the Person.",
+            "example" : "Smith"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Person.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The place of birth (without country) of the Person.",
+            "example" : "Berlin"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a Person.",
+            "example" : "Prof. Dr."
+          },
+          "version" : {
+            "type" : "integer",
+            "description" : "Version of the entity. Each time the entity is changed, it is incremented by one.",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetRelevantArchivableProceduresResponse" : {
+        "required" : [ "fileSizeBytes", "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "fileSizeBytes" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetRelevantArchivableProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CLOSED_AT",
+        "enum" : [ "CLOSED_AT", "EXPORTED_AT" ]
+      },
+      "GetRelevantArchivableProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetTaskByUserResponse" : {
+        "required" : [ "resolvedUsers", "tasksByUser" ],
+        "type" : "object",
+        "properties" : {
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "tasksByUser" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/Task"
+              }
+            }
+          }
+        }
+      },
+      "GetTaskMetricsResponse" : {
+        "required" : [ "businessModule", "closedProcedureCount", "fastestProcedures", "procedureType", "slowestProcedures", "taskMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedProcedureCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "fastestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "slowestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "taskMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskMetric"
+            }
+          }
+        }
+      },
+      "GetTasksSortBy" : {
+        "type" : "string",
+        "enum" : [ "PRIORITY", "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "GetTasksSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "Image" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/ImageMetaData"
+            }
+          }
+        } ]
+      },
+      "ImageMetaData" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "ImageMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "imageMetaData" : {
+              "$ref" : "#/components/schemas/ImageMetaData"
+            }
+          }
+        } ]
+      },
+      "ImportStatistics" : {
+        "required" : [ "created", "duplicated", "failed", "mergeFailed", "merged", "total" ],
+        "type" : "object",
+        "properties" : {
+          "created" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "duplicated" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "failed" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "mergeFailed" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "merged" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "total" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "InboxProcedure" : {
+        "required" : [ "contactDetails", "createdAt", "createdBy", "inboxProcedureId", "inboxProcedureStatus", "inboxProgressEntry" ],
+        "type" : "object",
+        "properties" : {
+          "closedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "contactDetails" : {
+            "$ref" : "#/components/schemas/ContactDetails"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProcedureStatus" : {
+            "$ref" : "#/components/schemas/InboxProcedureStatus"
+          },
+          "inboxProcedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "inboxProgressEntry" : {
+            "$ref" : "#/components/schemas/InboxProgressEntry"
+          }
+        }
+      },
+      "InboxProcedureAddress" : {
+        "type" : "object",
+        "properties" : {
+          "addressAddition" : {
+            "type" : "string"
+          },
+          "city" : {
+            "type" : "string"
+          },
+          "country" : {
+            "type" : "string"
+          },
+          "houseNumber" : {
+            "type" : "string"
+          },
+          "postalCode" : {
+            "type" : "string"
+          },
+          "postboxNumber" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "street" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InboxProcedureStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "InboxProgressEntry" : {
+        "required" : [ "inboxProgressEntryId", "inboxProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "fileReference" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GenericFileReference"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "inboxProgressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProgressEntryType" : {
+            "$ref" : "#/components/schemas/InboxProgressEntryType"
+          },
+          "messageText" : {
+            "type" : "string"
+          },
+          "subject" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InboxProgressEntryType" : {
+        "type" : "string",
+        "enum" : [ "LETTER", "PHONE_CALL", "EMAIL" ]
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "KeyDocumentAwareProgressEntry" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "keyDocumentType" : {
+            "type" : "string"
+          },
+          "keyDocumentVersion" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "Mail" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt", "removedInvalidAttachments" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/MailMetaData"
+            },
+            "removedInvalidAttachments" : {
+              "type" : "integer",
+              "format" : "int32"
+            }
+          }
+        } ]
+      },
+      "MailMetaData" : {
+        "required" : [ "mailFrom", "mailTo", "messageText", "sentDate", "subject" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "mailFrom" : {
+              "type" : "string"
+            },
+            "mailTo" : {
+              "type" : "string"
+            },
+            "messageText" : {
+              "type" : "string"
+            },
+            "sentDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "subject" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "MailMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "mailMetaData" : {
+              "$ref" : "#/components/schemas/MailMetaData"
+            }
+          }
+        } ]
+      },
+      "ManualProgressEntry" : {
+        "required" : [ "createdAt", "createdBy", "locked", "manualProgressEntryType", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "keyDocumentType" : {
+              "type" : "string"
+            },
+            "keyDocumentVersion" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "locked" : {
+              "type" : "boolean"
+            },
+            "manualProgressEntryType" : {
+              "$ref" : "#/components/schemas/ManualProgressEntryType"
+            },
+            "note" : {
+              "type" : "string"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/ApprovalRequestEntity"
+        }, {
+          "$ref" : "#/components/schemas/KeyDocumentAwareProgressEntry"
+        } ]
+      },
+      "ManualProgressEntryHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "properties" : {
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "manualProgressEntry" : {
+            "$ref" : "#/components/schemas/ManualProgressEntry"
+          }
+        }
+      },
+      "ManualProgressEntryType" : {
+        "type" : "string",
+        "enum" : [ "LETTER", "PHONE_CALL", "NOTE", "EMAIL", "IMAGE", "DOCUMENT" ]
+      },
+      "MedicalRegistryEntry" : {
+        "required" : [ "address", "certificateRequested", "createdAt", "dateOfBirth", "firstName", "id", "lastName", "status", "type" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "$ref" : "#/components/schemas/ApplicantAddress"
+          },
+          "certificateRequested" : {
+            "type" : "boolean"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "lastName" : {
+            "type" : "string"
+          },
+          "professionalTitle" : {
+            "$ref" : "#/components/schemas/ProfessionalTitle"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          }
+        }
+      },
+      "MedicalRegistryEntryProcedureType" : {
+        "type" : "string",
+        "enum" : [ "MEDICAL_REGISTRY_ENTRY", "MEDICAL_REGISTRY_CITIZEN_DRAFT", "MEDICAL_REGISTRY_EMPLOYEE_DRAFT" ]
+      },
+      "MedicalRegistryEntrySearchResult" : {
+        "required" : [ "created", "id", "modifiedAt", "practiceNames", "status", "version" ],
+        "type" : "object",
+        "properties" : {
+          "created" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "practiceNames" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "MedicalRegistryFeature" : {
+        "type" : "string",
+        "enum" : [ "CITIZEN_PORTAL_ENABLED" ]
+      },
+      "MetaData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "description" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "MetaDataHistory" : {
+        "required" : [ "@type", "changedAt" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "MultiValueMapStringObject" : {
+        "type" : "object",
+        "properties" : {
+          "all" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "object"
+            },
+            "writeOnly" : true
+          },
+          "empty" : {
+            "type" : "boolean"
+          }
+        },
+        "additionalProperties" : {
+          "type" : "array",
+          "items" : {
+            "type" : "object"
+          }
+        }
+      },
+      "Operation" : {
+        "type" : "string",
+        "enum" : [ "DELETE" ]
+      },
+      "PatchManualProgressEntryRequest" : {
+        "type" : "object",
+        "properties" : {
+          "manualProgressEntryType" : {
+            "$ref" : "#/components/schemas/ManualProgressEntryType"
+          },
+          "note" : {
+            "type" : "string",
+            "nullable" : true
+          }
+        }
+      },
+      "Pdf" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/PdfMetaData"
+            }
+          }
+        } ]
+      },
+      "PdfMetaData" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "PdfMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "pdfMetaData" : {
+              "$ref" : "#/components/schemas/PdfMetaData"
+            }
+          }
+        } ]
+      },
+      "PersonType" : {
+        "type" : "string",
+        "enum" : [ "PATIENT", "PARENT", "PROFESSIONAL" ]
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "PostboxAddress" : {
+        "required" : [ "city", "country", "postalCode", "postbox" ],
+        "type" : "object",
+        "description" : "An address which is a postbox.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "postbox" : {
+              "maxLength" : 21,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The number (or name) of the postbox.",
+              "example" : "123"
+            }
+          }
+        } ]
+      },
+      "Practice" : {
+        "required" : [ "address", "emailAddresses", "healthInsuranceAuthorization", "name", "phoneNumbers" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "$ref" : "#/components/schemas/PracticeAddress"
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "establishmentNumber" : {
+            "pattern" : "\\d+",
+            "type" : "string"
+          },
+          "healthInsuranceAuthorization" : {
+            "type" : "boolean"
+          },
+          "institutionIdentifier" : {
+            "pattern" : "\\d+",
+            "type" : "string"
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "openingHours" : {
+            "type" : "string"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "website" : {
+            "maxLength" : 254,
+            "minLength" : 6,
+            "type" : "string"
+          }
+        }
+      },
+      "PracticeAddress" : {
+        "required" : [ "city", "houseNumber", "postalCode", "street" ],
+        "type" : "object",
+        "properties" : {
+          "city" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "houseNumber" : {
+            "maxLength" : 11,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "postalCode" : {
+            "maxLength" : 20,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "street" : {
+            "maxLength" : 55,
+            "minLength" : 1,
+            "type" : "string"
+          }
+        }
+      },
+      "PracticeReferenceFacility" : {
+        "required" : [ "id", "name", "version" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 0,
+              "type" : "string"
+            }
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "Procedure" : {
+        "required" : [ "archivingRelevanceSettings", "businessModule", "createdAt", "modifiedAt", "procedureId", "procedureStatus", "procedureType", "summary" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevanceSettings" : {
+            "$ref" : "#/components/schemas/ArchivingRelevanceSettings"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "exportedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "procedureStatus" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "pattern" : "[a-zA-Z0-9.].+",
+            "type" : "string"
+          }
+        }
+      },
+      "ProcedureMetric" : {
+        "required" : [ "abortedCount", "businessModule", "closedCount", "inProgressCount", "openOrDraftCount", "procedureType", "totalCount" ],
+        "type" : "object",
+        "properties" : {
+          "abortedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "inProgressCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "openOrDraftCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "totalCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ProcedureReference" : {
+        "required" : [ "id", "version" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ProcedureStatus" : {
+        "type" : "string",
+        "enum" : [ "DRAFT", "OPEN", "IN_PROGRESS", "CLOSED", "ABORTED" ]
+      },
+      "ProcedureType" : {
+        "type" : "string",
+        "enum" : [ "REGULAR_EXAMINATION", "CAN_CHILD", "ENTRY_LEVEL", "DRAFT_CITIZEN_OFFICE_IMPORT", "DRAFT_SCHOOL_IMPORT", "INSPECTION", "TM_VACCINATION_CONSULTATION", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY_ENTRY", "MEDICAL_REGISTRY_CITIZEN_DRAFT", "MEDICAL_REGISTRY_EMPLOYEE_DRAFT", "DENTAL_CHILD", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "ProcedureWithDuration" : {
+        "required" : [ "createdAt", "id" ],
+        "type" : "object",
+        "properties" : {
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "duration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ProcessedInboxProgressEntry" : {
+        "required" : [ "createdAt", "createdBy", "inboxProcedureId", "inboxProgressEntryType", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "inboxProcedureId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "inboxProgressEntryType" : {
+              "$ref" : "#/components/schemas/InboxProgressEntryType"
+            },
+            "messageText" : {
+              "type" : "string"
+            },
+            "subject" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "ProfessionInformation" : {
+        "type" : "object",
+        "properties" : {
+          "approbationGrantedOn" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "approbationIssuingAuthority" : {
+            "type" : "string"
+          },
+          "employmentStatus" : {
+            "$ref" : "#/components/schemas/EmploymentStatus"
+          },
+          "employmentType" : {
+            "$ref" : "#/components/schemas/EmploymentType"
+          },
+          "fieldOfExpertise" : {
+            "type" : "string"
+          },
+          "furtherTraining" : {
+            "type" : "string"
+          },
+          "lifetimeDoctorNumber" : {
+            "pattern" : "\\d{9}",
+            "type" : "string"
+          },
+          "professionalTitle" : {
+            "$ref" : "#/components/schemas/ProfessionalTitle"
+          },
+          "qualifications" : {
+            "type" : "string"
+          },
+          "specialistTitle" : {
+            "type" : "string"
+          }
+        }
+      },
+      "ProfessionalReferencePerson" : {
+        "required" : [ "dateOfBirth", "firstName", "id", "lastName", "version" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "The date of birth of the Person.",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Person.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Person.",
+            "example" : "Doe"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name at birth of the Person.",
+            "example" : "Smith"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Person.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The place of birth (without country) of the Person.",
+            "example" : "Berlin"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a Person.",
+            "example" : "Prof. Dr."
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ProfessionalTitle" : {
+        "type" : "string",
+        "enum" : [ "DOCTOR", "DENTIST", "PSYCHOLOGICAL_PSYCHOTHERAPIST", "NURSING_ASSISTANT", "GERIATRIC_NURSE", "DIETICIAN", "DISINFECTOR", "OCCUPATIONAL_THERAPIST", "HEALTH_SUPERVISOR", "HEALTHCARE_AND_PEDIATRIC_NURSE", "HEALTHCARE_AND_NURSING_ASSISTANT", "HEALTHCARE_AND_NURSING_ASSISTANTS_HELPER", "MIDWIVE_MATERNITY_NURSE", "ALTERNATIVE_PRACTITIONER", "NON_MEDICAL_PRACTITIONER_FOR_CHIROPRACTIC", "ALTERNATIVE_PRACTITIONER_FOR_SPEECH_THERAPY", "NON_MEDICAL_PRACTITIONER_FOR_PHYSIOTHERAPY", "NON_MEDICAL_PRACTITIONER_FOR_PSYCHOTHERAPY", "CHILD_AND_YOUTH_PSYCHOTHERAPIST", "SPEECH_THERAPIST", "MASSEUR_AND_MEDICAL_BATH_ATTENDANT", "MEDICAL_DOCUMENTALIST", "MEDICAL_TECHNICAL_LABORATORY_ASSISTANT", "MEDICAL_TECHNICAL_RADIOLOGY_ASSISTANT", "MEDICAL_TECHNICAL_ASSISTANT_FOR_FUNCTIONAL_DIAGNOSTICS", "EMERGENCY_PARAMEDIC", "ORTHOPTIST", "CARE_ASSISTANT", "NURSING_SERVICE", "NURSING_SERVICE_MANAGER", "PHARMACEUTICAL_TECHNICAL_ASSISTANT", "PHYSIOTHERAPIST", "PODIATRIST", "RADIOLOGY_ASSISTANT", "SPORTS_THERAPIST", "PHARMACIST", "VETERINARIAN" ]
+      },
+      "ProgressEntry" : {
+        "required" : [ "@type", "createdAt", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "fileReference" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GenericFileReference"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "progressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ProgressEntryClass" : {
+        "type" : "string",
+        "enum" : [ "MANUAL_PROGRESS_ENTRY", "SYSTEM_PROGRESS_ENTRY", "PROCESSED_INBOX_PROGRESS_ENTRY" ]
+      },
+      "ProgressEntryReferenceFilePair" : {
+        "required" : [ "file", "progressEntryId" ],
+        "type" : "object",
+        "properties" : {
+          "file" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "progressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ProgressEntrySortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "ProgressEntrySortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "Salutation" : {
+        "type" : "string",
+        "enum" : [ "NOT_SPECIFIED", "NEUTRAL", "FEMALE", "MALE" ]
+      },
+      "SearchMedicalRegistryByPersonResponse" : {
+        "required" : [ "procedures", "resolvedPersons" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/MedicalRegistryEntrySearchResult"
+              }
+            }
+          },
+          "resolvedPersons" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/GetReferencePersonResponse"
+            }
+          }
+        }
+      },
+      "SelfAssignTaskRequest" : {
+        "required" : [ "taskVersion" ],
+        "type" : "object",
+        "properties" : {
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "taskVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "SortDirection" : {
+        "type" : "string",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "SystemProgressEntry" : {
+        "required" : [ "createdAt", "modifiedAt", "progressEntryId", "systemProgressEntryType", "triggerType" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "changeDescription" : {
+              "type" : "string"
+            },
+            "keyDocumentType" : {
+              "type" : "string"
+            },
+            "keyDocumentVersion" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "previousFileStateId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "systemProgressEntryType" : {
+              "type" : "string"
+            },
+            "triggerType" : {
+              "$ref" : "#/components/schemas/TriggerType"
+            },
+            "triggeredBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/KeyDocumentAwareProgressEntry"
+        } ]
+      },
+      "Task" : {
+        "required" : [ "businessModule", "createdAt", "isOverdue", "modifiedAt", "procedureId", "summary", "taskId", "taskStatus", "taskType", "version" ],
+        "type" : "object",
+        "properties" : {
+          "assignedById" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "assigneeId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "isOverdue" : {
+            "type" : "boolean"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "taskId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "taskStatus" : {
+            "$ref" : "#/components/schemas/TaskStatus"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "TaskMetric" : {
+        "required" : [ "moreThanTwoOccurrencesCount", "noOccurrencesCount", "oneOccurrenceCount", "taskType", "twoOccurrencesCount" ],
+        "type" : "object",
+        "properties" : {
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "moreThanTwoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "noOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "oneOccurrenceCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "twoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TaskResponse" : {
+        "required" : [ "count", "tasks" ],
+        "type" : "object",
+        "properties" : {
+          "count" : {
+            "type" : "integer",
+            "description" : "total number of tasks for this query",
+            "format" : "int64"
+          },
+          "tasks" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Task"
+            }
+          }
+        }
+      },
+      "TaskStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "TaskType" : {
+        "type" : "string",
+        "enum" : [ "BOOK_APPOINTMENT", "PERFORM_SCHOOL_ENTRY_EXAMINATION", "INSPECTION_PLANNING", "INSPECTION_EXECUTION", "INSPECTION_REPORT", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      },
+      "Title" : {
+        "type" : "string",
+        "enum" : [ "DR", "PROF", "PROF_DR" ]
+      },
+      "TriggerType" : {
+        "type" : "string",
+        "enum" : [ "SYSTEM_AUTOMATIC", "EMPLOYEE", "CITIZEN" ]
+      },
+      "TypeOfApplicantChange" : {
+        "type" : "string",
+        "enum" : [ "DEREGISTRATION", "RELOCATION", "CHANGE_OF_NAME" ]
+      },
+      "TypeOfChange" : {
+        "type" : "string",
+        "enum" : [ "NEW_REGISTRATION", "SECOND_PRACTICE", "RE_REGISTRATION", "CHANGE_OF_REGISTRATION", "CHANGE_OF_NAME", "RELOCATION", "DEREGISTRATION", "OTHER" ]
+      },
+      "TypeOfFullChange" : {
+        "type" : "string",
+        "enum" : [ "NEW_REGISTRATION", "RE_REGISTRATION", "OTHER" ]
+      },
+      "TypeOfPracticeChange" : {
+        "type" : "string",
+        "enum" : [ "SECOND_PRACTICE", "CHANGE_OF_REGISTRATION" ]
+      },
+      "User" : {
+        "required" : [ "enabled", "firstName", "lastName", "userId", "username" ],
+        "type" : "object",
+        "properties" : {
+          "email" : {
+            "type" : "string",
+            "description" : "The email address of a user.",
+            "example" : "example@mail.de"
+          },
+          "enabled" : {
+            "type" : "boolean",
+            "description" : "True, if the user can login",
+            "example" : false
+          },
+          "externalChatUsername" : {
+            "type" : "string",
+            "description" : "The chat username of the gematik TI-Messenger (matrix chat).",
+            "example" : "@username:server"
+          },
+          "firstName" : {
+            "type" : "string",
+            "description" : "The given name(s) of a user.",
+            "example" : "John"
+          },
+          "lastName" : {
+            "type" : "string",
+            "description" : "The last name of a user.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "type" : "string",
+            "description" : "The phone number of a user.",
+            "example" : "+491234567890"
+          },
+          "userId" : {
+            "type" : "string",
+            "description" : "The Id of the user.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "username" : {
+            "type" : "string",
+            "description" : "The username which is displayed in the application and can be used for the login.",
+            "example" : "testuser"
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/backend/medical-registry/openApi.yaml b/backend/medical-registry/openApi.yaml
deleted file mode 100644
index 9e883954f..000000000
--- a/backend/medical-registry/openApi.yaml
+++ /dev/null
@@ -1,5441 +0,0 @@
-# Copyright 2025 cronn GmbH
-# SPDX-License-Identifier: Apache-2.0
-
-openapi: 3.0.1
-info:
-  description: This is the API for the medical-registry module
-  title: Medical Registry Module API
-  version: "0.1"
-servers:
-- url: http://localhost:8097
-paths:
-  /approval-requests/{approvalRequestId}:
-    get:
-      operationId: getApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      tags:
-      - ApprovalRequest
-  /approval-requests/{approvalRequestId}/decision:
-    put:
-      operationId: decideApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/Decision"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - ApprovalRequest
-  /archiving/config:
-    get:
-      operationId: getArchivingConfiguration
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetArchivingConfigurationResponse"
-          description: OK
-      summary: Get archiving configuration
-      tags:
-      - Archiving
-  /archiving/procedures:
-    get:
-      operationId: getArchivableProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `closedAtDay` is set, only procedures are returned which were closed at that date
-          - If not submitted, no filtering takes place
-        in: query
-        name: closedAtDay
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If `defaultArchivingRelevance` is submitted, only procedures are returned which have one of the submitted default archiving relevances.
-          - If not submitted, no filtering takes place
-        in: query
-        name: defaultArchivingRelevance
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ArchivingRelevance"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CLOSED_AT`: Sorting by closedAt attribute
-          - `PROCEDURE_TYPE`: Sorting by procedureType attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetArchivableProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetArchivableProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetArchivableProceduresResponse"
-          description: OK
-      summary: Get archivable procedures
-      tags:
-      - Archiving
-  /archiving/procedures/bulk-update-archiving-relevance:
-    post:
-      operationId: bulkUpdateProceduresArchivingRelevance
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/BulkUpdateProceduresArchivingRelevanceRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/BulkUpdateProceduresArchivingRelevanceResponse"
-          description: OK
-      summary: Bulk update procedures archiving relevance
-      tags:
-      - Archiving
-  /archiving/relevant-procedures:
-    get:
-      operationId: getRelevantArchivableProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `closedAtDay` is set, only procedures are returned which were closed at that date
-          - If not submitted, no filtering takes place
-        in: query
-        name: closedAtDay
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If `exported` is true, only procedures are returned which have already been exported.
-          - If `exported` is false, only procedures are returned which have not been exported, yet.
-          - If not submitted, no filtering takes place
-        in: query
-        name: exported
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          The following sorting options are available:
-          - `CLOSED_AT`: Sorting by closedAt attribute
-          - `EXPORTED_AT`: Sorting by exportedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetRelevantArchivableProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetRelevantArchivableProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRelevantArchivableProceduresResponse"
-          description: OK
-      summary: Get relevant archivable procedures
-      tags:
-      - Archiving
-  /archiving/relevant-procedures/export:
-    post:
-      operationId: exportRelevantProcedures
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ExportArchivingRelevantProceduresRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - Archiving
-  /feature-toggles:
-    get:
-      operationId: getFeatureToggles
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetMedicalRegistryFeatureTogglesResponse"
-          description: OK
-      tags:
-      - MedicalRegistryFeatureTogglesPublic
-  /files/{fileId}:
-    delete:
-      operationId: deleteFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Soft deletes the specified file
-      tags:
-      - File
-    get:
-      operationId: getFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/Image"
-                - $ref: "#/components/schemas/Mail"
-                - $ref: "#/components/schemas/Pdf"
-          description: OK
-      summary: Retrieves the meta data of the specified file
-      tags:
-      - File
-  /files/{fileId}/deletion-request:
-    post:
-      operationId: requestFileDeletion
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateApprovalRequestRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      summary: Request deletion of a file entry
-      tags:
-      - File
-  /files/{fileId}/download:
-    get:
-      operationId: downloadFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - File
-  /files/{fileId}/meta-data:
-    put:
-      operationId: updateFileMetaData
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              oneOf:
-              - $ref: "#/components/schemas/ImageMetaData"
-              - $ref: "#/components/schemas/MailMetaData"
-              - $ref: "#/components/schemas/PdfMetaData"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/Image"
-                - $ref: "#/components/schemas/Mail"
-                - $ref: "#/components/schemas/Pdf"
-          description: Updated file
-      summary: Updates the meta data of the specified file
-      tags:
-      - File
-  /files/{fileId}/meta-data/history:
-    get:
-      operationId: getMetaDataHistory
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetMetaDataHistoryResponse"
-          description: OK
-      tags:
-      - File
-  /gdpr-validation-tasks:
-    get:
-      operationId: getAllGdprValidationTasks
-      parameters:
-      - in: query
-        name: status
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprValidationTaskSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAllValidationTasksResponse"
-          description: OK
-      summary: Get all GDPR validation tasks
-      tags:
-      - GdprValidationTask
-    post:
-      operationId: addGdprValidationTask
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddGdprValidationTaskRequest"
-        required: true
-      responses:
-        "200":
-          description: Add a GDPR validation task
-      summary: Add a GDPR validation task
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/notification-banner:
-    get:
-      operationId: getGdprNotificationBanner
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprNotificationBannerResponse"
-          description: OK
-      summary: Get data for GDPR notification banner
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}:
-    delete:
-      operationId: deleteGdprValidationTaskAndDownloadPackages
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/DeleteDownloadPackagesRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Delete the GDPR validation task with gdprProcedureId and GDPR download
-        packages with ids from request
-      tags:
-      - GdprValidationTask
-    get:
-      operationId: getGdprValidationTask
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprValidationTaskResponse"
-          description: OK
-      summary: Get Gdpr Validation Task by Gdpr Procedure Id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures:
-    get:
-      operationId: getGdprValidationTaskDetails
-      parameters:
-      - description: The Id of the GDPR procedure.
-        in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprValidationTaskDetailsResponse"
-          description: OK
-      summary: Get a GDPR validation task by id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}:
-    delete:
-      operationId: deleteBusinessProcedure
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: businessProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Delete the businessProcedure with businessProcedureId for validationTask
-        with gdprProcedureId with type right of erasure
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}/downloadPackage:
-    post:
-      operationId: addDownloadPackage
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: businessProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Creates a downloadPackage for validationTask with gdprProcedureId with
-        the data from the procedure with businessProcedureId
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/close:
-    post:
-      operationId: closeGdprValidationTask
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Close a GDPR validation task
-      summary: Close a GDPR validation task
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/download-packages:
-    get:
-      operationId: getGdprDownloadPackagesInfo
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprDownloadPackagesInfoResponse"
-          description: OK
-      summary: Get approved Gdpr Download Packages by Gdpr Procedure Id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}:
-    get:
-      operationId: getGdprDownloadPackage
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: downloadId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get Gdpr Download Package by the gdprProcedureId and its downloadId
-      tags:
-      - GdprValidationTask
-  /import:
-    post:
-      operationId: importData
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                file:
-                  type: string
-                  format: binary
-              required:
-              - file
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/MultiValueMapStringObject"
-          description: OK
-      tags:
-      - MedicalRegistryImport
-  /import/template:
-    get:
-      operationId: getImportTemplate
-      responses:
-        "200":
-          content:
-            application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get the XLSX import template.
-      tags:
-      - MedicalRegistryImport
-  /inbox-procedures:
-    get:
-      description: |
-        Get all inbox procedures with filter, sort, and pagination options
-      operationId: getInboxProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `inboxProcedureType` is submitted, only inbox procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place.
-        in: query
-        name: inboxProcedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If true, inbox procedures which have no type are returned in addition to the types specified by 'inboxProcedureType'.
-          - If false or not submitted, inbox procedures which have no type are not returned.
-        in: query
-        name: includeUntyped
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          Filter logic:
-          - If `inboxProcedureStatus` is submitted, only inbox procedures are returned which have one of the submitted statuses.
-          - If not submitted, no filtering takes place.
-        in: query
-        name: inboxProcedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/InboxProcedureStatus"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CREATED_AT`: Sorting by createdAt attribute
-          - `MODIFIED_AT`: Sorting by modifiedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetInboxProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetInboxProceduresSortOrder"
-      - description: Number of the requested page
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      - description: Amount of requested inbox procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 25
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInboxProceduresResponse"
-          description: OK
-      summary: Get inbox procedures
-      tags:
-      - InboxProcedure
-    post:
-      description: |-
-        Creates an inbox procedure with an optional file upload.
-
-               Permitted file formats:
-                - Image formats: jpeg, png
-                - PDF formats: pdf/a
-                - Mail formats: eml
-      operationId: addInboxProcedure
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                createInboxProcedureRequest:
-                  $ref: "#/components/schemas/CreateInboxProcedureRequest"
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-              required:
-              - createInboxProcedureRequest
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InboxProcedure"
-          description: OK
-      summary: Add inbox procedure
-      tags:
-      - InboxProcedure
-  /inbox-procedures/{inboxProcedureId}:
-    get:
-      operationId: getInboxProcedure
-      parameters:
-      - in: path
-        name: inboxProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInboxProcedureResponse"
-          description: OK
-      summary: Get inbox procedure with detailed information
-      tags:
-      - InboxProcedure
-  /inbox-procedures/{inboxProcedureId}/inbox-procedure-status:
-    put:
-      operationId: updateInboxProcedureStatus
-      parameters:
-      - in: path
-        name: inboxProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InboxProcedureStatus"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InboxProcedure"
-          description: OK
-      summary: Update status of inbox procedure
-      tags:
-      - InboxProcedure
-  /medical-registry-entries:
-    get:
-      operationId: getProcedureOverview
-      parameters:
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 25
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      - description: |
-          Filter logic:
-          - In case of `true` only procedures are returned where a certificate was requested.
-          - In case of `false` only procedures are returned where no certificate was requested
-          - If not submitted, no filtering takes place
-        in: query
-        name: certificateRequested
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          Filter logic:
-          - If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.
-          - `procedureStatus` and `procedureType` are always submitted together
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
-          - `procedureStatus` and `procedureType` are always submitted together
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `professionalTitle` is specified, only procedures associated with professionals in one of the given areas are returned.
-          - If not submitted, no filtering takes place
-        in: query
-        name: professionalTitle
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProfessionalTitle"
-          uniqueItems: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetMedicalRegistryEntries"
-          description: OK
-      summary: Get paginated and optionally filtered medical registry procedures.
-        Filtering is optional
-      tags:
-      - MedicalRegistry
-    post:
-      operationId: createProcedure
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                employeeList:
-                  type: string
-                  format: binary
-                identificationDocument:
-                  type: string
-                  format: binary
-                otherRelevantDocuments:
-                  type: array
-                  items:
-                    type: string
-                    format: binary
-                procedure:
-                  oneOf:
-                  - $ref: "#/components/schemas/CreateApplicantChangeRequest"
-                  - $ref: "#/components/schemas/CreateFullChangeRequest"
-                  - $ref: "#/components/schemas/CreatePracticeChangeRequest"
-                professionalLicenseCertificate:
-                  type: string
-                  format: binary
-                workPermit:
-                  type: string
-                  format: binary
-              required:
-              - identificationDocument
-              - procedure
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: uuid
-          description: OK
-      tags:
-      - MedicalRegistry
-  /medical-registry-entries/public:
-    post:
-      operationId: createProcedureFromCitizenPortal
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                employeeList:
-                  type: string
-                  format: binary
-                identificationDocument:
-                  type: string
-                  format: binary
-                otherRelevantDocuments:
-                  type: array
-                  items:
-                    type: string
-                    format: binary
-                procedure:
-                  oneOf:
-                  - $ref: "#/components/schemas/CreateApplicantChangeRequest"
-                  - $ref: "#/components/schemas/CreateFullChangeRequest"
-                  - $ref: "#/components/schemas/CreatePracticeChangeRequest"
-                professionalLicenseCertificate:
-                  type: string
-                  format: binary
-                workPermit:
-                  type: string
-                  format: binary
-              required:
-              - identificationDocument
-              - procedure
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: uuid
-          description: OK
-      tags:
-      - MedicalRegistry
-  /medical-registry-entries/search:
-    get:
-      description: |
-        Searches for matches in person and facility.
-        As well as lifetime doctor number, establishment number and institution identifier.
-      operationId: searchProcedures_1
-      parameters:
-      - in: query
-        name: query
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetMedicalRegistryEntries"
-          description: OK
-      summary: Search medical registry entries for request parameter
-      tags:
-      - MedicalRegistry
-  /medical-registry-entries/{procedureId}:
-    delete:
-      operationId: deleteProcedure
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/DeleteProcedureRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Delete medical registry procedure by id.
-      tags:
-      - MedicalRegistry
-    get:
-      operationId: getProcedure
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/GetProcedureConfirmedResponse"
-                - $ref: "#/components/schemas/GetProcedureDraftResponse"
-          description: OK
-      summary: Get medical registry procedure by id.
-      tags:
-      - MedicalRegistry
-  /medical-registry-entries/{procedureId}/confirm:
-    post:
-      operationId: confirmProcedure
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ConfirmProcedureRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: uuid
-          description: OK
-      tags:
-      - MedicalRegistry
-  /procedure-metrics:
-    get:
-      operationId: getProcedureMetrics
-      parameters:
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureMetricsResponse"
-          description: the metrics of procedures
-      summary: Get procedure metrics for procedures created in the given time range
-      tags:
-      - Procedure
-  /procedures:
-    get:
-      description: |
-        GET operation for retrieving basic information of procedures for the procedure overview.
-      operationId: getProcedures
-      parameters:
-      - description: |
-          Only procedures are returned where the assigneeId of at least one task equals the `assignedToId`.
-          If not submitted, no filtering takes place.
-        in: query
-        name: assignedToId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: |
-          Filter logic:
-          - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CREATED_AT`: Sorting by createdAt attribute
-          - `MODIFIED_AT`: Sorting by modifiedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for user
-      tags:
-      - Procedure
-  /procedures/check-file-state-usage:
-    post:
-      operationId: checkFileStateUsage
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CheckFileStateUsageRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CheckFileStateUsageResponse"
-          description: OK
-      summary: Identify which file state IDs are still used by active procedures.
-      tags:
-      - Procedure
-  /procedures/recent:
-    get:
-      operationId: getRecentProcedures
-      parameters:
-      - in: query
-        name: userId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRecentProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for user
-      tags:
-      - Procedure
-  /procedures/recent/self:
-    get:
-      operationId: getSelfRecentProcedures
-      parameters:
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRecentProceduresResponse"
-          description: the current users recent procedures
-      summary: Get recent procedures for the current user
-      tags:
-      - Procedure
-  /procedures/search:
-    get:
-      operationId: searchProcedures
-      parameters:
-      - in: query
-        name: query
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresResponse"
-          description: OK
-      tags:
-      - Procedure
-  /procedures/searchByPerson:
-    get:
-      operationId: searchProceduresByPerson
-      parameters:
-      - in: query
-        name: firstName
-        required: true
-        schema:
-          type: string
-      - in: query
-        name: lastName
-        required: true
-        schema:
-          type: string
-      - in: query
-        name: dateOfBirth
-        required: true
-        schema:
-          type: string
-          format: date
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/SearchMedicalRegistryByPersonResponse"
-          description: OK
-      tags:
-      - Procedure
-  /procedures/{id}:
-    get:
-      operationId: getDetailedProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetDetailedProcedureResponse"
-          description: a single procedure with details
-      summary: Get a single procedure with details
-      tags:
-      - Procedure
-  /procedures/{id}/approval-requests:
-    get:
-      operationId: getApprovalRequests
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureApprovalRequestsResponse"
-          description: OK
-      summary: Get all approval requests related to this procedure
-      tags:
-      - Procedure
-  /procedures/{id}/files:
-    get:
-      description: |
-        This returns all relevant (highest version per keydocument type and non-deleted) files sorted by descending creation date.
-        That is:
-         * if an progress entry has a keydocument type set, then its files are only returned if it also has the highest keydocument version of the respective key document type.
-         * if an progress entry does not have a keydocument type, then its files are always returned.
-      operationId: getProcedureFileDetails
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureFileDetailsResponse"
-          description: OK
-      summary: Get relevant procedure files
-      tags:
-      - Procedure
-  /procedures/{procedureId}/progress-entries:
-    get:
-      operationId: getProgressEntries
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - description: Filter on progressEntryType
-        in: query
-        name: progressEntryType
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-          uniqueItems: true
-      - description: Filter on child class of progressEntry
-        in: query
-        name: progressEntryClass
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProgressEntryClass"
-          uniqueItems: true
-      - description: |
-          If `initiatedBy` is set with a `userId` then the following is returned:
-          * Only progressEntries with `createdBy`=`userId` in case `ManualProgressEntry` or `ProcessedInboxProgressEntry`
-          * Only progressEntries with `triggeredBy`=`userId` in case `SystemProgressEntry`
-        in: query
-        name: initiatedBy
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      - description: |
-          Filter on triggerType.
-          If this is set, only SystemProgressEntries are returned since only SystemProgressEntries have this attribute.
-        in: query
-        name: triggerType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TriggerType"
-          uniqueItems: true
-      - description: 'Sorting on either modifiedAt or createdAt '
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProgressEntrySortBy"
-      - description: Sorting order. Possible options  "ASC" for ascending and "DESC"
-          for descending.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProgressEntrySortOrder"
-      - description: Maximum number of elements to return
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Index of page to be returned
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProgressEntriesResponse"
-          description: OK
-      summary: Get list of procedure's progress entries
-      tags:
-      - ProgressEntry
-    post:
-      description: |-
-        Creates a manual progress entry with an optional file upload.
-
-               Permitted file formats:
-                - Image formats: jpeg, png
-                - PDF formats: pdf/a
-                - Mail formats: eml
-      operationId: addProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                createManualProgressEntryRequest:
-                  $ref: "#/components/schemas/CreateManualProgressEntryRequest"
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-              required:
-              - createManualProgressEntryRequest
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ManualProgressEntry"
-          description: OK
-      summary: Create a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}:
-    delete:
-      operationId: removeProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Remove a manual progress entry
-      tags:
-      - ProgressEntry
-    get:
-      operationId: getProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProgressEntryResponse"
-          description: OK
-      summary: Get a progress entry
-      tags:
-      - ProgressEntry
-    patch:
-      operationId: patchProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchManualProgressEntryRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ManualProgressEntry"
-          description: OK
-      summary: Modify a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}/deletion-request:
-    post:
-      operationId: requestProgressEntryDeletion
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateApprovalRequestRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      summary: Request deletion of a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}/history:
-    get:
-      operationId: getManualProgressEntryHistory
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetManualProgressEntryHistoryResponse"
-          description: OK
-      summary: Get the history of a manual progress entry
-      tags:
-      - ProgressEntry
-  /public/privacy-notice:
-    get:
-      operationId: getPrivacyNotice
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get the privacy-notice document.
-      tags:
-      - MedicalRegistryPublicCitizen
-  /public/privacy-policy:
-    get:
-      operationId: getPrivacyPolicy
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get the privacy-policy document.
-      tags:
-      - MedicalRegistryPublicCitizen
-  /task-metrics:
-    get:
-      operationId: getTaskMetrics
-      parameters:
-      - in: query
-        name: procedureType
-        required: true
-        schema:
-          $ref: "#/components/schemas/ProcedureType"
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTaskMetricsResponse"
-          description: the metrics of a specific procedure type
-      summary: Get tasks metrics for a procedure type of a business module for procedures
-        created in the given time range
-      tags:
-      - Task
-  /tasks:
-    get:
-      operationId: getTasks
-      parameters:
-      - in: query
-        name: assigneeId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: assignedById
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      - in: query
-        name: taskTypes
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskType"
-          uniqueItems: true
-      - in: query
-        name: taskStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskStatus"
-          uniqueItems: true
-      - in: query
-        name: sortKey
-        required: true
-        schema:
-          $ref: "#/components/schemas/GetTasksSortBy"
-      - in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetTasksSortOrder"
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TaskResponse"
-          description: tasks
-      summary: Get tasks
-      tags:
-      - Task
-  /tasks/dashboard:
-    get:
-      operationId: getTasksForDashboard
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TaskResponse"
-          description: tasks
-      summary: Get tasks for the dashboard
-      tags:
-      - Task
-  /tasks/team-view:
-    get:
-      description: Returns all _open_ tasks per module group member.
-      operationId: getTasksByAssignee
-      parameters:
-      - description: |
-          If provided, `assignee` must be member of the module group.
-          If not provided, all tasks for all members of the module group are returned.
-        in: query
-        name: assigneeId
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTaskByUserResponse"
-          description: OK
-      tags:
-      - Task
-  /tasks/{taskId}/assignment:
-    put:
-      operationId: assignTask
-      parameters:
-      - in: path
-        name: taskId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AssignTaskRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Task"
-          description: OK
-      tags:
-      - Task
-  /tasks/{taskId}/self-assignment:
-    put:
-      operationId: selfAssignTask
-      parameters:
-      - in: path
-        name: taskId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SelfAssignTaskRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Task"
-          description: OK
-      tags:
-      - Task
-  /test-helper/archiving-job:
-    post:
-      operationId: runArchivingJob
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/audit-log-storage:
-    delete:
-      operationId: clearAuditLogStorageDirectory
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/enabled-new-features/{featureToDisable}:
-    delete:
-      operationId: disableNewFeature
-      parameters:
-      - in: path
-        name: featureToDisable
-        required: true
-        schema:
-          $ref: "#/components/schemas/MedicalRegistryFeature"
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/enabled-new-features/{featureToEnable}:
-    post:
-      operationId: enableNewFeature
-      parameters:
-      - in: path
-        name: featureToEnable
-        required: true
-        schema:
-          $ref: "#/components/schemas/MedicalRegistryFeature"
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-components:
-  schemas:
-    AbstractFile:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFileReference"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          createdAt:
-            type: string
-            format: date-time
-          createdBy:
-            type: string
-            format: uuid
-          fileName:
-            type: string
-          fileSizeBytes:
-            type: integer
-            format: int32
-          fileType:
-            $ref: "#/components/schemas/FileType"
-          locked:
-            type: boolean
-          modifiedAt:
-            type: string
-            format: date-time
-      - $ref: "#/components/schemas/ApprovalRequestEntity"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    AbstractFileReference:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        deletable:
-          type: boolean
-        deleted:
-          type: boolean
-        fileId:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - deletable
-      - deleted
-      - fileId
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    AddGdprValidationTaskRequest:
-      type: object
-      properties:
-        gdprProcedureId:
-          type: string
-          format: uuid
-        startedAt:
-          type: string
-          format: date-time
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - gdprProcedureId
-      - startedAt
-      - type
-    Address:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    Applicant:
-      type: object
-      properties:
-        address:
-          $ref: "#/components/schemas/ApplicantAddress"
-        dateOfBirth:
-          type: string
-          format: date
-        emailAddresses:
-          type: array
-          items:
-            type: string
-        firstName:
-          type: string
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          maxLength: 40
-          minLength: 1
-        nationality:
-          $ref: "#/components/schemas/CountryCode"
-        phoneNumbers:
-          type: array
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          maxLength: 50
-          minLength: 1
-        title:
-          type: string
-          maxLength: 119
-          minLength: 1
-      required:
-      - address
-      - dateOfBirth
-      - emailAddresses
-      - firstName
-      - gender
-      - lastName
-      - nationality
-      - phoneNumbers
-      - placeOfBirth
-    ApplicantAddress:
-      type: object
-      properties:
-        city:
-          type: string
-          maxLength: 50
-          minLength: 1
-        country:
-          $ref: "#/components/schemas/CountryCode"
-        houseNumber:
-          type: string
-          maxLength: 11
-          minLength: 1
-        postalCode:
-          type: string
-          maxLength: 20
-          minLength: 1
-        street:
-          type: string
-          maxLength: 55
-          minLength: 1
-      required:
-      - city
-      - country
-      - houseNumber
-      - postalCode
-      - street
-    ApprovalRequest:
-      type: object
-      properties:
-        approvalRequestId:
-          type: string
-          format: uuid
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-          format: uuid
-        decidedAt:
-          type: string
-          format: date-time
-        decidedBy:
-          type: string
-          format: uuid
-        decision:
-          $ref: "#/components/schemas/Decision"
-        entity:
-          oneOf:
-          - $ref: "#/components/schemas/ManualProgressEntry"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        operation:
-          $ref: "#/components/schemas/Operation"
-        reason:
-          type: string
-        status:
-          $ref: "#/components/schemas/ApprovalRequestStatus"
-      required:
-      - approvalRequestId
-      - createdAt
-      - createdBy
-      - operation
-      - reason
-      - status
-    ApprovalRequestEntity:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    ApprovalRequestStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    ArchivingDetails:
-      type: object
-      properties:
-        archivingPeriodYears:
-          type: integer
-          format: int32
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-      required:
-      - archivingPeriodYears
-      - archivingRelevance
-    ArchivingRelevance:
-      type: string
-      enum:
-      - DEFAULT
-      - RELEVANT
-      - IRRELEVANT
-    ArchivingRelevanceSettings:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        defaultArchivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-      required:
-      - archivingRelevance
-      - defaultArchivingRelevance
-    AssignTaskRequest:
-      type: object
-      properties:
-        assignee:
-          type: string
-          format: uuid
-        dueAt:
-          type: string
-          format: date-time
-        taskVersion:
-          type: integer
-          format: int64
-      required:
-      - assignee
-      - taskVersion
-    BulkUpdateProceduresArchivingRelevanceRequest:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        procedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 200
-          minItems: 1
-          uniqueItems: true
-      required:
-      - archivingRelevance
-      - procedures
-    BulkUpdateProceduresArchivingRelevanceResponse:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        failedProcedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-        updatedProcedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      required:
-      - archivingRelevance
-      - failedProcedures
-      - updatedProcedures
-    BusinessModule:
-      type: string
-      enum:
-      - INSPECTION
-      - SCHOOL_ENTRY
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY
-      - DENTAL
-      - OFFICIAL_MEDICAL_SERVICE
-    BusinessProcedureInclusionStatus:
-      type: string
-      enum:
-      - INCLUDED
-      - UNDECIDED
-    BusinessProcedureWithInclusionStatus:
-      type: object
-      properties:
-        businessProcedure:
-          $ref: "#/components/schemas/Procedure"
-        inclusionStatus:
-          $ref: "#/components/schemas/BusinessProcedureInclusionStatus"
-      required:
-      - businessProcedure
-      - inclusionStatus
-    CheckFileStateUsageRequest:
-      type: object
-      properties:
-        fileStatesIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-      required:
-      - fileStatesIds
-    CheckFileStateUsageResponse:
-      type: object
-      properties:
-        inUse:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - inUse
-    ConfirmProcedureRequest:
-      type: object
-      properties:
-        practiceReferenceFacility:
-          $ref: "#/components/schemas/PracticeReferenceFacility"
-        professionalReferencePerson:
-          $ref: "#/components/schemas/ProfessionalReferencePerson"
-        target:
-          $ref: "#/components/schemas/ProcedureReference"
-        version:
-          type: integer
-          format: int64
-      required:
-      - version
-    ContactDetails:
-      type: object
-      properties:
-        address:
-          $ref: "#/components/schemas/InboxProcedureAddress"
-        contactType:
-          $ref: "#/components/schemas/ContactType"
-        dateOfBirth:
-          type: string
-          format: date
-        emailAddress:
-          type: string
-        facilityName:
-          type: string
-        firstName:
-          type: string
-        lastName:
-          type: string
-        phoneNumber:
-          type: string
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          $ref: "#/components/schemas/Title"
-      required:
-      - contactType
-      - salutation
-    ContactType:
-      type: string
-      enum:
-      - PRIVATE_PERSON
-      - FACILITY
-    CountryCode:
-      type: string
-      description: "List of country codes in ISO 3166-1 alpha-2 format. With custom\
-        \ extensions for stateless, non-standard countries, and unknown countries."
-      enum:
-      - AD
-      - AE
-      - AF
-      - AG
-      - AI
-      - AL
-      - AM
-      - AO
-      - AQ
-      - AR
-      - AS
-      - AT
-      - AU
-      - AW
-      - AX
-      - AZ
-      - BA
-      - BB
-      - BD
-      - BE
-      - BF
-      - BG
-      - BH
-      - BI
-      - BJ
-      - BL
-      - BM
-      - BN
-      - BO
-      - BQ
-      - BR
-      - BS
-      - BT
-      - BV
-      - BW
-      - BY
-      - BZ
-      - CA
-      - CC
-      - CD
-      - CF
-      - CG
-      - CH
-      - CI
-      - CK
-      - CL
-      - CM
-      - CN
-      - CO
-      - CR
-      - CU
-      - CV
-      - CW
-      - CX
-      - CY
-      - CZ
-      - DE
-      - DJ
-      - DK
-      - DM
-      - DO
-      - DZ
-      - EC
-      - EE
-      - EG
-      - EH
-      - ER
-      - ES
-      - ET
-      - FI
-      - FJ
-      - FK
-      - FM
-      - FO
-      - FR
-      - GA
-      - GB
-      - GD
-      - GE
-      - GF
-      - GG
-      - GH
-      - GI
-      - GL
-      - GM
-      - GN
-      - GP
-      - GQ
-      - GR
-      - GS
-      - GT
-      - GU
-      - GW
-      - GY
-      - HK
-      - HM
-      - HN
-      - HR
-      - HT
-      - HU
-      - ID
-      - IE
-      - IL
-      - IM
-      - IN
-      - IO
-      - IQ
-      - IR
-      - IS
-      - IT
-      - JE
-      - JM
-      - JO
-      - JP
-      - KE
-      - KG
-      - KH
-      - KI
-      - KM
-      - KN
-      - KP
-      - KR
-      - KW
-      - KY
-      - KZ
-      - LA
-      - LB
-      - LC
-      - LI
-      - LK
-      - LR
-      - LS
-      - LT
-      - LU
-      - LV
-      - LY
-      - MA
-      - MC
-      - MD
-      - ME
-      - MF
-      - MG
-      - MH
-      - MK
-      - ML
-      - MM
-      - MN
-      - MO
-      - MP
-      - MQ
-      - MR
-      - MS
-      - MT
-      - MU
-      - MV
-      - MW
-      - MX
-      - MY
-      - MZ
-      - NA
-      - NC
-      - NE
-      - NF
-      - NG
-      - NI
-      - NL
-      - "NO"
-      - NP
-      - NR
-      - NU
-      - NZ
-      - OM
-      - PA
-      - PE
-      - PF
-      - PG
-      - PH
-      - PK
-      - PL
-      - PM
-      - PN
-      - PR
-      - PS
-      - PT
-      - PW
-      - PY
-      - QA
-      - RE
-      - RO
-      - RS
-      - RU
-      - RW
-      - SA
-      - SB
-      - SC
-      - SD
-      - SE
-      - SG
-      - SH
-      - SI
-      - SJ
-      - SK
-      - SL
-      - SM
-      - SN
-      - SO
-      - SR
-      - SS
-      - ST
-      - SV
-      - SX
-      - SY
-      - SZ
-      - TC
-      - TD
-      - TF
-      - TG
-      - TH
-      - TJ
-      - TK
-      - TL
-      - TM
-      - TN
-      - TO
-      - TR
-      - TT
-      - TV
-      - TW
-      - TZ
-      - UA
-      - UG
-      - UM
-      - US
-      - UY
-      - UZ
-      - VA
-      - VC
-      - VE
-      - VG
-      - VI
-      - VN
-      - VU
-      - WF
-      - WS
-      - YE
-      - YT
-      - ZA
-      - ZM
-      - ZW
-      - XK
-      - UNKNOWN
-      - STATELESS
-    CreateApplicant:
-      type: object
-      properties:
-        address:
-          $ref: "#/components/schemas/ApplicantAddress"
-        dateOfBirth:
-          type: string
-          format: date
-        emailAddress:
-          type: string
-        firstName:
-          type: string
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          maxLength: 40
-          minLength: 1
-        nationality:
-          $ref: "#/components/schemas/CountryCode"
-        phoneNumber:
-          type: string
-          maxLength: 23
-          minLength: 1
-        placeOfBirth:
-          type: string
-          maxLength: 50
-          minLength: 1
-        title:
-          type: string
-          maxLength: 119
-          minLength: 1
-      required:
-      - address
-      - dateOfBirth
-      - firstName
-      - gender
-      - lastName
-      - nationality
-      - phoneNumber
-      - placeOfBirth
-    CreateApplicantChangeRequest:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/CreateProcedureRequest"
-      - type: object
-        properties:
-          typeOfApplicantChange:
-            $ref: "#/components/schemas/TypeOfApplicantChange"
-      required:
-      - applicant
-      - consentToPrivacyPolicy
-      - requestForWrittenConfirmation
-      - typeOfApplicantChange
-    CreateApprovalRequestRequest:
-      type: object
-      properties:
-        reason:
-          type: string
-      required:
-      - reason
-    CreateFullChangeRequest:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/CreateProcedureRequest"
-      - type: object
-        properties:
-          employeesEmployed:
-            type: boolean
-          practice:
-            $ref: "#/components/schemas/CreatePractice"
-          professionInformation:
-            $ref: "#/components/schemas/CreateProfessionInformation"
-          typeOfFullChange:
-            $ref: "#/components/schemas/TypeOfFullChange"
-      required:
-      - applicant
-      - consentToPrivacyPolicy
-      - employeesEmployed
-      - professionInformation
-      - requestForWrittenConfirmation
-      - typeOfFullChange
-    CreateInboxProcedureRequest:
-      type: object
-      properties:
-        contactDetails:
-          $ref: "#/components/schemas/ContactDetails"
-        inboxProcedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        inboxProgressEntry:
-          $ref: "#/components/schemas/CreateInboxProgressEntry"
-      required:
-      - contactDetails
-      - inboxProgressEntry
-    CreateInboxProgressEntry:
-      type: object
-      properties:
-        inboxProgressEntryType:
-          $ref: "#/components/schemas/InboxProgressEntryType"
-        messageText:
-          type: string
-        subject:
-          type: string
-      required:
-      - inboxProgressEntryType
-    CreateManualProgressEntryRequest:
-      type: object
-      properties:
-        keyDocumentType:
-          type: string
-        manualProgressEntryType:
-          $ref: "#/components/schemas/ManualProgressEntryType"
-        note:
-          type: string
-      required:
-      - manualProgressEntryType
-    CreatePractice:
-      type: object
-      properties:
-        address:
-          $ref: "#/components/schemas/PracticeAddress"
-        emailAddress:
-          type: string
-        establishmentNumber:
-          type: string
-          pattern: \d+
-        healthInsuranceAuthorization:
-          type: boolean
-        institutionIdentifier:
-          type: string
-          pattern: \d+
-        name:
-          type: string
-          maxLength: 300
-          minLength: 1
-        openingHours:
-          type: string
-        phoneNumber:
-          type: string
-          maxLength: 23
-          minLength: 1
-        website:
-          type: string
-          maxLength: 254
-          minLength: 6
-      required:
-      - address
-      - emailAddress
-      - healthInsuranceAuthorization
-      - name
-      - phoneNumber
-    CreatePracticeChangeRequest:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/CreateProcedureRequest"
-      - type: object
-        properties:
-          employeesEmployed:
-            type: boolean
-          practice:
-            $ref: "#/components/schemas/CreatePractice"
-          typeOfPracticeChange:
-            $ref: "#/components/schemas/TypeOfPracticeChange"
-      required:
-      - applicant
-      - consentToPrivacyPolicy
-      - employeesEmployed
-      - practice
-      - requestForWrittenConfirmation
-      - typeOfPracticeChange
-    CreateProcedureRequest:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        applicant:
-          $ref: "#/components/schemas/CreateApplicant"
-        consentToPrivacyPolicy:
-          type: boolean
-        requestForWrittenConfirmation:
-          type: boolean
-      required:
-      - '@type'
-    CreateProfessionInformation:
-      type: object
-      properties:
-        approbationGrantedOn:
-          type: string
-          format: date
-        approbationIssuingAuthority:
-          type: string
-        employmentStatus:
-          $ref: "#/components/schemas/EmploymentStatus"
-        employmentType:
-          $ref: "#/components/schemas/EmploymentType"
-        fieldOfExpertise:
-          type: string
-        furtherTraining:
-          type: string
-        lifetimeDoctorNumber:
-          type: string
-          pattern: "\\d{9}"
-        professionalTitle:
-          $ref: "#/components/schemas/ProfessionalTitle"
-        qualifications:
-          type: string
-        specialistTitle:
-          type: string
-      required:
-      - approbationGrantedOn
-      - approbationIssuingAuthority
-      - employmentStatus
-      - employmentType
-      - professionalTitle
-    DataOrigin:
-      type: string
-      description: "A list of possible origins of Persons and Facility in the Central\
-        \ Files. EDIT will only be set automatically on changes. EXTERNAL is for entries\
-        \ that come, e.g., from the citizen portal. IMPORT is reserved for automatic\
-        \ imports. MANUAL shall be set for every creation or connection done by an\
-        \ employee."
-      enum:
-      - MANUAL
-      - EXTERNAL
-      - IMPORT
-      - EDIT
-    Decision:
-      type: string
-      enum:
-      - GRANTED
-      - DENIED
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    DeleteDownloadPackagesRequest:
-      type: object
-      properties:
-        downloadIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - downloadIds
-    DeleteProcedureRequest:
-      type: object
-      properties:
-        version:
-          type: integer
-          format: int64
-      required:
-      - version
-    DetailedFacility:
-      type: object
-      properties:
-        facilityFileState:
-          $ref: "#/components/schemas/GetFacilityFileStateResponse"
-        facilityType:
-          $ref: "#/components/schemas/FacilityType"
-      required:
-      - facilityFileState
-      - facilityType
-    DetailedPerson:
-      type: object
-      properties:
-        person:
-          $ref: "#/components/schemas/GetPersonFileStateResponse"
-        personType:
-          $ref: "#/components/schemas/PersonType"
-      required:
-      - person
-      - personType
-    DetailedTask:
-      type: object
-      properties:
-        assignedByName:
-          type: string
-        assigneeName:
-          type: string
-        task:
-          $ref: "#/components/schemas/Task"
-      required:
-      - task
-    DomesticAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          addressAddition:
-            type: string
-            description: A descriptive addition to the address.
-            example: 2.OG links
-            maxLength: 100
-            minLength: 1
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          houseNumber:
-            type: string
-            description: "The house number of the address, including extensions."
-            example: 1a
-            maxLength: 11
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          street:
-            type: string
-            description: "The name of the street of the address, without the house\
-              \ number."
-            example: Beispielweg
-            maxLength: 55
-            minLength: 1
-      description: A usual domestic address.
-      required:
-      - city
-      - country
-      - postalCode
-      - street
-    EmploymentStatus:
-      type: string
-      enum:
-      - SELF_EMPLOYED
-      - FREELANCE
-      - EMPLOYEE
-    EmploymentType:
-      type: string
-      enum:
-      - FULL_TIME
-      - PART_TIME
-    ExportArchivingRelevantProceduresRequest:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-          uniqueItems: true
-      required:
-      - procedures
-    FacilityContactPerson:
-      type: object
-      properties:
-        emailAddress:
-          type: string
-          description: The email addresses of the Contact Person.
-          example: mail1@address.de
-          maxLength: 254
-          minLength: 6
-        firstName:
-          type: string
-          description: The given name(s) of the Contact Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: The last name of the Contact Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        phoneNumber:
-          type: string
-          description: The phone number of the Contact Person.
-          example: "+491234567890"
-          maxLength: 23
-          minLength: 1
-        role:
-          type: string
-          description: The role of the Contact Person in the Facility.
-          example: CEO
-          maxLength: 255
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of the Contact Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - lastName
-    FacilityType:
-      type: string
-      enum:
-      - SCHOOL
-      - INSPECTION
-      - DAYCARE
-      - HOSPITAL
-      - MEDICAL_PRACTICE
-      - REFUGEE_ACCOMMODATION
-      - OTHER
-    FileMetaData:
-      type: object
-      properties:
-        description:
-          type: string
-    FileType:
-      type: string
-      enum:
-      - JPEG
-      - PNG
-      - PDF
-      - EML
-    GdprDownloadPackageInfo:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-      required:
-      - id
-    GdprFacility:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          dataTransmitterPseudonymId:
-            type: string
-            description: The 'DatenübermittlerPseudonymId' of the MUK user
-            example: du-986b2b54ab89cf4ed674ad8c3126b966b54d4872
-          emailAddress:
-            type: string
-            description: The email addresses of the Facility.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          name:
-            type: string
-            description: The name of the Facility.
-            example: 123 Example Facility
-            maxLength: 300
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Facility.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 1
-      required:
-      - address
-      - name
-    GdprIdentificationData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    GdprPerson:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          bpk2:
-            type: string
-            description: The bpk2 of the BundId user
-            example: VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0
-          dateOfBirth:
-            type: string
-            format: date
-            description: The date of birth of the Person.
-            example: 2000-01-01
-          emailAddress:
-            type: string
-            description: The email addresses of the Person.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          firstName:
-            type: string
-            description: The given name(s) of the Person.
-            example: John
-            maxLength: 80
-            minLength: 1
-          lastName:
-            type: string
-            description: The last name of the Person.
-            example: Doe
-            maxLength: 120
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Person.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 0
-          salutation:
-            $ref: "#/components/schemas/Salutation"
-          title:
-            type: string
-            description: The academic title of the Person.
-            example: Prof. Dr.
-            maxLength: 119
-            minLength: 1
-      required:
-      - address
-      - dateOfBirth
-      - firstName
-      - lastName
-    GdprProcedureType:
-      type: string
-      description: A list of types of GDPR procedures.
-      enum:
-      - RIGHT_OF_ACCESS
-      - RIGHT_TO_ERASURE
-    GdprValidationTask:
-      type: object
-      properties:
-        dueDate:
-          type: string
-          format: date
-        gdprProcedureId:
-          type: string
-          format: uuid
-        identificationData:
-          oneOf:
-          - $ref: "#/components/schemas/GdprFacility"
-          - $ref: "#/components/schemas/GdprPerson"
-        status:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - dueDate
-      - gdprProcedureId
-      - identificationData
-      - status
-      - type
-    GdprValidationTaskSortKey:
-      type: string
-      enum:
-      - CREATED_AT
-    GdprValidationTaskStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    Gender:
-      type: string
-      description: The list of genders as specified in the German Personenstandsgesetz.
-      enum:
-      - NOT_SPECIFIED
-      - DIVERSE
-      - FEMALE
-      - MALE
-    GenericFileReference:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFileReference"
-      - type: object
-        properties:
-          '@type':
-            type: string
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - deletable
-      - deleted
-      - fileId
-    GetAllValidationTasksResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/GdprValidationTask"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          minimum: 0
-      required:
-      - elements
-      - totalNumberOfElements
-    GetArchivableProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetArchivableProceduresSortBy:
-      type: string
-      default: CLOSED_AT
-      enum:
-      - CLOSED_AT
-      - PROCEDURE_TYPE
-    GetArchivableProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetArchivingConfigurationResponse:
-      type: object
-      properties:
-        archivingDetails:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/ArchivingDetails"
-        gracePeriodMonths:
-          type: integer
-          format: int32
-      required:
-      - archivingDetails
-      - gracePeriodMonths
-    GetDetailedProcedureResponse:
-      type: object
-      properties:
-        facilities:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedFacility"
-        persons:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedPerson"
-        procedure:
-          $ref: "#/components/schemas/Procedure"
-        tasks:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedTask"
-      required:
-      - facilities
-      - persons
-      - procedure
-      - tasks
-    GetFacilityFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        id:
-          type: string
-          format: uuid
-          description: Id of the Facility.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referenceFacility
-            it is connected to.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-      required:
-      - contactPersons
-      - dataOrigin
-      - emailAddresses
-      - id
-      - name
-      - phoneNumbers
-      - referenceVersion
-    GetGdprDownloadPackagesInfoResponse:
-      type: object
-      properties:
-        downloadPackages:
-          type: array
-          items:
-            $ref: "#/components/schemas/GdprDownloadPackageInfo"
-      required:
-      - downloadPackages
-    GetGdprNotificationBannerResponse:
-      type: object
-      properties:
-        earliestDueDate:
-          type: string
-          format: date
-        openValidationTasksCount:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - openValidationTasksCount
-    GetGdprValidationTaskDetailsResponse:
-      type: object
-      properties:
-        proceduresWithStatus:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessProcedureWithInclusionStatus"
-        validationTask:
-          $ref: "#/components/schemas/GdprValidationTask"
-      required:
-      - proceduresWithStatus
-      - validationTask
-    GetGdprValidationTaskResponse:
-      type: object
-      properties:
-        status:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-      required:
-      - status
-    GetInboxProcedureResponse:
-      type: object
-      properties:
-        inboxProcedure:
-          $ref: "#/components/schemas/InboxProcedure"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - inboxProcedure
-      - resolvedUsers
-    GetInboxProceduresResponse:
-      type: object
-      properties:
-        inboxProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/InboxProcedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - inboxProcedures
-      - totalElements
-      - totalPages
-    GetInboxProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - CREATED_AT
-    GetInboxProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetManualProgressEntryHistoryResponse:
-      type: object
-      properties:
-        manualProgressEntryHistory:
-          type: array
-          items:
-            $ref: "#/components/schemas/ManualProgressEntryHistory"
-    GetMedicalRegistryEntries:
-      type: object
-      properties:
-        medicalRegistryEntries:
-          type: array
-          items:
-            $ref: "#/components/schemas/MedicalRegistryEntry"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - medicalRegistryEntries
-      - totalElements
-      - totalPages
-    GetMedicalRegistryFeatureTogglesResponse:
-      type: object
-      properties:
-        disabledOldFeatures:
-          type: array
-          items:
-            $ref: "#/components/schemas/MedicalRegistryFeature"
-          uniqueItems: true
-        enabledNewFeatures:
-          type: array
-          items:
-            $ref: "#/components/schemas/MedicalRegistryFeature"
-          uniqueItems: true
-      required:
-      - disabledOldFeatures
-      - enabledNewFeatures
-    GetMetaDataHistoryResponse:
-      type: object
-      properties:
-        metaDataHistory:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ImageMetaDataHistory"
-            - $ref: "#/components/schemas/MailMetaDataHistory"
-            - $ref: "#/components/schemas/PdfMetaDataHistory"
-    GetPersonFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        dateOfBirth:
-          type: string
-          format: date
-          description: The date of birth of the Person.
-          example: 2000-01-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Person.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: The given name(s) of the Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        id:
-          type: string
-          format: uuid
-          description: Id of the Person.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        lastName:
-          type: string
-          description: The last name of the Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          description: The last name at birth of the Person.
-          example: Smith
-          maxLength: 40
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referencePerson
-            it is connected to. Set to 'null' if unchecked.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Person.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          description: The place of birth (without country) of the Person.
-          example: Berlin
-          maxLength: 50
-          minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - dataOrigin
-      - dateOfBirth
-      - emailAddresses
-      - firstName
-      - gender
-      - id
-      - lastName
-      - phoneNumbers
-      - referenceVersion
-      - salutation
-    GetProcedureApprovalRequestsResponse:
-      type: object
-      properties:
-        approvalRequests:
-          type: array
-          items:
-            $ref: "#/components/schemas/ApprovalRequest"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - approvalRequests
-      - resolvedUsers
-    GetProcedureConfirmedResponse:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GetProcedureResponse"
-      - type: object
-        properties:
-          applicant:
-            $ref: "#/components/schemas/Applicant"
-          consentToPrivacyPolicy:
-            type: boolean
-          employeesEmployed:
-            type: boolean
-          id:
-            type: string
-            format: uuid
-          practices:
-            type: array
-            items:
-              $ref: "#/components/schemas/Practice"
-          procedureType:
-            $ref: "#/components/schemas/MedicalRegistryEntryProcedureType"
-          professionInformation:
-            $ref: "#/components/schemas/ProfessionInformation"
-          requestForWrittenConfirmation:
-            type: boolean
-          status:
-            $ref: "#/components/schemas/ProcedureStatus"
-          version:
-            type: integer
-            format: int64
-      required:
-      - applicant
-      - consentToPrivacyPolicy
-      - employeesEmployed
-      - id
-      - practices
-      - procedureType
-      - professionInformation
-      - requestForWrittenConfirmation
-      - status
-      - version
-    GetProcedureDraftResponse:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GetProcedureResponse"
-      - type: object
-        properties:
-          applicant:
-            $ref: "#/components/schemas/Applicant"
-          consentToPrivacyPolicy:
-            type: boolean
-          employeesEmployed:
-            type: boolean
-          id:
-            type: string
-            format: uuid
-          practices:
-            type: array
-            items:
-              $ref: "#/components/schemas/Practice"
-          procedureType:
-            $ref: "#/components/schemas/MedicalRegistryEntryProcedureType"
-          professionInformation:
-            $ref: "#/components/schemas/ProfessionInformation"
-          requestForWrittenConfirmation:
-            type: boolean
-          status:
-            $ref: "#/components/schemas/ProcedureStatus"
-          typeOfChange:
-            $ref: "#/components/schemas/TypeOfChange"
-          version:
-            type: integer
-            format: int64
-      required:
-      - applicant
-      - consentToPrivacyPolicy
-      - id
-      - practices
-      - procedureType
-      - requestForWrittenConfirmation
-      - status
-      - typeOfChange
-      - version
-    GetProcedureFileDetailsResponse:
-      type: object
-      properties:
-        fileDetails:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProgressEntryReferenceFilePair"
-        procedureId:
-          type: string
-          format: uuid
-      required:
-      - fileDetails
-      - procedureId
-    GetProcedureMetricsResponse:
-      type: object
-      properties:
-        procedureMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureMetric"
-      required:
-      - procedureMetrics
-    GetProcedureResponse:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    GetProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - MODIFIED_AT
-      - CREATED_AT
-    GetProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetProgressEntriesResponse:
-      type: object
-      properties:
-        progressEntries:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ManualProgressEntry"
-            - $ref: "#/components/schemas/ProcessedInboxProgressEntry"
-            - $ref: "#/components/schemas/SystemProgressEntry"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - progressEntries
-      - totalElements
-      - totalPages
-    GetProgressEntryResponse:
-      type: object
-      properties:
-        progressEntry:
-          oneOf:
-          - $ref: "#/components/schemas/ManualProgressEntry"
-          - $ref: "#/components/schemas/ProcessedInboxProgressEntry"
-          - $ref: "#/components/schemas/SystemProgressEntry"
-        relatedKeyDocumentProgressEntries:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ManualProgressEntry"
-            - $ref: "#/components/schemas/SystemProgressEntry"
-      required:
-      - progressEntry
-      - relatedKeyDocumentProgressEntries
-    GetRecentProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-      required:
-      - procedures
-    GetReferencePersonResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        dateOfBirth:
-          type: string
-          format: date
-          description: The date of birth of the Person.
-          example: 2000-01-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Person.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: The given name(s) of the Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        id:
-          type: string
-          format: uuid
-          description: Id of the Person.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        lastName:
-          type: string
-          description: The last name of the Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          description: The last name at birth of the Person.
-          example: Smith
-          maxLength: 40
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Person.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          description: The place of birth (without country) of the Person.
-          example: Berlin
-          maxLength: 50
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-        version:
-          type: integer
-          format: int64
-          description: "Version of the entity. Each time the entity is changed, it\
-            \ is incremented by one."
-      required:
-      - dataOrigin
-      - dateOfBirth
-      - emailAddresses
-      - firstName
-      - gender
-      - id
-      - lastName
-      - phoneNumbers
-      - salutation
-      - version
-    GetRelevantArchivableProceduresResponse:
-      type: object
-      properties:
-        fileSizeBytes:
-          type: integer
-          format: int32
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - fileSizeBytes
-      - procedures
-      - totalElements
-      - totalPages
-    GetRelevantArchivableProceduresSortBy:
-      type: string
-      default: CLOSED_AT
-      enum:
-      - CLOSED_AT
-      - EXPORTED_AT
-    GetRelevantArchivableProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetTaskByUserResponse:
-      type: object
-      properties:
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-        tasksByUser:
-          type: object
-          additionalProperties:
-            type: array
-            items:
-              $ref: "#/components/schemas/Task"
-      required:
-      - resolvedUsers
-      - tasksByUser
-    GetTaskMetricsResponse:
-      type: object
-      properties:
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedProcedureCount:
-          type: integer
-          format: int64
-        fastestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        slowestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        taskMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskMetric"
-      required:
-      - businessModule
-      - closedProcedureCount
-      - fastestProcedures
-      - procedureType
-      - slowestProcedures
-      - taskMetrics
-    GetTasksSortBy:
-      type: string
-      enum:
-      - PRIORITY
-      - CREATED_AT
-      - MODIFIED_AT
-    GetTasksSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    Image:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/ImageMetaData"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    ImageMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          createdDate:
-            type: string
-            format: date-time
-    ImageMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          imageMetaData:
-            $ref: "#/components/schemas/ImageMetaData"
-      required:
-      - changedAt
-    ImportStatistics:
-      type: object
-      properties:
-        created:
-          type: integer
-          format: int32
-          minimum: 0
-        duplicated:
-          type: integer
-          format: int32
-          minimum: 0
-        failed:
-          type: integer
-          format: int32
-          minimum: 0
-        mergeFailed:
-          type: integer
-          format: int32
-          minimum: 0
-        merged:
-          type: integer
-          format: int32
-          minimum: 0
-        total:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - created
-      - duplicated
-      - failed
-      - mergeFailed
-      - merged
-      - total
-    InboxProcedure:
-      type: object
-      properties:
-        closedAt:
-          type: string
-          format: date-time
-        contactDetails:
-          $ref: "#/components/schemas/ContactDetails"
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-          format: uuid
-        inboxProcedureId:
-          type: string
-          format: uuid
-        inboxProcedureStatus:
-          $ref: "#/components/schemas/InboxProcedureStatus"
-        inboxProcedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        inboxProgressEntry:
-          $ref: "#/components/schemas/InboxProgressEntry"
-      required:
-      - contactDetails
-      - createdAt
-      - createdBy
-      - inboxProcedureId
-      - inboxProcedureStatus
-      - inboxProgressEntry
-    InboxProcedureAddress:
-      type: object
-      properties:
-        addressAddition:
-          type: string
-        city:
-          type: string
-        country:
-          type: string
-        houseNumber:
-          type: string
-        postalCode:
-          type: string
-        postboxNumber:
-          type: integer
-          format: int32
-        street:
-          type: string
-    InboxProcedureStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    InboxProgressEntry:
-      type: object
-      properties:
-        fileReference:
-          oneOf:
-          - $ref: "#/components/schemas/GenericFileReference"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        inboxProgressEntryId:
-          type: string
-          format: uuid
-        inboxProgressEntryType:
-          $ref: "#/components/schemas/InboxProgressEntryType"
-        messageText:
-          type: string
-        subject:
-          type: string
-      required:
-      - inboxProgressEntryId
-      - inboxProgressEntryType
-    InboxProgressEntryType:
-      type: string
-      enum:
-      - LETTER
-      - PHONE_CALL
-      - EMAIL
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    KeyDocumentAwareProgressEntry:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        keyDocumentType:
-          type: string
-        keyDocumentVersion:
-          type: integer
-          format: int32
-      required:
-      - '@type'
-    Mail:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/MailMetaData"
-          removedInvalidAttachments:
-            type: integer
-            format: int32
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-      - removedInvalidAttachments
-    MailMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          mailFrom:
-            type: string
-          mailTo:
-            type: string
-          messageText:
-            type: string
-          sentDate:
-            type: string
-            format: date-time
-          subject:
-            type: string
-      required:
-      - mailFrom
-      - mailTo
-      - messageText
-      - sentDate
-      - subject
-    MailMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          mailMetaData:
-            $ref: "#/components/schemas/MailMetaData"
-      required:
-      - changedAt
-    ManualProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          createdByUserFirstName:
-            type: string
-          createdByUserLastName:
-            type: string
-          keyDocumentType:
-            type: string
-          keyDocumentVersion:
-            type: integer
-            format: int32
-          locked:
-            type: boolean
-          manualProgressEntryType:
-            $ref: "#/components/schemas/ManualProgressEntryType"
-          note:
-            type: string
-      - $ref: "#/components/schemas/ApprovalRequestEntity"
-      - $ref: "#/components/schemas/KeyDocumentAwareProgressEntry"
-      required:
-      - createdAt
-      - createdBy
-      - locked
-      - manualProgressEntryType
-      - modifiedAt
-      - progressEntryId
-    ManualProgressEntryHistory:
-      type: object
-      properties:
-        changedAt:
-          type: string
-          format: date-time
-        manualProgressEntry:
-          $ref: "#/components/schemas/ManualProgressEntry"
-      required:
-      - changedAt
-    ManualProgressEntryType:
-      type: string
-      enum:
-      - LETTER
-      - PHONE_CALL
-      - NOTE
-      - EMAIL
-      - IMAGE
-      - DOCUMENT
-    MedicalRegistryEntry:
-      type: object
-      properties:
-        address:
-          $ref: "#/components/schemas/ApplicantAddress"
-        certificateRequested:
-          type: boolean
-        createdAt:
-          type: string
-          format: date-time
-        dateOfBirth:
-          type: string
-          format: date
-        firstName:
-          type: string
-        id:
-          type: string
-          format: uuid
-        lastName:
-          type: string
-        professionalTitle:
-          $ref: "#/components/schemas/ProfessionalTitle"
-        status:
-          $ref: "#/components/schemas/ProcedureStatus"
-        type:
-          $ref: "#/components/schemas/ProcedureType"
-      required:
-      - address
-      - certificateRequested
-      - createdAt
-      - dateOfBirth
-      - firstName
-      - id
-      - lastName
-      - status
-      - type
-    MedicalRegistryEntryProcedureType:
-      type: string
-      enum:
-      - MEDICAL_REGISTRY_ENTRY
-      - MEDICAL_REGISTRY_CITIZEN_DRAFT
-      - MEDICAL_REGISTRY_EMPLOYEE_DRAFT
-    MedicalRegistryEntrySearchResult:
-      type: object
-      properties:
-        created:
-          type: string
-          format: date-time
-        id:
-          type: string
-          format: uuid
-        modifiedAt:
-          type: string
-          format: date-time
-        practiceNames:
-          type: array
-          items:
-            type: string
-        status:
-          $ref: "#/components/schemas/ProcedureStatus"
-        version:
-          type: integer
-          format: int64
-      required:
-      - created
-      - id
-      - modifiedAt
-      - practiceNames
-      - status
-      - version
-    MedicalRegistryFeature:
-      type: string
-      enum:
-      - CITIZEN_PORTAL_ENABLED
-    MetaData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        description:
-          type: string
-      required:
-      - '@type'
-    MetaDataHistory:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        changedAt:
-          type: string
-          format: date-time
-      required:
-      - '@type'
-      - changedAt
-    MultiValueMapStringObject:
-      type: object
-      additionalProperties:
-        type: array
-        items:
-          type: object
-      properties:
-        all:
-          type: object
-          additionalProperties:
-            type: object
-          writeOnly: true
-        empty:
-          type: boolean
-    Operation:
-      type: string
-      enum:
-      - DELETE
-    PatchManualProgressEntryRequest:
-      type: object
-      properties:
-        manualProgressEntryType:
-          $ref: "#/components/schemas/ManualProgressEntryType"
-        note:
-          type: string
-          nullable: true
-    Pdf:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/PdfMetaData"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    PdfMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          createdDate:
-            type: string
-            format: date-time
-    PdfMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          pdfMetaData:
-            $ref: "#/components/schemas/PdfMetaData"
-      required:
-      - changedAt
-    PersonType:
-      type: string
-      enum:
-      - PATIENT
-      - PARENT
-      - PROFESSIONAL
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    PostboxAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          postbox:
-            type: string
-            description: The number (or name) of the postbox.
-            example: "123"
-            maxLength: 21
-            minLength: 1
-      description: An address which is a postbox.
-      required:
-      - city
-      - country
-      - postalCode
-      - postbox
-    Practice:
-      type: object
-      properties:
-        address:
-          $ref: "#/components/schemas/PracticeAddress"
-        emailAddresses:
-          type: array
-          items:
-            type: string
-        establishmentNumber:
-          type: string
-          pattern: \d+
-        healthInsuranceAuthorization:
-          type: boolean
-        institutionIdentifier:
-          type: string
-          pattern: \d+
-        name:
-          type: string
-          maxLength: 300
-          minLength: 1
-        openingHours:
-          type: string
-        phoneNumbers:
-          type: array
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        website:
-          type: string
-          maxLength: 254
-          minLength: 6
-      required:
-      - address
-      - emailAddresses
-      - healthInsuranceAuthorization
-      - name
-      - phoneNumbers
-    PracticeAddress:
-      type: object
-      properties:
-        city:
-          type: string
-          maxLength: 50
-          minLength: 1
-        houseNumber:
-          type: string
-          maxLength: 11
-          minLength: 1
-        postalCode:
-          type: string
-          maxLength: 20
-          minLength: 1
-        street:
-          type: string
-          maxLength: 55
-          minLength: 1
-      required:
-      - city
-      - houseNumber
-      - postalCode
-      - street
-    PracticeReferenceFacility:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 0
-        version:
-          type: integer
-          format: int64
-      required:
-      - id
-      - name
-      - version
-    Procedure:
-      type: object
-      properties:
-        archivingRelevanceSettings:
-          $ref: "#/components/schemas/ArchivingRelevanceSettings"
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedAt:
-          type: string
-          format: date-time
-        createdAt:
-          type: string
-          format: date-time
-        exportedAt:
-          type: string
-          format: date-time
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        procedureStatus:
-          $ref: "#/components/schemas/ProcedureStatus"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-          pattern: "[a-zA-Z0-9.].+"
-      required:
-      - archivingRelevanceSettings
-      - businessModule
-      - createdAt
-      - modifiedAt
-      - procedureId
-      - procedureStatus
-      - procedureType
-      - summary
-    ProcedureMetric:
-      type: object
-      properties:
-        abortedCount:
-          type: integer
-          format: int64
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedCount:
-          type: integer
-          format: int64
-        inProgressCount:
-          type: integer
-          format: int64
-        openOrDraftCount:
-          type: integer
-          format: int64
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        totalCount:
-          type: integer
-          format: int64
-      required:
-      - abortedCount
-      - businessModule
-      - closedCount
-      - inProgressCount
-      - openOrDraftCount
-      - procedureType
-      - totalCount
-    ProcedureReference:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        version:
-          type: integer
-          format: int64
-      required:
-      - id
-      - version
-    ProcedureStatus:
-      type: string
-      enum:
-      - DRAFT
-      - OPEN
-      - IN_PROGRESS
-      - CLOSED
-      - ABORTED
-    ProcedureType:
-      type: string
-      enum:
-      - REGULAR_EXAMINATION
-      - CAN_CHILD
-      - ENTRY_LEVEL
-      - DRAFT_CITIZEN_OFFICE_IMPORT
-      - DRAFT_SCHOOL_IMPORT
-      - INSPECTION
-      - TM_VACCINATION_CONSULTATION
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY_ENTRY
-      - MEDICAL_REGISTRY_CITIZEN_DRAFT
-      - MEDICAL_REGISTRY_EMPLOYEE_DRAFT
-      - DENTAL_CHILD
-      - OFFICIAL_MEDICAL_SERVICE
-    ProcedureWithDuration:
-      type: object
-      properties:
-        createdAt:
-          type: string
-          format: date-time
-        duration:
-          type: string
-          description: A duration in ISO 8601
-        id:
-          type: string
-          format: uuid
-      required:
-      - createdAt
-      - id
-    ProcessedInboxProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          createdByUserFirstName:
-            type: string
-          createdByUserLastName:
-            type: string
-          inboxProcedureId:
-            type: string
-            format: uuid
-          inboxProgressEntryType:
-            $ref: "#/components/schemas/InboxProgressEntryType"
-          messageText:
-            type: string
-          subject:
-            type: string
-      required:
-      - createdAt
-      - createdBy
-      - inboxProcedureId
-      - inboxProgressEntryType
-      - modifiedAt
-      - progressEntryId
-    ProfessionInformation:
-      type: object
-      properties:
-        approbationGrantedOn:
-          type: string
-          format: date
-        approbationIssuingAuthority:
-          type: string
-        employmentStatus:
-          $ref: "#/components/schemas/EmploymentStatus"
-        employmentType:
-          $ref: "#/components/schemas/EmploymentType"
-        fieldOfExpertise:
-          type: string
-        furtherTraining:
-          type: string
-        lifetimeDoctorNumber:
-          type: string
-          pattern: "\\d{9}"
-        professionalTitle:
-          $ref: "#/components/schemas/ProfessionalTitle"
-        qualifications:
-          type: string
-        specialistTitle:
-          type: string
-    ProfessionalReferencePerson:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dateOfBirth:
-          type: string
-          format: date
-          description: The date of birth of the Person.
-          example: 2000-01-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Person.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: The given name(s) of the Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        id:
-          type: string
-          format: uuid
-        lastName:
-          type: string
-          description: The last name of the Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          description: The last name at birth of the Person.
-          example: Smith
-          maxLength: 40
-          minLength: 1
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Person.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          description: The place of birth (without country) of the Person.
-          example: Berlin
-          maxLength: 50
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-        version:
-          type: integer
-          format: int64
-      required:
-      - dateOfBirth
-      - firstName
-      - id
-      - lastName
-      - version
-    ProfessionalTitle:
-      type: string
-      enum:
-      - DOCTOR
-      - DENTIST
-      - PSYCHOLOGICAL_PSYCHOTHERAPIST
-      - NURSING_ASSISTANT
-      - GERIATRIC_NURSE
-      - DIETICIAN
-      - DISINFECTOR
-      - OCCUPATIONAL_THERAPIST
-      - HEALTH_SUPERVISOR
-      - HEALTHCARE_AND_PEDIATRIC_NURSE
-      - HEALTHCARE_AND_NURSING_ASSISTANT
-      - HEALTHCARE_AND_NURSING_ASSISTANTS_HELPER
-      - MIDWIVE_MATERNITY_NURSE
-      - ALTERNATIVE_PRACTITIONER
-      - NON_MEDICAL_PRACTITIONER_FOR_CHIROPRACTIC
-      - ALTERNATIVE_PRACTITIONER_FOR_SPEECH_THERAPY
-      - NON_MEDICAL_PRACTITIONER_FOR_PHYSIOTHERAPY
-      - NON_MEDICAL_PRACTITIONER_FOR_PSYCHOTHERAPY
-      - CHILD_AND_YOUTH_PSYCHOTHERAPIST
-      - SPEECH_THERAPIST
-      - MASSEUR_AND_MEDICAL_BATH_ATTENDANT
-      - MEDICAL_DOCUMENTALIST
-      - MEDICAL_TECHNICAL_LABORATORY_ASSISTANT
-      - MEDICAL_TECHNICAL_RADIOLOGY_ASSISTANT
-      - MEDICAL_TECHNICAL_ASSISTANT_FOR_FUNCTIONAL_DIAGNOSTICS
-      - EMERGENCY_PARAMEDIC
-      - ORTHOPTIST
-      - CARE_ASSISTANT
-      - NURSING_SERVICE
-      - NURSING_SERVICE_MANAGER
-      - PHARMACEUTICAL_TECHNICAL_ASSISTANT
-      - PHYSIOTHERAPIST
-      - PODIATRIST
-      - RADIOLOGY_ASSISTANT
-      - SPORTS_THERAPIST
-      - PHARMACIST
-      - VETERINARIAN
-    ProgressEntry:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        createdAt:
-          type: string
-          format: date-time
-        fileReference:
-          oneOf:
-          - $ref: "#/components/schemas/GenericFileReference"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        modifiedAt:
-          type: string
-          format: date-time
-        progressEntryId:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - createdAt
-      - modifiedAt
-      - progressEntryId
-    ProgressEntryClass:
-      type: string
-      enum:
-      - MANUAL_PROGRESS_ENTRY
-      - SYSTEM_PROGRESS_ENTRY
-      - PROCESSED_INBOX_PROGRESS_ENTRY
-    ProgressEntryReferenceFilePair:
-      type: object
-      properties:
-        file:
-          oneOf:
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        progressEntryId:
-          type: string
-          format: uuid
-      required:
-      - file
-      - progressEntryId
-    ProgressEntrySortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - CREATED_AT
-      - MODIFIED_AT
-    ProgressEntrySortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    Salutation:
-      type: string
-      enum:
-      - NOT_SPECIFIED
-      - NEUTRAL
-      - FEMALE
-      - MALE
-    SearchMedicalRegistryByPersonResponse:
-      type: object
-      properties:
-        procedures:
-          type: object
-          additionalProperties:
-            type: array
-            items:
-              $ref: "#/components/schemas/MedicalRegistryEntrySearchResult"
-        resolvedPersons:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/GetReferencePersonResponse"
-      required:
-      - procedures
-      - resolvedPersons
-    SelfAssignTaskRequest:
-      type: object
-      properties:
-        dueAt:
-          type: string
-          format: date-time
-        taskVersion:
-          type: integer
-          format: int64
-      required:
-      - taskVersion
-    SortDirection:
-      type: string
-      enum:
-      - ASC
-      - DESC
-    SystemProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          changeDescription:
-            type: string
-          keyDocumentType:
-            type: string
-          keyDocumentVersion:
-            type: integer
-            format: int32
-          previousFileStateId:
-            type: string
-            format: uuid
-          systemProgressEntryType:
-            type: string
-          triggerType:
-            $ref: "#/components/schemas/TriggerType"
-          triggeredBy:
-            type: string
-            format: uuid
-          triggeredByUserFirstName:
-            type: string
-          triggeredByUserLastName:
-            type: string
-      - $ref: "#/components/schemas/KeyDocumentAwareProgressEntry"
-      required:
-      - createdAt
-      - modifiedAt
-      - progressEntryId
-      - systemProgressEntryType
-      - triggerType
-    Task:
-      type: object
-      properties:
-        assignedById:
-          type: string
-          format: uuid
-        assigneeId:
-          type: string
-          format: uuid
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        createdAt:
-          type: string
-          format: date-time
-        dueAt:
-          type: string
-          format: date-time
-        isOverdue:
-          type: boolean
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-        taskId:
-          type: string
-          format: uuid
-        taskStatus:
-          $ref: "#/components/schemas/TaskStatus"
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        version:
-          type: integer
-          format: int64
-      required:
-      - businessModule
-      - createdAt
-      - isOverdue
-      - modifiedAt
-      - procedureId
-      - summary
-      - taskId
-      - taskStatus
-      - taskType
-      - version
-    TaskMetric:
-      type: object
-      properties:
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        moreThanTwoOccurrencesCount:
-          type: integer
-          format: int32
-        noOccurrencesCount:
-          type: integer
-          format: int32
-        oneOccurrenceCount:
-          type: integer
-          format: int32
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        twoOccurrencesCount:
-          type: integer
-          format: int32
-      required:
-      - moreThanTwoOccurrencesCount
-      - noOccurrencesCount
-      - oneOccurrenceCount
-      - taskType
-      - twoOccurrencesCount
-    TaskResponse:
-      type: object
-      properties:
-        count:
-          type: integer
-          format: int64
-          description: total number of tasks for this query
-        tasks:
-          type: array
-          items:
-            $ref: "#/components/schemas/Task"
-          maxItems: 200
-          minItems: 0
-      required:
-      - count
-      - tasks
-    TaskStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    TaskType:
-      type: string
-      enum:
-      - BOOK_APPOINTMENT
-      - PERFORM_SCHOOL_ENTRY_EXAMINATION
-      - INSPECTION_PLANNING
-      - INSPECTION_EXECUTION
-      - INSPECTION_REPORT
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - OFFICIAL_MEDICAL_SERVICE
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
-    Title:
-      type: string
-      enum:
-      - DR
-      - PROF
-      - PROF_DR
-    TriggerType:
-      type: string
-      enum:
-      - SYSTEM_AUTOMATIC
-      - EMPLOYEE
-      - CITIZEN
-    TypeOfApplicantChange:
-      type: string
-      enum:
-      - DEREGISTRATION
-      - RELOCATION
-      - CHANGE_OF_NAME
-    TypeOfChange:
-      type: string
-      enum:
-      - NEW_REGISTRATION
-      - SECOND_PRACTICE
-      - RE_REGISTRATION
-      - CHANGE_OF_REGISTRATION
-      - CHANGE_OF_NAME
-      - RELOCATION
-      - DEREGISTRATION
-      - OTHER
-    TypeOfFullChange:
-      type: string
-      enum:
-      - NEW_REGISTRATION
-      - RE_REGISTRATION
-      - OTHER
-    TypeOfPracticeChange:
-      type: string
-      enum:
-      - SECOND_PRACTICE
-      - CHANGE_OF_REGISTRATION
-    User:
-      type: object
-      properties:
-        email:
-          type: string
-          description: The email address of a user.
-          example: example@mail.de
-        enabled:
-          type: boolean
-          description: "True, if the user can login"
-          example: false
-        externalChatUsername:
-          type: string
-          description: The chat username of the gematik TI-Messenger (matrix chat).
-          example: '@username:server'
-        firstName:
-          type: string
-          description: The given name(s) of a user.
-          example: John
-        lastName:
-          type: string
-          description: The last name of a user.
-          example: Doe
-        phoneNumber:
-          type: string
-          description: The phone number of a user.
-          example: "+491234567890"
-        userId:
-          type: string
-          format: uuid
-          description: The Id of the user.
-          example: fe9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        username:
-          type: string
-          description: The username which is displayed in the application and can
-            be used for the login.
-          example: testuser
-      required:
-      - enabled
-      - firstName
-      - lastName
-      - userId
-      - username
diff --git a/backend/official-medical-service/openApi.json b/backend/official-medical-service/openApi.json
new file mode 100644
index 000000000..1e9662041
--- /dev/null
+++ b/backend/official-medical-service/openApi.json
@@ -0,0 +1,6596 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is the api for the official medical service module",
+    "title" : "Official Medical Service Api",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8099"
+  } ],
+  "paths" : {
+    "/appointment-blocks/appointment-block-groups" : {
+      "get" : {
+        "operationId" : "getAppointmentBlockGroups",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/AppointmentBlockSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAppointmentBlockGroupsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all appointment block groups.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-blocks/daily-appointment-block-groups" : {
+      "post" : {
+        "operationId" : "createDailyAppointmentBlocksForGroup",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CreateAppointmentBlockGroupResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create appointment group with blocks for week days.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-blocks/daily-appointment-block-groups/validate" : {
+      "post" : {
+        "operationId" : "validateDailyAppointmentBlocksForGroup",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ValidateAppointmentBlockGroupResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create appointment group with blocks for week days.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-blocks/free-appointments" : {
+      "get" : {
+        "operationId" : "getFreeAppointments",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "appointmentType",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "earliestDate",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "physicianId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFreeAppointmentsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get free appointments for an appointment type.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-types" : {
+      "get" : {
+        "operationId" : "getAppointmentTypes",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAppointmentTypesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets all Appointment Types",
+        "tags" : [ "AppointmentType" ]
+      }
+    },
+    "/appointment-types/{id}" : {
+      "get" : {
+        "operationId" : "getOneAppointmentType",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AppointmentTypeConfig"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets one Appointment Type by ID",
+        "tags" : [ "AppointmentType" ]
+      },
+      "put" : {
+        "operationId" : "updateAppointmentType",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateAppointmentTypeRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AppointmentTypeConfig"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modifies an existing Appointment Type",
+        "tags" : [ "AppointmentType" ]
+      }
+    },
+    "/approval-requests/{approvalRequestId}" : {
+      "get" : {
+        "operationId" : "getApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/approval-requests/{approvalRequestId}/decision" : {
+      "put" : {
+        "operationId" : "decideApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/Decision"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/archiving/config" : {
+      "get" : {
+        "operationId" : "getArchivingConfiguration",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetArchivingConfigurationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get archiving configuration",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/procedures" : {
+      "get" : {
+        "operationId" : "getArchivableProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `procedureType` is submitted, only procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `closedAtDay` is set, only procedures are returned which were closed at that date\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "closedAtDay",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `defaultArchivingRelevance` is submitted, only procedures are returned which have one of the submitted default archiving relevances.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "defaultArchivingRelevance",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ArchivingRelevance"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CLOSED_AT`: Sorting by closedAt attribute\n- `PROCEDURE_TYPE`: Sorting by procedureType attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetArchivableProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetArchivableProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetArchivableProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get archivable procedures",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/procedures/bulk-update-archiving-relevance" : {
+      "post" : {
+        "operationId" : "bulkUpdateProceduresArchivingRelevance",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/BulkUpdateProceduresArchivingRelevanceRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/BulkUpdateProceduresArchivingRelevanceResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Bulk update procedures archiving relevance",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/relevant-procedures" : {
+      "get" : {
+        "operationId" : "getRelevantArchivableProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `closedAtDay` is set, only procedures are returned which were closed at that date\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "closedAtDay",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `exported` is true, only procedures are returned which have already been exported.\n- If `exported` is false, only procedures are returned which have not been exported, yet.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "exported",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CLOSED_AT`: Sorting by closedAt attribute\n- `EXPORTED_AT`: Sorting by exportedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetRelevantArchivableProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetRelevantArchivableProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRelevantArchivableProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get relevant archivable procedures",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/relevant-procedures/export" : {
+      "post" : {
+        "operationId" : "exportRelevantProcedures",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ExportArchivingRelevantProceduresRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/citizen-public/department-info" : {
+      "get" : {
+        "operationId" : "getDepartmentInfo",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetDepartmentInfoResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get department info.",
+        "tags" : [ "CitizenPublic" ]
+      }
+    },
+    "/citizen-public/opening-hours" : {
+      "get" : {
+        "operationId" : "getOpeningHours",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetOpeningHoursResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get opening hours.",
+        "tags" : [ "CitizenPublic" ]
+      }
+    },
+    "/employee/appointments/{id}/book" : {
+      "patch" : {
+        "operationId" : "bookAppointment",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/BookingInfo"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a booking for an appointment",
+        "tags" : [ "OmsAppointment" ]
+      }
+    },
+    "/employee/appointments/{id}/cancel" : {
+      "patch" : {
+        "operationId" : "cancelAppointment",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Cancel an appointment",
+        "tags" : [ "OmsAppointment" ]
+      }
+    },
+    "/employee/appointments/{id}/close" : {
+      "patch" : {
+        "operationId" : "closeAppointment",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "close an appointment",
+        "tags" : [ "OmsAppointment" ]
+      }
+    },
+    "/employee/concerns" : {
+      "get" : {
+        "operationId" : "getAllConcerns",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetConcernsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all available concerns",
+        "tags" : [ "Concern" ]
+      }
+    },
+    "/employee/procedures" : {
+      "get" : {
+        "operationId" : "getAllEmployeeProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "assigned",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "in" : "query",
+          "name" : "status",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "highPriority",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "in" : "query",
+          "name" : "today",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/EmployeeOmsProcedureSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "searchFirstName",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "searchLastName",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "searchDateOfBirth",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetEmployeeOmsProcedureOverviewResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all oms procedures",
+        "tags" : [ "EmployeeOmsProcedure" ]
+      },
+      "post" : {
+        "operationId" : "postEmployeeProcedure",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostEmployeeOmsProcedureRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "uuid"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Save a new employee oms procedure",
+        "tags" : [ "EmployeeOmsProcedure" ]
+      }
+    },
+    "/employee/procedures/{id}" : {
+      "delete" : {
+        "operationId" : "abortDraftProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Abort draft oms procedure",
+        "tags" : [ "EmployeeOmsProcedure" ]
+      }
+    },
+    "/employee/procedures/{id}/accept-draft" : {
+      "patch" : {
+        "operationId" : "acceptDraftProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Accept draft oms procedure",
+        "tags" : [ "EmployeeOmsProcedure" ]
+      }
+    },
+    "/employee/procedures/{id}/appointment" : {
+      "post" : {
+        "operationId" : "postAppointment",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostOmsAppointmentRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "uuid"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a new appointment",
+        "tags" : [ "EmployeeOmsProcedure" ]
+      }
+    },
+    "/employee/procedures/{id}/close" : {
+      "patch" : {
+        "operationId" : "closeOpenProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Close open oms procedure",
+        "tags" : [ "EmployeeOmsProcedure" ]
+      }
+    },
+    "/employee/procedures/{id}/concern" : {
+      "patch" : {
+        "operationId" : "updateOmsProcedureConcern",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchConcernRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update concern of an oms procedure",
+        "tags" : [ "EmployeeOmsProcedure" ]
+      }
+    },
+    "/employee/procedures/{id}/details" : {
+      "get" : {
+        "operationId" : "getEmployeeProcedureDetails",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/EmployeeOmsProcedureDetails"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get details of an oms procedure",
+        "tags" : [ "EmployeeOmsProcedure" ]
+      }
+    },
+    "/employee/procedures/{id}/facility" : {
+      "patch" : {
+        "operationId" : "patchFacility",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchEmployeeOmsProcedureFacilityRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Updates a facility",
+        "tags" : [ "EmployeeOmsProcedure" ]
+      },
+      "post" : {
+        "operationId" : "postFacility",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostEmployeeOmsProcedureFacilityRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "uuid"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add facility to a draft oms procedure",
+        "tags" : [ "EmployeeOmsProcedure" ]
+      }
+    },
+    "/employee/procedures/{id}/header" : {
+      "get" : {
+        "operationId" : "getEmployeeProcedureHeader",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/EmployeeOmsProcedureHeader"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get details of an oms procedure",
+        "tags" : [ "EmployeeOmsProcedure" ]
+      }
+    },
+    "/employee/procedures/{id}/physician" : {
+      "patch" : {
+        "operationId" : "patchPhysician",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchEmployeeOmsProcedurePhysicianRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "uuid"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Updates the associated physician of a draft oms procedure",
+        "tags" : [ "EmployeeOmsProcedure" ]
+      }
+    },
+    "/employee/procedures/{id}/sync-facility" : {
+      "put" : {
+        "operationId" : "syncFacilityData",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SyncFacilityRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Synchronize facility data",
+        "tags" : [ "EmployeeOmsProcedure" ]
+      }
+    },
+    "/employee/procedures/{procedureId}/affected-person" : {
+      "patch" : {
+        "operationId" : "updateAffectedPerson",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchAffectedPersonRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update affected person in an oms procedure",
+        "tags" : [ "EmployeeOmsProcedure" ]
+      }
+    },
+    "/employee/procedures/{procedureId}/sync-affected-person" : {
+      "put" : {
+        "operationId" : "syncAffectedPerson",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SyncAffectedPersonRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Synchronize affected person data",
+        "tags" : [ "EmployeeOmsProcedure" ]
+      }
+    },
+    "/files/{fileId}" : {
+      "delete" : {
+        "operationId" : "deleteFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Soft deletes the specified file",
+        "tags" : [ "File" ]
+      },
+      "get" : {
+        "operationId" : "getFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/Image"
+                  }, {
+                    "$ref" : "#/components/schemas/Mail"
+                  }, {
+                    "$ref" : "#/components/schemas/Pdf"
+                  } ]
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Retrieves the meta data of the specified file",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/deletion-request" : {
+      "post" : {
+        "operationId" : "requestFileDeletion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateApprovalRequestRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Request deletion of a file entry",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/download" : {
+      "get" : {
+        "operationId" : "downloadFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/meta-data" : {
+      "put" : {
+        "operationId" : "updateFileMetaData",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "oneOf" : [ {
+                  "$ref" : "#/components/schemas/ImageMetaData"
+                }, {
+                  "$ref" : "#/components/schemas/MailMetaData"
+                }, {
+                  "$ref" : "#/components/schemas/PdfMetaData"
+                } ]
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/Image"
+                  }, {
+                    "$ref" : "#/components/schemas/Mail"
+                  }, {
+                    "$ref" : "#/components/schemas/Pdf"
+                  } ]
+                }
+              }
+            },
+            "description" : "Updated file"
+          }
+        },
+        "summary" : "Updates the meta data of the specified file",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/meta-data/history" : {
+      "get" : {
+        "operationId" : "getMetaDataHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetMetaDataHistoryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "File" ]
+      }
+    },
+    "/gdpr-validation-tasks" : {
+      "get" : {
+        "operationId" : "getAllGdprValidationTasks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "status",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAllValidationTasksResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all GDPR validation tasks",
+        "tags" : [ "GdprValidationTask" ]
+      },
+      "post" : {
+        "operationId" : "addGdprValidationTask",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddGdprValidationTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "Add a GDPR validation task"
+          }
+        },
+        "summary" : "Add a GDPR validation task",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/notification-banner" : {
+      "get" : {
+        "operationId" : "getGdprNotificationBanner",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprNotificationBannerResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get data for GDPR notification banner",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}" : {
+      "delete" : {
+        "operationId" : "deleteGdprValidationTaskAndDownloadPackages",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/DeleteDownloadPackagesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the GDPR validation task with gdprProcedureId and GDPR download packages with ids from request",
+        "tags" : [ "GdprValidationTask" ]
+      },
+      "get" : {
+        "operationId" : "getGdprValidationTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprValidationTaskResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get Gdpr Validation Task by Gdpr Procedure Id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures" : {
+      "get" : {
+        "operationId" : "getGdprValidationTaskDetails",
+        "parameters" : [ {
+          "description" : "The Id of the GDPR procedure.",
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprValidationTaskDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a GDPR validation task by id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}" : {
+      "delete" : {
+        "operationId" : "deleteBusinessProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "businessProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the businessProcedure with businessProcedureId for validationTask with gdprProcedureId with type right of erasure",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}/downloadPackage" : {
+      "post" : {
+        "operationId" : "addDownloadPackage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "businessProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Creates a downloadPackage for validationTask with gdprProcedureId with the data from the procedure with businessProcedureId",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/close" : {
+      "post" : {
+        "operationId" : "closeGdprValidationTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Close a GDPR validation task"
+          }
+        },
+        "summary" : "Close a GDPR validation task",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/download-packages" : {
+      "get" : {
+        "operationId" : "getGdprDownloadPackagesInfo",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprDownloadPackagesInfoResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get approved Gdpr Download Packages by Gdpr Procedure Id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}" : {
+      "get" : {
+        "operationId" : "getGdprDownloadPackage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "downloadId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get Gdpr Download Package by the gdprProcedureId and its downloadId",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/inbox-procedures" : {
+      "get" : {
+        "description" : "Get all inbox procedures with filter, sort, and pagination options\n",
+        "operationId" : "getInboxProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `inboxProcedureType` is submitted, only inbox procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "inboxProcedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If true, inbox procedures which have no type are returned in addition to the types specified by 'inboxProcedureType'.\n- If false or not submitted, inbox procedures which have no type are not returned.\n",
+          "in" : "query",
+          "name" : "includeUntyped",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `inboxProcedureStatus` is submitted, only inbox procedures are returned which have one of the submitted statuses.\n- If not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "inboxProcedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InboxProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CREATED_AT`: Sorting by createdAt attribute\n- `MODIFIED_AT`: Sorting by modifiedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetInboxProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetInboxProceduresSortOrder"
+          }
+        }, {
+          "description" : "Number of the requested page",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        }, {
+          "description" : "Amount of requested inbox procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInboxProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get inbox procedures",
+        "tags" : [ "InboxProcedure" ]
+      },
+      "post" : {
+        "description" : "Creates an inbox procedure with an optional file upload.\n\n       Permitted file formats:\n        - Image formats: jpeg, png\n        - PDF formats: pdf/a\n        - Mail formats: eml",
+        "operationId" : "addInboxProcedure",
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "createInboxProcedureRequest" : {
+                    "$ref" : "#/components/schemas/CreateInboxProcedureRequest"
+                  },
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  }
+                },
+                "required" : [ "createInboxProcedureRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InboxProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add inbox procedure",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/inbox-procedures/{inboxProcedureId}" : {
+      "get" : {
+        "operationId" : "getInboxProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inboxProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInboxProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get inbox procedure with detailed information",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/inbox-procedures/{inboxProcedureId}/inbox-procedure-status" : {
+      "put" : {
+        "operationId" : "updateInboxProcedureStatus",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inboxProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InboxProcedureStatus"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InboxProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update status of inbox procedure",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/procedure-metrics" : {
+      "get" : {
+        "operationId" : "getProcedureMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of procedures"
+          }
+        },
+        "summary" : "Get procedure metrics for procedures created in the given time range",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures" : {
+      "get" : {
+        "description" : "GET operation for retrieving basic information of procedures for the procedure overview.\n",
+        "operationId" : "getProcedures",
+        "parameters" : [ {
+          "description" : "Only procedures are returned where the assigneeId of at least one task equals the `assignedToId`.\nIf not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "assignedToId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureType` is submitted, only procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CREATED_AT`: Sorting by createdAt attribute\n- `MODIFIED_AT`: Sorting by modifiedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/check-file-state-usage" : {
+      "post" : {
+        "operationId" : "checkFileStateUsage",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CheckFileStateUsageRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CheckFileStateUsageResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Identify which file state IDs are still used by active procedures.",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/recent" : {
+      "get" : {
+        "operationId" : "getRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "userId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/recent/self" : {
+      "get" : {
+        "operationId" : "getSelfRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the current users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for the current user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/search" : {
+      "get" : {
+        "operationId" : "searchProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "query",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}" : {
+      "get" : {
+        "operationId" : "getDetailedProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetDetailedProcedureResponse"
+                }
+              }
+            },
+            "description" : "a single procedure with details"
+          }
+        },
+        "summary" : "Get a single procedure with details",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}/approval-requests" : {
+      "get" : {
+        "operationId" : "getApprovalRequests",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureApprovalRequestsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all approval requests related to this procedure",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}/files" : {
+      "get" : {
+        "description" : "This returns all relevant (highest version per keydocument type and non-deleted) files sorted by descending creation date.\nThat is:\n * if an progress entry has a keydocument type set, then its files are only returned if it also has the highest keydocument version of the respective key document type.\n * if an progress entry does not have a keydocument type, then its files are always returned.\n",
+        "operationId" : "getProcedureFileDetails",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureFileDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get relevant procedure files",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries" : {
+      "get" : {
+        "operationId" : "getProgressEntries",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Filter on progressEntryType",
+          "in" : "query",
+          "name" : "progressEntryType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        }, {
+          "description" : "Filter on child class of progressEntry",
+          "in" : "query",
+          "name" : "progressEntryClass",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProgressEntryClass"
+            }
+          }
+        }, {
+          "description" : "If `initiatedBy` is set with a `userId` then the following is returned:\n* Only progressEntries with `createdBy`=`userId` in case `ManualProgressEntry` or `ProcessedInboxProgressEntry`\n* Only progressEntries with `triggeredBy`=`userId` in case `SystemProgressEntry`\n",
+          "in" : "query",
+          "name" : "initiatedBy",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "description" : "Filter on triggerType.\nIf this is set, only SystemProgressEntries are returned since only SystemProgressEntries have this attribute.\n",
+          "in" : "query",
+          "name" : "triggerType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TriggerType"
+            }
+          }
+        }, {
+          "description" : "Sorting on either modifiedAt or createdAt ",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProgressEntrySortBy"
+          }
+        }, {
+          "description" : "Sorting order. Possible options  \"ASC\" for ascending and \"DESC\" for descending.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProgressEntrySortOrder"
+          }
+        }, {
+          "description" : "Maximum number of elements to return",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Index of page to be returned",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProgressEntriesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get list of procedure's progress entries",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "post" : {
+        "description" : "Creates a manual progress entry with an optional file upload.\n\n       Permitted file formats:\n        - Image formats: jpeg, png\n        - PDF formats: pdf/a\n        - Mail formats: eml",
+        "operationId" : "addProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "createManualProgressEntryRequest" : {
+                    "$ref" : "#/components/schemas/CreateManualProgressEntryRequest"
+                  },
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  }
+                },
+                "required" : [ "createManualProgressEntryRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ManualProgressEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}" : {
+      "delete" : {
+        "operationId" : "removeProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Remove a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "get" : {
+        "operationId" : "getProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProgressEntryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a progress entry",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "patch" : {
+        "operationId" : "patchProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchManualProgressEntryRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ManualProgressEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modify a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}/deletion-request" : {
+      "post" : {
+        "operationId" : "requestProgressEntryDeletion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateApprovalRequestRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Request deletion of a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}/history" : {
+      "get" : {
+        "operationId" : "getManualProgressEntryHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetManualProgressEntryHistoryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the history of a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/task-metrics" : {
+      "get" : {
+        "operationId" : "getTaskMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTaskMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of a specific procedure type"
+          }
+        },
+        "summary" : "Get tasks metrics for a procedure type of a business module for procedures created in the given time range",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks" : {
+      "get" : {
+        "operationId" : "getTasks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "assigneeId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "assignedById",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "taskTypes",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "taskStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortBy"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortOrder"
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TaskResponse"
+                }
+              }
+            },
+            "description" : "tasks"
+          }
+        },
+        "summary" : "Get tasks",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/dashboard" : {
+      "get" : {
+        "operationId" : "getTasksForDashboard",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TaskResponse"
+                }
+              }
+            },
+            "description" : "tasks"
+          }
+        },
+        "summary" : "Get tasks for the dashboard",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/team-view" : {
+      "get" : {
+        "description" : "Returns all _open_ tasks per module group member.",
+        "operationId" : "getTasksByAssignee",
+        "parameters" : [ {
+          "description" : "If provided, `assignee` must be member of the module group.\nIf not provided, all tasks for all members of the module group are returned.\n",
+          "in" : "query",
+          "name" : "assigneeId",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTaskByUserResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/{taskId}/assignment" : {
+      "put" : {
+        "operationId" : "assignTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "taskId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AssignTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Task"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/{taskId}/self-assignment" : {
+      "put" : {
+        "operationId" : "selfAssignTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "taskId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SelfAssignTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Task"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/test-helper/archiving-job" : {
+      "post" : {
+        "operationId" : "runArchivingJob",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/audit-log-storage" : {
+      "delete" : {
+        "operationId" : "clearAuditLogStorageDirectory",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population/administrative" : {
+      "post" : {
+        "operationId" : "populateAdministrative",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/PostPopulateAdministrativeResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create administrative entities",
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population/procedure" : {
+      "post" : {
+        "operationId" : "populateProcedure",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostPopulateProcedureRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/PostPopulateProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a procedure and dependent entities",
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "AbstractFile" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFileReference"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "createdAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "fileName" : {
+              "type" : "string"
+            },
+            "fileSizeBytes" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "fileType" : {
+              "$ref" : "#/components/schemas/FileType"
+            },
+            "locked" : {
+              "type" : "boolean"
+            },
+            "modifiedAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/ApprovalRequestEntity"
+        } ]
+      },
+      "AbstractFileReference" : {
+        "required" : [ "@type", "deletable", "deleted", "fileId" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "deletable" : {
+            "type" : "boolean"
+          },
+          "deleted" : {
+            "type" : "boolean"
+          },
+          "fileId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "AddGdprValidationTaskRequest" : {
+        "required" : [ "gdprProcedureId", "startedAt", "type" ],
+        "type" : "object",
+        "properties" : {
+          "gdprProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "startedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }
+      },
+      "Address" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AffectedPerson" : {
+        "required" : [ "contactAddress", "dateOfBirth", "firstName", "lastName", "version" ],
+        "type" : "object",
+        "properties" : {
+          "affectedPersonSync" : {
+            "$ref" : "#/components/schemas/AffectedPersonSync"
+          },
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "AffectedPersonSync" : {
+        "required" : [ "fileStateId", "outdated", "version" ],
+        "type" : "object",
+        "properties" : {
+          "fileStateId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "outdated" : {
+            "type" : "boolean"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "Appointment" : {
+        "required" : [ "end", "start" ],
+        "type" : "object",
+        "properties" : {
+          "end" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "start" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        },
+        "description" : "Appointment of a procedure."
+      },
+      "AppointmentBlockSortKey" : {
+        "type" : "string",
+        "enum" : [ "START", "END" ]
+      },
+      "AppointmentLocation" : {
+        "required" : [ "id", "name" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "AppointmentPopulation" : {
+        "required" : [ "key", "request" ],
+        "type" : "object",
+        "properties" : {
+          "key" : {
+            "type" : "string"
+          },
+          "request" : {
+            "$ref" : "#/components/schemas/PostOmsAppointmentRequest"
+          }
+        }
+      },
+      "AppointmentState" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "AppointmentType" : {
+        "type" : "string",
+        "enum" : [ "CONSULTATION", "VACCINATION", "REGULAR_EXAMINATION", "CAN_CHILD", "ENTRY_LEVEL", "SPECIAL_NEEDS", "PROOF_SUBMISSION", "HIV_STI_CONSULTATION", "SEX_WORK", "RESULTS_REVIEW", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "AppointmentTypeConfig" : {
+        "required" : [ "appointmentTypeDto", "id", "standardDurationInMinutes" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentTypeDto" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "standardDurationInMinutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "ApprovalRequest" : {
+        "required" : [ "approvalRequestId", "createdAt", "createdBy", "operation", "reason", "status" ],
+        "type" : "object",
+        "properties" : {
+          "approvalRequestId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decidedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "decidedBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decision" : {
+            "$ref" : "#/components/schemas/Decision"
+          },
+          "entity" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/ManualProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "operation" : {
+            "$ref" : "#/components/schemas/Operation"
+          },
+          "reason" : {
+            "type" : "string"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ApprovalRequestStatus"
+          }
+        }
+      },
+      "ApprovalRequestEntity" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ApprovalRequestStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "ArchivingDetails" : {
+        "required" : [ "archivingPeriodYears", "archivingRelevance" ],
+        "type" : "object",
+        "properties" : {
+          "archivingPeriodYears" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          }
+        }
+      },
+      "ArchivingRelevance" : {
+        "type" : "string",
+        "enum" : [ "DEFAULT", "RELEVANT", "IRRELEVANT" ]
+      },
+      "ArchivingRelevanceSettings" : {
+        "required" : [ "archivingRelevance", "defaultArchivingRelevance" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "defaultArchivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          }
+        }
+      },
+      "AssignTaskRequest" : {
+        "required" : [ "assignee", "taskVersion" ],
+        "type" : "object",
+        "properties" : {
+          "assignee" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "taskVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "BookingInfo" : {
+        "required" : [ "bookingType", "duration", "start" ],
+        "type" : "object",
+        "properties" : {
+          "bookingType" : {
+            "$ref" : "#/components/schemas/BookingType"
+          },
+          "duration" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "start" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "BookingState" : {
+        "type" : "string",
+        "enum" : [ "BOOKABLE", "BOOKED", "CANCELLED", "WITHDRAWN" ]
+      },
+      "BookingType" : {
+        "type" : "string",
+        "enum" : [ "APPOINTMENT_BLOCK", "USER_DEFINED" ]
+      },
+      "BulkUpdateProceduresArchivingRelevanceRequest" : {
+        "required" : [ "archivingRelevance", "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "BulkUpdateProceduresArchivingRelevanceResponse" : {
+        "required" : [ "archivingRelevance", "failedProcedures", "updatedProcedures" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "failedProcedures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "updatedProcedures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "BusinessModule" : {
+        "type" : "string",
+        "enum" : [ "INSPECTION", "SCHOOL_ENTRY", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY", "DENTAL", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "BusinessProcedureInclusionStatus" : {
+        "type" : "string",
+        "enum" : [ "INCLUDED", "UNDECIDED" ]
+      },
+      "BusinessProcedureWithInclusionStatus" : {
+        "required" : [ "businessProcedure", "inclusionStatus" ],
+        "type" : "object",
+        "properties" : {
+          "businessProcedure" : {
+            "$ref" : "#/components/schemas/Procedure"
+          },
+          "inclusionStatus" : {
+            "$ref" : "#/components/schemas/BusinessProcedureInclusionStatus"
+          }
+        }
+      },
+      "CheckFileStateUsageRequest" : {
+        "required" : [ "fileStatesIds" ],
+        "type" : "object",
+        "properties" : {
+          "fileStatesIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "CheckFileStateUsageResponse" : {
+        "required" : [ "inUse" ],
+        "type" : "object",
+        "properties" : {
+          "inUse" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "Concern" : {
+        "required" : [ "categoryNameDe", "categoryNameEn", "descriptionDe", "descriptionEn", "highPriority", "nameDe", "nameEn", "version" ],
+        "type" : "object",
+        "properties" : {
+          "categoryNameDe" : {
+            "type" : "string"
+          },
+          "categoryNameEn" : {
+            "type" : "string"
+          },
+          "descriptionDe" : {
+            "type" : "string"
+          },
+          "descriptionEn" : {
+            "type" : "string"
+          },
+          "highPriority" : {
+            "type" : "boolean"
+          },
+          "nameDe" : {
+            "type" : "string"
+          },
+          "nameEn" : {
+            "type" : "string"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ConcernCategoryConfig" : {
+        "required" : [ "concerns", "nameDe", "nameEn" ],
+        "type" : "object",
+        "properties" : {
+          "concerns" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ConcernConfig"
+            }
+          },
+          "nameDe" : {
+            "type" : "string"
+          },
+          "nameEn" : {
+            "type" : "string"
+          }
+        }
+      },
+      "ConcernConfig" : {
+        "required" : [ "descriptionDe", "descriptionEn", "highPriority", "nameDe", "nameEn" ],
+        "type" : "object",
+        "properties" : {
+          "descriptionDe" : {
+            "type" : "string"
+          },
+          "descriptionEn" : {
+            "type" : "string"
+          },
+          "highPriority" : {
+            "type" : "boolean"
+          },
+          "nameDe" : {
+            "type" : "string"
+          },
+          "nameEn" : {
+            "type" : "string"
+          }
+        }
+      },
+      "ConcernTestDataConfig" : {
+        "type" : "string",
+        "enum" : [ "EXAMINATION_ELIGIBILITY", "CERTIFICATE_FOR_CALL_OF_DUTY", "PRIORITIZATION_OF_CIVIL_SERVANTS", "EARLY_RETIREMENT", "REVIEW_OF_LONGER_SICK_NOTES" ]
+      },
+      "ContactDetails" : {
+        "required" : [ "contactType", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "$ref" : "#/components/schemas/InboxProcedureAddress"
+          },
+          "contactType" : {
+            "$ref" : "#/components/schemas/ContactType"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "emailAddress" : {
+            "type" : "string"
+          },
+          "facilityName" : {
+            "type" : "string"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "lastName" : {
+            "type" : "string"
+          },
+          "phoneNumber" : {
+            "type" : "string"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "$ref" : "#/components/schemas/Title"
+          }
+        }
+      },
+      "ContactType" : {
+        "type" : "string",
+        "enum" : [ "PRIVATE_PERSON", "FACILITY" ]
+      },
+      "CountryCode" : {
+        "type" : "string",
+        "description" : "List of country codes in ISO 3166-1 alpha-2 format. With custom extensions for stateless, non-standard countries, and unknown countries.",
+        "enum" : [ "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW", "XK", "UNKNOWN", "STATELESS" ]
+      },
+      "CreateAppointmentBlockGroupResponse" : {
+        "required" : [ "appointmentBlockIds", "id" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlockIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the AppointmentBlockGroup.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          }
+        }
+      },
+      "CreateApprovalRequestRequest" : {
+        "required" : [ "reason" ],
+        "type" : "object",
+        "properties" : {
+          "reason" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateDailyAppointmentBlock" : {
+        "required" : [ "daysOfWeek", "end", "start" ],
+        "type" : "object",
+        "properties" : {
+          "daysOfWeek" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DayOfWeek"
+            }
+          },
+          "end" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block ends.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:45:00.123456+01:00"
+          },
+          "start" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block starts.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:00:00.123456+01:00"
+          }
+        }
+      },
+      "CreateDailyAppointmentBlockGroupRequest" : {
+        "required" : [ "appointmentBlocks", "parallelExaminations", "type" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlocks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CreateDailyAppointmentBlock"
+            }
+          },
+          "consultants" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "locationId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "mfas" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "parallelExaminations" : {
+            "maximum" : 10,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "physicians" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }
+      },
+      "CreateInboxProcedureRequest" : {
+        "required" : [ "contactDetails", "inboxProgressEntry" ],
+        "type" : "object",
+        "properties" : {
+          "contactDetails" : {
+            "$ref" : "#/components/schemas/ContactDetails"
+          },
+          "inboxProcedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "inboxProgressEntry" : {
+            "$ref" : "#/components/schemas/CreateInboxProgressEntry"
+          }
+        }
+      },
+      "CreateInboxProgressEntry" : {
+        "required" : [ "inboxProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProgressEntryType" : {
+            "$ref" : "#/components/schemas/InboxProgressEntryType"
+          },
+          "messageText" : {
+            "type" : "string"
+          },
+          "subject" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateManualProgressEntryRequest" : {
+        "required" : [ "manualProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "keyDocumentType" : {
+            "type" : "string"
+          },
+          "manualProgressEntryType" : {
+            "$ref" : "#/components/schemas/ManualProgressEntryType"
+          },
+          "note" : {
+            "type" : "string"
+          }
+        }
+      },
+      "DataOrigin" : {
+        "type" : "string",
+        "description" : "A list of possible origins of Persons and Facility in the Central Files. EDIT will only be set automatically on changes. EXTERNAL is for entries that come, e.g., from the citizen portal. IMPORT is reserved for automatic imports. MANUAL shall be set for every creation or connection done by an employee.",
+        "enum" : [ "MANUAL", "EXTERNAL", "IMPORT", "EDIT" ]
+      },
+      "DayOfWeek" : {
+        "type" : "string",
+        "enum" : [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ]
+      },
+      "Decision" : {
+        "type" : "string",
+        "enum" : [ "GRANTED", "DENIED" ]
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "DeleteDownloadPackagesRequest" : {
+        "required" : [ "downloadIds" ],
+        "type" : "object",
+        "properties" : {
+          "downloadIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "DetailedFacility" : {
+        "required" : [ "facilityFileState", "facilityType" ],
+        "type" : "object",
+        "properties" : {
+          "facilityFileState" : {
+            "$ref" : "#/components/schemas/GetFacilityFileStateResponse"
+          },
+          "facilityType" : {
+            "$ref" : "#/components/schemas/FacilityType"
+          }
+        }
+      },
+      "DetailedPerson" : {
+        "required" : [ "person", "personType" ],
+        "type" : "object",
+        "properties" : {
+          "person" : {
+            "$ref" : "#/components/schemas/GetPersonFileStateResponse"
+          },
+          "personType" : {
+            "$ref" : "#/components/schemas/PersonType"
+          }
+        }
+      },
+      "DetailedTask" : {
+        "required" : [ "task" ],
+        "type" : "object",
+        "properties" : {
+          "assignedByName" : {
+            "type" : "string"
+          },
+          "assigneeName" : {
+            "type" : "string"
+          },
+          "task" : {
+            "$ref" : "#/components/schemas/Task"
+          }
+        }
+      },
+      "DomesticAddress" : {
+        "required" : [ "city", "country", "postalCode", "street" ],
+        "type" : "object",
+        "description" : "A usual domestic address.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "addressAddition" : {
+              "maxLength" : 100,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "A descriptive addition to the address.",
+              "example" : "2.OG links"
+            },
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "houseNumber" : {
+              "maxLength" : 11,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The house number of the address, including extensions.",
+              "example" : "1a"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "street" : {
+              "maxLength" : 55,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the street of the address, without the house number.",
+              "example" : "Beispielweg"
+            }
+          }
+        } ]
+      },
+      "EmployeeOmsProcedureDetails" : {
+        "required" : [ "affectedPerson", "appointments", "id", "status" ],
+        "type" : "object",
+        "properties" : {
+          "affectedPerson" : {
+            "$ref" : "#/components/schemas/AffectedPerson"
+          },
+          "appointments" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/OmsAppointment"
+            }
+          },
+          "concern" : {
+            "$ref" : "#/components/schemas/Concern"
+          },
+          "facility" : {
+            "$ref" : "#/components/schemas/Facility"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "physician" : {
+            "$ref" : "#/components/schemas/User"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          }
+        }
+      },
+      "EmployeeOmsProcedureHeader" : {
+        "required" : [ "id", "status" ],
+        "type" : "object",
+        "properties" : {
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "lastName" : {
+            "type" : "string"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          }
+        }
+      },
+      "EmployeeOmsProcedureOverview" : {
+        "required" : [ "id", "status" ],
+        "type" : "object",
+        "properties" : {
+          "concern" : {
+            "$ref" : "#/components/schemas/Concern"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "facilityName" : {
+            "type" : "string"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "lastName" : {
+            "type" : "string"
+          },
+          "nextAppointment" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "physicianName" : {
+            "type" : "string"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          }
+        }
+      },
+      "EmployeeOmsProcedureSortKey" : {
+        "type" : "string",
+        "enum" : [ "ID", "FIRSTNAME", "LASTNAME", "DATEOFBIRTH", "FACILITYNAME", "PHYSICIANNAME", "STATUS", "NEXTAPPOINTMENT" ]
+      },
+      "ExportArchivingRelevantProceduresRequest" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "Facility" : {
+        "required" : [ "name", "version" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "facilitySync" : {
+            "$ref" : "#/components/schemas/FacilitySync"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "FacilityContactPerson" : {
+        "required" : [ "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "emailAddress" : {
+            "maxLength" : 254,
+            "minLength" : 6,
+            "type" : "string",
+            "description" : "The email addresses of the Contact Person.",
+            "example" : "mail1@address.de"
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Contact Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Contact Person.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "maxLength" : 23,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The phone number of the Contact Person.",
+            "example" : "+491234567890"
+          },
+          "role" : {
+            "maxLength" : 255,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The role of the Contact Person in the Facility.",
+            "example" : "CEO"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of the Contact Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "FacilitySync" : {
+        "required" : [ "fileStateId", "outdated", "version" ],
+        "type" : "object",
+        "properties" : {
+          "fileStateId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "outdated" : {
+            "type" : "boolean"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "FacilityType" : {
+        "type" : "string",
+        "enum" : [ "SCHOOL", "INSPECTION", "DAYCARE", "HOSPITAL", "MEDICAL_PRACTICE", "REFUGEE_ACCOMMODATION", "OTHER" ]
+      },
+      "FileMetaData" : {
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          }
+        }
+      },
+      "FileType" : {
+        "type" : "string",
+        "enum" : [ "JPEG", "PNG", "PDF", "EML" ]
+      },
+      "GdprDownloadPackageInfo" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GdprFacility" : {
+        "required" : [ "address", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "dataTransmitterPseudonymId" : {
+              "type" : "string",
+              "description" : "The 'DatenübermittlerPseudonymId' of the MUK user",
+              "example" : "du-986b2b54ab89cf4ed674ad8c3126b966b54d4872"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Facility.",
+              "example" : "mail@address.de"
+            },
+            "name" : {
+              "maxLength" : 300,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the Facility.",
+              "example" : "123 Example Facility"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The phone number of the Facility.",
+              "example" : "+491234567890"
+            }
+          }
+        } ]
+      },
+      "GdprIdentificationData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "GdprPerson" : {
+        "required" : [ "address", "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "bpk2" : {
+              "type" : "string",
+              "description" : "The bpk2 of the BundId user",
+              "example" : "VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0"
+            },
+            "dateOfBirth" : {
+              "type" : "string",
+              "description" : "The date of birth of the Person.",
+              "format" : "date",
+              "example" : "2000-01-01"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Person.",
+              "example" : "mail@address.de"
+            },
+            "firstName" : {
+              "maxLength" : 80,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The given name(s) of the Person.",
+              "example" : "John"
+            },
+            "lastName" : {
+              "maxLength" : 120,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The last name of the Person.",
+              "example" : "Doe"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 0,
+              "type" : "string",
+              "description" : "The phone number of the Person.",
+              "example" : "+491234567890"
+            },
+            "salutation" : {
+              "$ref" : "#/components/schemas/Salutation"
+            },
+            "title" : {
+              "maxLength" : 119,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The academic title of the Person.",
+              "example" : "Prof. Dr."
+            }
+          }
+        } ]
+      },
+      "GdprProcedureType" : {
+        "type" : "string",
+        "description" : "A list of types of GDPR procedures.",
+        "enum" : [ "RIGHT_OF_ACCESS", "RIGHT_TO_ERASURE" ]
+      },
+      "GdprValidationTask" : {
+        "required" : [ "dueDate", "gdprProcedureId", "identificationData", "status", "type" ],
+        "type" : "object",
+        "properties" : {
+          "dueDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "gdprProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "identificationData" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GdprFacility"
+            }, {
+              "$ref" : "#/components/schemas/GdprPerson"
+            } ]
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }
+      },
+      "GdprValidationTaskSortKey" : {
+        "type" : "string",
+        "enum" : [ "CREATED_AT" ]
+      },
+      "GdprValidationTaskStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "Gender" : {
+        "type" : "string",
+        "description" : "The list of genders as specified in the German Personenstandsgesetz.",
+        "enum" : [ "NOT_SPECIFIED", "DIVERSE", "FEMALE", "MALE" ]
+      },
+      "GenericFileReference" : {
+        "required" : [ "@type", "deletable", "deleted", "fileId" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFileReference"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "GetAllValidationTasksResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GdprValidationTask"
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetAppointmentBlock" : {
+        "required" : [ "end", "id", "numberOfBookedAppointments", "numberOfFreeAppointments", "start" ],
+        "type" : "object",
+        "properties" : {
+          "end" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block ends.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:45:00.123456+01:00"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the AppointmentBlock.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "numberOfBookedAppointments" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "numberOfFreeAppointments" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "start" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block starts.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:00:00.123456+01:00"
+          }
+        },
+        "description" : "A planned appointment block. Appointment blocks offer a set of bookable appointments at different times within the timeframe of the appointment block."
+      },
+      "GetAppointmentBlockGroup" : {
+        "required" : [ "appointmentBlocks", "id", "parallelExaminations", "type" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlocks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GetAppointmentBlock"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the AppointmentBlockGroup.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "location" : {
+            "$ref" : "#/components/schemas/AppointmentLocation"
+          },
+          "parallelExaminations" : {
+            "maximum" : 10,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }
+      },
+      "GetAppointmentBlockGroupsResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GetAppointmentBlockGroup"
+            }
+          },
+          "totalNumberOfElements" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetAppointmentTypesResponse" : {
+        "required" : [ "appointmentTypeConfigDtos" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentTypeConfigDtos" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AppointmentTypeConfig"
+            }
+          }
+        }
+      },
+      "GetArchivableProceduresResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetArchivableProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CLOSED_AT",
+        "enum" : [ "CLOSED_AT", "PROCEDURE_TYPE" ]
+      },
+      "GetArchivableProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetArchivingConfigurationResponse" : {
+        "required" : [ "archivingDetails", "gracePeriodMonths" ],
+        "type" : "object",
+        "properties" : {
+          "archivingDetails" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/ArchivingDetails"
+            }
+          },
+          "gracePeriodMonths" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetConcernsResponse" : {
+        "required" : [ "categories" ],
+        "type" : "object",
+        "properties" : {
+          "categories" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ConcernCategoryConfig"
+            }
+          }
+        }
+      },
+      "GetDepartmentInfoResponse" : {
+        "required" : [ "city", "country", "email", "homepage", "houseNumber", "location", "name", "phoneNumber", "postalCode", "street" ],
+        "type" : "object",
+        "properties" : {
+          "abbreviation" : {
+            "type" : "string",
+            "description" : "The abbreviation of the name of the department",
+            "example" : "LTG"
+          },
+          "city" : {
+            "type" : "string",
+            "description" : "The name of the city where the department is located",
+            "example" : "Berlin"
+          },
+          "country" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "email" : {
+            "type" : "string",
+            "description" : "The email address of the department",
+            "example" : "mail@address.de"
+          },
+          "homepage" : {
+            "type" : "string",
+            "description" : "The domain of the department's official homepage, excluding protocols",
+            "example" : "department-homepage.de"
+          },
+          "houseNumber" : {
+            "type" : "string",
+            "description" : "The house number at the department's address, including any extensions or suffixes",
+            "example" : "1b"
+          },
+          "location" : {
+            "$ref" : "#/components/schemas/Location"
+          },
+          "name" : {
+            "type" : "string",
+            "description" : "The name of the department",
+            "example" : "Gesundheitsamt Landkreis Testgebiet"
+          },
+          "phoneNumber" : {
+            "type" : "string",
+            "description" : "The primary contact telephone number for the department",
+            "example" : "+491234567890"
+          },
+          "postalCode" : {
+            "type" : "string",
+            "description" : "The postal code for the department’s address",
+            "example" : "12345"
+          },
+          "street" : {
+            "type" : "string",
+            "description" : "The street name for the department’s address, not including the house number",
+            "example" : "Beispielweg"
+          }
+        }
+      },
+      "GetDetailedProcedureResponse" : {
+        "required" : [ "facilities", "persons", "procedure", "tasks" ],
+        "type" : "object",
+        "properties" : {
+          "facilities" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedFacility"
+            }
+          },
+          "persons" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedPerson"
+            }
+          },
+          "procedure" : {
+            "$ref" : "#/components/schemas/Procedure"
+          },
+          "tasks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedTask"
+            }
+          }
+        }
+      },
+      "GetEmployeeOmsProcedureOverviewResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/EmployeeOmsProcedureOverview"
+            }
+          },
+          "totalNumberOfElements" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetFacilityFileStateResponse" : {
+        "required" : [ "contactPersons", "dataOrigin", "emailAddresses", "id", "name", "phoneNumbers", "referenceVersion" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Facility.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referenceFacility it is connected to.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          }
+        }
+      },
+      "GetFreeAppointmentsResponse" : {
+        "required" : [ "appointments" ],
+        "type" : "object",
+        "properties" : {
+          "appointments" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Appointment"
+            }
+          }
+        }
+      },
+      "GetGdprDownloadPackagesInfoResponse" : {
+        "required" : [ "downloadPackages" ],
+        "type" : "object",
+        "properties" : {
+          "downloadPackages" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GdprDownloadPackageInfo"
+            }
+          }
+        }
+      },
+      "GetGdprNotificationBannerResponse" : {
+        "required" : [ "openValidationTasksCount" ],
+        "type" : "object",
+        "properties" : {
+          "earliestDueDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "openValidationTasksCount" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetGdprValidationTaskDetailsResponse" : {
+        "required" : [ "proceduresWithStatus", "validationTask" ],
+        "type" : "object",
+        "properties" : {
+          "proceduresWithStatus" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessProcedureWithInclusionStatus"
+            }
+          },
+          "validationTask" : {
+            "$ref" : "#/components/schemas/GdprValidationTask"
+          }
+        }
+      },
+      "GetGdprValidationTaskResponse" : {
+        "required" : [ "status" ],
+        "type" : "object",
+        "properties" : {
+          "status" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          }
+        }
+      },
+      "GetInboxProcedureResponse" : {
+        "required" : [ "inboxProcedure", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProcedure" : {
+            "$ref" : "#/components/schemas/InboxProcedure"
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetInboxProceduresResponse" : {
+        "required" : [ "inboxProcedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProcedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InboxProcedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetInboxProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "CREATED_AT" ]
+      },
+      "GetInboxProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetManualProgressEntryHistoryResponse" : {
+        "type" : "object",
+        "properties" : {
+          "manualProgressEntryHistory" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ManualProgressEntryHistory"
+            }
+          }
+        }
+      },
+      "GetMetaDataHistoryResponse" : {
+        "type" : "object",
+        "properties" : {
+          "metaDataHistory" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ImageMetaDataHistory"
+              }, {
+                "$ref" : "#/components/schemas/MailMetaDataHistory"
+              }, {
+                "$ref" : "#/components/schemas/PdfMetaDataHistory"
+              } ]
+            }
+          }
+        }
+      },
+      "GetOpeningHoursResponse" : {
+        "required" : [ "de", "en" ],
+        "type" : "object",
+        "properties" : {
+          "de" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "en" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        }
+      },
+      "GetPersonFileStateResponse" : {
+        "required" : [ "dataOrigin", "dateOfBirth", "emailAddresses", "firstName", "gender", "id", "lastName", "phoneNumbers", "referenceVersion", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "The date of birth of the Person.",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Person.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Person.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Person.",
+            "example" : "Doe"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name at birth of the Person.",
+            "example" : "Smith"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referencePerson it is connected to. Set to 'null' if unchecked.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Person.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The place of birth (without country) of the Person.",
+            "example" : "Berlin"
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "GetProcedureApprovalRequestsResponse" : {
+        "required" : [ "approvalRequests", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "approvalRequests" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ApprovalRequest"
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetProcedureFileDetailsResponse" : {
+        "required" : [ "fileDetails", "procedureId" ],
+        "type" : "object",
+        "properties" : {
+          "fileDetails" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProgressEntryReferenceFilePair"
+            }
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GetProcedureMetricsResponse" : {
+        "required" : [ "procedureMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "procedureMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureMetric"
+            }
+          }
+        }
+      },
+      "GetProceduresResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "MODIFIED_AT", "CREATED_AT" ]
+      },
+      "GetProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetProgressEntriesResponse" : {
+        "required" : [ "progressEntries", "resolvedUsers", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "progressEntries" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ManualProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/ProcessedInboxProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/SystemProgressEntry"
+              } ]
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetProgressEntryResponse" : {
+        "required" : [ "progressEntry", "relatedKeyDocumentProgressEntries", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "progressEntry" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/ManualProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/ProcessedInboxProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/SystemProgressEntry"
+            } ]
+          },
+          "relatedKeyDocumentProgressEntries" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ManualProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/SystemProgressEntry"
+              } ]
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetRecentProceduresResponse" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          }
+        }
+      },
+      "GetRelevantArchivableProceduresResponse" : {
+        "required" : [ "fileSizeBytes", "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "fileSizeBytes" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetRelevantArchivableProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CLOSED_AT",
+        "enum" : [ "CLOSED_AT", "EXPORTED_AT" ]
+      },
+      "GetRelevantArchivableProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetTaskByUserResponse" : {
+        "required" : [ "resolvedUsers", "tasksByUser" ],
+        "type" : "object",
+        "properties" : {
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "tasksByUser" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/Task"
+              }
+            }
+          }
+        }
+      },
+      "GetTaskMetricsResponse" : {
+        "required" : [ "businessModule", "closedProcedureCount", "fastestProcedures", "procedureType", "slowestProcedures", "taskMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedProcedureCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "fastestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "slowestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "taskMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskMetric"
+            }
+          }
+        }
+      },
+      "GetTasksSortBy" : {
+        "type" : "string",
+        "enum" : [ "PRIORITY", "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "GetTasksSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "Image" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/ImageMetaData"
+            }
+          }
+        } ]
+      },
+      "ImageMetaData" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "ImageMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "imageMetaData" : {
+              "$ref" : "#/components/schemas/ImageMetaData"
+            }
+          }
+        } ]
+      },
+      "InboxProcedure" : {
+        "required" : [ "contactDetails", "createdAt", "createdBy", "inboxProcedureId", "inboxProcedureStatus", "inboxProgressEntry" ],
+        "type" : "object",
+        "properties" : {
+          "closedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "contactDetails" : {
+            "$ref" : "#/components/schemas/ContactDetails"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProcedureStatus" : {
+            "$ref" : "#/components/schemas/InboxProcedureStatus"
+          },
+          "inboxProcedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "inboxProgressEntry" : {
+            "$ref" : "#/components/schemas/InboxProgressEntry"
+          }
+        }
+      },
+      "InboxProcedureAddress" : {
+        "type" : "object",
+        "properties" : {
+          "addressAddition" : {
+            "type" : "string"
+          },
+          "city" : {
+            "type" : "string"
+          },
+          "country" : {
+            "type" : "string"
+          },
+          "houseNumber" : {
+            "type" : "string"
+          },
+          "postalCode" : {
+            "type" : "string"
+          },
+          "postboxNumber" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "street" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InboxProcedureStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "InboxProgressEntry" : {
+        "required" : [ "inboxProgressEntryId", "inboxProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "fileReference" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GenericFileReference"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "inboxProgressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProgressEntryType" : {
+            "$ref" : "#/components/schemas/InboxProgressEntryType"
+          },
+          "messageText" : {
+            "type" : "string"
+          },
+          "subject" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InboxProgressEntryType" : {
+        "type" : "string",
+        "enum" : [ "LETTER", "PHONE_CALL", "EMAIL" ]
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "KeyDocumentAwareProgressEntry" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "keyDocumentType" : {
+            "type" : "string"
+          },
+          "keyDocumentVersion" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "Location" : {
+        "required" : [ "latitude", "longitude" ],
+        "type" : "object",
+        "properties" : {
+          "latitude" : {
+            "type" : "number",
+            "description" : "Geographic coordinate that specifies the north–south angular location of a point on the surface of the Earth.",
+            "format" : "double",
+            "example" : 52.51627
+          },
+          "longitude" : {
+            "type" : "number",
+            "description" : "Geographic coordinate that specifies the east–west angular position of a point on the surface of the Earth.",
+            "format" : "double",
+            "example" : 13.377703
+          }
+        },
+        "description" : "Location defined by latitude and longitude."
+      },
+      "Mail" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt", "removedInvalidAttachments" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/MailMetaData"
+            },
+            "removedInvalidAttachments" : {
+              "type" : "integer",
+              "format" : "int32"
+            }
+          }
+        } ]
+      },
+      "MailMetaData" : {
+        "required" : [ "mailFrom", "mailTo", "messageText", "sentDate", "subject" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "mailFrom" : {
+              "type" : "string"
+            },
+            "mailTo" : {
+              "type" : "string"
+            },
+            "messageText" : {
+              "type" : "string"
+            },
+            "sentDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "subject" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "MailMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "mailMetaData" : {
+              "$ref" : "#/components/schemas/MailMetaData"
+            }
+          }
+        } ]
+      },
+      "ManualProgressEntry" : {
+        "required" : [ "createdAt", "createdBy", "locked", "manualProgressEntryType", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "keyDocumentType" : {
+              "type" : "string"
+            },
+            "keyDocumentVersion" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "locked" : {
+              "type" : "boolean"
+            },
+            "manualProgressEntryType" : {
+              "$ref" : "#/components/schemas/ManualProgressEntryType"
+            },
+            "note" : {
+              "type" : "string"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/ApprovalRequestEntity"
+        }, {
+          "$ref" : "#/components/schemas/KeyDocumentAwareProgressEntry"
+        } ]
+      },
+      "ManualProgressEntryHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "properties" : {
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "manualProgressEntry" : {
+            "$ref" : "#/components/schemas/ManualProgressEntry"
+          }
+        }
+      },
+      "ManualProgressEntryType" : {
+        "type" : "string",
+        "enum" : [ "LETTER", "PHONE_CALL", "NOTE", "EMAIL", "IMAGE", "DOCUMENT" ]
+      },
+      "MetaData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "description" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "MetaDataHistory" : {
+        "required" : [ "@type", "changedAt" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "OmsAppointment" : {
+        "required" : [ "appointmentId", "appointmentState", "appointmentType", "bookingState" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "appointmentState" : {
+            "$ref" : "#/components/schemas/AppointmentState"
+          },
+          "appointmentType" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          },
+          "bookingState" : {
+            "$ref" : "#/components/schemas/BookingState"
+          },
+          "bookingType" : {
+            "$ref" : "#/components/schemas/BookingType"
+          },
+          "duration" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "start" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "Operation" : {
+        "type" : "string",
+        "enum" : [ "DELETE" ]
+      },
+      "PatchAffectedPersonRequest" : {
+        "required" : [ "affectedPerson" ],
+        "type" : "object",
+        "properties" : {
+          "affectedPerson" : {
+            "$ref" : "#/components/schemas/AffectedPerson"
+          }
+        }
+      },
+      "PatchConcernRequest" : {
+        "required" : [ "concern" ],
+        "type" : "object",
+        "properties" : {
+          "concern" : {
+            "$ref" : "#/components/schemas/Concern"
+          }
+        }
+      },
+      "PatchEmployeeOmsProcedureFacilityRequest" : {
+        "required" : [ "updatedFacility" ],
+        "type" : "object",
+        "properties" : {
+          "updatedFacility" : {
+            "$ref" : "#/components/schemas/Facility"
+          }
+        }
+      },
+      "PatchEmployeeOmsProcedurePhysicianRequest" : {
+        "required" : [ "physicianId" ],
+        "type" : "object",
+        "properties" : {
+          "physicianId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "PatchManualProgressEntryRequest" : {
+        "type" : "object",
+        "properties" : {
+          "manualProgressEntryType" : {
+            "$ref" : "#/components/schemas/ManualProgressEntryType"
+          },
+          "note" : {
+            "type" : "string",
+            "nullable" : true
+          }
+        }
+      },
+      "Pdf" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/PdfMetaData"
+            }
+          }
+        } ]
+      },
+      "PdfMetaData" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "PdfMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "pdfMetaData" : {
+              "$ref" : "#/components/schemas/PdfMetaData"
+            }
+          }
+        } ]
+      },
+      "PersonType" : {
+        "type" : "string",
+        "enum" : [ "PATIENT", "PARENT", "PROFESSIONAL" ]
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "PostEmployeeOmsProcedureFacilityRequest" : {
+        "required" : [ "facility" ],
+        "type" : "object",
+        "properties" : {
+          "facility" : {
+            "$ref" : "#/components/schemas/Facility"
+          }
+        }
+      },
+      "PostEmployeeOmsProcedureRequest" : {
+        "required" : [ "affectedPerson" ],
+        "type" : "object",
+        "properties" : {
+          "affectedPerson" : {
+            "$ref" : "#/components/schemas/AffectedPerson"
+          }
+        }
+      },
+      "PostOmsAppointmentRequest" : {
+        "required" : [ "appointmentType" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentType" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          },
+          "bookingInfo" : {
+            "$ref" : "#/components/schemas/BookingInfo"
+          }
+        }
+      },
+      "PostPopulateAdministrativeResponse" : {
+        "required" : [ "appointmentBlockGroupsCreated", "physiciansCreated" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlockGroupsCreated" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "physiciansCreated" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "PostPopulateProcedureRequest" : {
+        "required" : [ "procedureData" ],
+        "type" : "object",
+        "properties" : {
+          "appointments" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AppointmentPopulation"
+            }
+          },
+          "cancelledAppointments" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "closedAppointments" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "concern" : {
+            "$ref" : "#/components/schemas/ConcernTestDataConfig"
+          },
+          "facility" : {
+            "$ref" : "#/components/schemas/PostEmployeeOmsProcedureFacilityRequest"
+          },
+          "physician" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "procedureData" : {
+            "$ref" : "#/components/schemas/PostEmployeeOmsProcedureRequest"
+          },
+          "targetState" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          }
+        }
+      },
+      "PostPopulateProcedureResponse" : {
+        "required" : [ "appointments", "procedureId" ],
+        "type" : "object",
+        "properties" : {
+          "appointments" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "facilityId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "PostboxAddress" : {
+        "required" : [ "city", "country", "postalCode", "postbox" ],
+        "type" : "object",
+        "description" : "An address which is a postbox.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "postbox" : {
+              "maxLength" : 21,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The number (or name) of the postbox.",
+              "example" : "123"
+            }
+          }
+        } ]
+      },
+      "Procedure" : {
+        "required" : [ "archivingRelevanceSettings", "businessModule", "createdAt", "modifiedAt", "procedureId", "procedureStatus", "procedureType", "summary" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevanceSettings" : {
+            "$ref" : "#/components/schemas/ArchivingRelevanceSettings"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "exportedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "procedureStatus" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "pattern" : "[a-zA-Z0-9.].+",
+            "type" : "string"
+          }
+        }
+      },
+      "ProcedureMetric" : {
+        "required" : [ "abortedCount", "businessModule", "closedCount", "inProgressCount", "openOrDraftCount", "procedureType", "totalCount" ],
+        "type" : "object",
+        "properties" : {
+          "abortedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "inProgressCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "openOrDraftCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "totalCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ProcedureStatus" : {
+        "type" : "string",
+        "enum" : [ "DRAFT", "OPEN", "IN_PROGRESS", "CLOSED", "ABORTED" ]
+      },
+      "ProcedureType" : {
+        "type" : "string",
+        "enum" : [ "REGULAR_EXAMINATION", "CAN_CHILD", "ENTRY_LEVEL", "DRAFT_CITIZEN_OFFICE_IMPORT", "DRAFT_SCHOOL_IMPORT", "INSPECTION", "TM_VACCINATION_CONSULTATION", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY_ENTRY", "MEDICAL_REGISTRY_CITIZEN_DRAFT", "MEDICAL_REGISTRY_EMPLOYEE_DRAFT", "DENTAL_CHILD", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "ProcedureWithDuration" : {
+        "required" : [ "createdAt", "id" ],
+        "type" : "object",
+        "properties" : {
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "duration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ProcessedInboxProgressEntry" : {
+        "required" : [ "createdAt", "createdBy", "inboxProcedureId", "inboxProgressEntryType", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "inboxProcedureId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "inboxProgressEntryType" : {
+              "$ref" : "#/components/schemas/InboxProgressEntryType"
+            },
+            "messageText" : {
+              "type" : "string"
+            },
+            "subject" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "ProgressEntry" : {
+        "required" : [ "@type", "createdAt", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "fileReference" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GenericFileReference"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "progressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ProgressEntryClass" : {
+        "type" : "string",
+        "enum" : [ "MANUAL_PROGRESS_ENTRY", "SYSTEM_PROGRESS_ENTRY", "PROCESSED_INBOX_PROGRESS_ENTRY" ]
+      },
+      "ProgressEntryReferenceFilePair" : {
+        "required" : [ "file", "progressEntryId" ],
+        "type" : "object",
+        "properties" : {
+          "file" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "progressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ProgressEntrySortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "ProgressEntrySortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "Salutation" : {
+        "type" : "string",
+        "enum" : [ "NOT_SPECIFIED", "NEUTRAL", "FEMALE", "MALE" ]
+      },
+      "SelfAssignTaskRequest" : {
+        "required" : [ "taskVersion" ],
+        "type" : "object",
+        "properties" : {
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "taskVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "SortDirection" : {
+        "type" : "string",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "SyncAffectedPersonRequest" : {
+        "required" : [ "fileStateId", "personVersion", "referenceVersion" ],
+        "type" : "object",
+        "properties" : {
+          "fileStateId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "personVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "SyncFacilityRequest" : {
+        "required" : [ "facilityVersion", "fileStateId", "referenceVersion" ],
+        "type" : "object",
+        "properties" : {
+          "facilityVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "fileStateId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "SystemProgressEntry" : {
+        "required" : [ "createdAt", "modifiedAt", "progressEntryId", "systemProgressEntryType", "triggerType" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "changeDescription" : {
+              "type" : "string"
+            },
+            "keyDocumentType" : {
+              "type" : "string"
+            },
+            "keyDocumentVersion" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "previousFileStateId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "systemProgressEntryType" : {
+              "type" : "string"
+            },
+            "triggerType" : {
+              "$ref" : "#/components/schemas/TriggerType"
+            },
+            "triggeredBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/KeyDocumentAwareProgressEntry"
+        } ]
+      },
+      "Task" : {
+        "required" : [ "businessModule", "createdAt", "isOverdue", "modifiedAt", "procedureId", "summary", "taskId", "taskStatus", "taskType", "version" ],
+        "type" : "object",
+        "properties" : {
+          "assignedById" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "assigneeId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "isOverdue" : {
+            "type" : "boolean"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "taskId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "taskStatus" : {
+            "$ref" : "#/components/schemas/TaskStatus"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "TaskMetric" : {
+        "required" : [ "moreThanTwoOccurrencesCount", "noOccurrencesCount", "oneOccurrenceCount", "taskType", "twoOccurrencesCount" ],
+        "type" : "object",
+        "properties" : {
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "moreThanTwoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "noOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "oneOccurrenceCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "twoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TaskResponse" : {
+        "required" : [ "count", "tasks" ],
+        "type" : "object",
+        "properties" : {
+          "count" : {
+            "type" : "integer",
+            "description" : "total number of tasks for this query",
+            "format" : "int64"
+          },
+          "tasks" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Task"
+            }
+          }
+        }
+      },
+      "TaskStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "TaskType" : {
+        "type" : "string",
+        "enum" : [ "BOOK_APPOINTMENT", "PERFORM_SCHOOL_ENTRY_EXAMINATION", "INSPECTION_PLANNING", "INSPECTION_EXECUTION", "INSPECTION_REPORT", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      },
+      "Title" : {
+        "type" : "string",
+        "enum" : [ "DR", "PROF", "PROF_DR" ]
+      },
+      "TriggerType" : {
+        "type" : "string",
+        "enum" : [ "SYSTEM_AUTOMATIC", "EMPLOYEE", "CITIZEN" ]
+      },
+      "UpdateAppointmentTypeRequest" : {
+        "required" : [ "standardDurationInMinutes" ],
+        "type" : "object",
+        "properties" : {
+          "standardDurationInMinutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "User" : {
+        "required" : [ "enabled", "firstName", "lastName", "userId", "username" ],
+        "type" : "object",
+        "properties" : {
+          "email" : {
+            "type" : "string",
+            "description" : "The email address of a user.",
+            "example" : "example@mail.de"
+          },
+          "enabled" : {
+            "type" : "boolean",
+            "description" : "True, if the user can login",
+            "example" : false
+          },
+          "externalChatUsername" : {
+            "type" : "string",
+            "description" : "The chat username of the gematik TI-Messenger (matrix chat).",
+            "example" : "@username:server"
+          },
+          "firstName" : {
+            "type" : "string",
+            "description" : "The given name(s) of a user.",
+            "example" : "John"
+          },
+          "lastName" : {
+            "type" : "string",
+            "description" : "The last name of a user.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "type" : "string",
+            "description" : "The phone number of a user.",
+            "example" : "+491234567890"
+          },
+          "userId" : {
+            "type" : "string",
+            "description" : "The Id of the user.",
+            "format" : "uuid",
+            "example" : "UUID_3"
+          },
+          "username" : {
+            "type" : "string",
+            "description" : "The username which is displayed in the application and can be used for the login.",
+            "example" : "testuser"
+          }
+        }
+      },
+      "ValidateAppointmentBlockGroupResponse" : {
+        "required" : [ "userIdsWithEventConflicts", "userIdsWithoutEventConflicts" ],
+        "type" : "object",
+        "properties" : {
+          "userIdsWithEventConflicts" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "userIdsWithoutEventConflicts" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/backend/official-medical-service/openApi.yaml b/backend/official-medical-service/openApi.yaml
deleted file mode 100644
index de7a2ecb3..000000000
--- a/backend/official-medical-service/openApi.yaml
+++ /dev/null
@@ -1,5586 +0,0 @@
-# Copyright 2025 cronn GmbH
-# SPDX-License-Identifier: Apache-2.0
-
-openapi: 3.0.1
-info:
-  description: This is the api for the official medical service module
-  title: Official Medical Service Api
-  version: "0.1"
-servers:
-- url: http://localhost:8099
-paths:
-  /appointment-blocks/appointment-block-groups:
-    get:
-      operationId: getAppointmentBlockGroups
-      parameters:
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/AppointmentBlockSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAppointmentBlockGroupsResponse"
-          description: OK
-      summary: Get all appointment block groups.
-      tags:
-      - AppointmentBlock
-  /appointment-blocks/daily-appointment-block-groups:
-    post:
-      operationId: createDailyAppointmentBlocksForGroup
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CreateAppointmentBlockGroupResponse"
-          description: OK
-      summary: Create appointment group with blocks for week days.
-      tags:
-      - AppointmentBlock
-  /appointment-blocks/daily-appointment-block-groups/validate:
-    post:
-      operationId: validateDailyAppointmentBlocksForGroup
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ValidateAppointmentBlockGroupResponse"
-          description: OK
-      summary: Create appointment group with blocks for week days.
-      tags:
-      - AppointmentBlock
-  /appointment-blocks/free-appointments:
-    get:
-      operationId: getFreeAppointments
-      parameters:
-      - in: query
-        name: appointmentType
-        required: true
-        schema:
-          $ref: "#/components/schemas/AppointmentType"
-      - in: query
-        name: earliestDate
-        required: false
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: physicianId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetFreeAppointmentsResponse"
-          description: OK
-      summary: Get free appointments for an appointment type.
-      tags:
-      - AppointmentBlock
-  /appointment-types:
-    get:
-      operationId: getAppointmentTypes
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAppointmentTypesResponse"
-          description: OK
-      summary: Gets all Appointment Types
-      tags:
-      - AppointmentType
-  /appointment-types/{id}:
-    get:
-      operationId: getOneAppointmentType
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AppointmentTypeConfig"
-          description: OK
-      summary: Gets one Appointment Type by ID
-      tags:
-      - AppointmentType
-    put:
-      operationId: updateAppointmentType
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateAppointmentTypeRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AppointmentTypeConfig"
-          description: OK
-      summary: Modifies an existing Appointment Type
-      tags:
-      - AppointmentType
-  /approval-requests/{approvalRequestId}:
-    get:
-      operationId: getApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      tags:
-      - ApprovalRequest
-  /approval-requests/{approvalRequestId}/decision:
-    put:
-      operationId: decideApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/Decision"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - ApprovalRequest
-  /archiving/config:
-    get:
-      operationId: getArchivingConfiguration
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetArchivingConfigurationResponse"
-          description: OK
-      summary: Get archiving configuration
-      tags:
-      - Archiving
-  /archiving/procedures:
-    get:
-      operationId: getArchivableProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `closedAtDay` is set, only procedures are returned which were closed at that date
-          - If not submitted, no filtering takes place
-        in: query
-        name: closedAtDay
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If `defaultArchivingRelevance` is submitted, only procedures are returned which have one of the submitted default archiving relevances.
-          - If not submitted, no filtering takes place
-        in: query
-        name: defaultArchivingRelevance
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ArchivingRelevance"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CLOSED_AT`: Sorting by closedAt attribute
-          - `PROCEDURE_TYPE`: Sorting by procedureType attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetArchivableProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetArchivableProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetArchivableProceduresResponse"
-          description: OK
-      summary: Get archivable procedures
-      tags:
-      - Archiving
-  /archiving/procedures/bulk-update-archiving-relevance:
-    post:
-      operationId: bulkUpdateProceduresArchivingRelevance
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/BulkUpdateProceduresArchivingRelevanceRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/BulkUpdateProceduresArchivingRelevanceResponse"
-          description: OK
-      summary: Bulk update procedures archiving relevance
-      tags:
-      - Archiving
-  /archiving/relevant-procedures:
-    get:
-      operationId: getRelevantArchivableProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `closedAtDay` is set, only procedures are returned which were closed at that date
-          - If not submitted, no filtering takes place
-        in: query
-        name: closedAtDay
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If `exported` is true, only procedures are returned which have already been exported.
-          - If `exported` is false, only procedures are returned which have not been exported, yet.
-          - If not submitted, no filtering takes place
-        in: query
-        name: exported
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          The following sorting options are available:
-          - `CLOSED_AT`: Sorting by closedAt attribute
-          - `EXPORTED_AT`: Sorting by exportedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetRelevantArchivableProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetRelevantArchivableProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRelevantArchivableProceduresResponse"
-          description: OK
-      summary: Get relevant archivable procedures
-      tags:
-      - Archiving
-  /archiving/relevant-procedures/export:
-    post:
-      operationId: exportRelevantProcedures
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ExportArchivingRelevantProceduresRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - Archiving
-  /citizen-public/department-info:
-    get:
-      operationId: getDepartmentInfo
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetDepartmentInfoResponse"
-          description: OK
-      summary: Get department info.
-      tags:
-      - CitizenPublic
-  /citizen-public/opening-hours:
-    get:
-      operationId: getOpeningHours
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetOpeningHoursResponse"
-          description: OK
-      summary: Get opening hours.
-      tags:
-      - CitizenPublic
-  /employee/appointments/{id}/book:
-    patch:
-      operationId: bookAppointment
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/BookingInfo"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Create a booking for an appointment
-      tags:
-      - OmsAppointment
-  /employee/appointments/{id}/cancel:
-    patch:
-      operationId: cancelAppointment
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Cancel an appointment
-      tags:
-      - OmsAppointment
-  /employee/concerns:
-    get:
-      operationId: getAllConcerns
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetConcernsResponse"
-          description: OK
-      summary: Get all available concerns
-      tags:
-      - Concern
-  /employee/procedures:
-    get:
-      operationId: getAllEmployeeProcedures
-      parameters:
-      - in: query
-        name: assigned
-        required: false
-        schema:
-          type: boolean
-      - in: query
-        name: status
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: highPriority
-        required: false
-        schema:
-          type: boolean
-      - in: query
-        name: today
-        required: false
-        schema:
-          type: boolean
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/EmployeeOmsProcedureSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetEmployeeOmsProcedureOverviewResponse"
-          description: OK
-      summary: Get all oms procedures
-      tags:
-      - EmployeeOmsProcedure
-    post:
-      operationId: postEmployeeProcedure
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostEmployeeOmsProcedureRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: uuid
-          description: OK
-      summary: Save a new employee oms procedure
-      tags:
-      - EmployeeOmsProcedure
-  /employee/procedures/{id}:
-    delete:
-      operationId: abortDraftProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Abort draft oms procedure
-      tags:
-      - EmployeeOmsProcedure
-  /employee/procedures/{id}/accept-draft:
-    patch:
-      operationId: acceptDraftProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Accept draft oms procedure
-      tags:
-      - EmployeeOmsProcedure
-  /employee/procedures/{id}/appointment:
-    post:
-      operationId: postAppointment
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostOmsAppointmentRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: uuid
-          description: OK
-      summary: Create a new appointment
-      tags:
-      - EmployeeOmsProcedure
-  /employee/procedures/{id}/close:
-    patch:
-      operationId: closeOpenProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Close open oms procedure
-      tags:
-      - EmployeeOmsProcedure
-  /employee/procedures/{id}/concern:
-    patch:
-      operationId: updateOmsProcedureConcern
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchConcernRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Update concern of an oms procedure
-      tags:
-      - EmployeeOmsProcedure
-  /employee/procedures/{id}/details:
-    get:
-      operationId: getEmployeeProcedureDetails
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/EmployeeOmsProcedureDetails"
-          description: OK
-      summary: Get details of an oms procedure
-      tags:
-      - EmployeeOmsProcedure
-  /employee/procedures/{id}/facility:
-    patch:
-      operationId: patchFacility
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchEmployeeOmsProcedureFacilityRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Updates a facility
-      tags:
-      - EmployeeOmsProcedure
-    post:
-      operationId: postFacility
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostEmployeeOmsProcedureFacilityRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: uuid
-          description: OK
-      summary: Add facility to a draft oms procedure
-      tags:
-      - EmployeeOmsProcedure
-  /employee/procedures/{id}/header:
-    get:
-      operationId: getEmployeeProcedureHeader
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/EmployeeOmsProcedureHeader"
-          description: OK
-      summary: Get details of an oms procedure
-      tags:
-      - EmployeeOmsProcedure
-  /employee/procedures/{id}/physician:
-    patch:
-      operationId: patchPhysician
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchEmployeeOmsProcedurePhysicianRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: uuid
-          description: OK
-      summary: Updates the associated physician of a draft oms procedure
-      tags:
-      - EmployeeOmsProcedure
-  /employee/procedures/{id}/sync-facility:
-    put:
-      operationId: syncFacilityData
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SyncFacilityRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Synchronize facility data
-      tags:
-      - EmployeeOmsProcedure
-  /employee/procedures/{procedureId}/affected-person:
-    patch:
-      operationId: updateAffectedPerson
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchAffectedPersonRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Update affected person in an oms procedure
-      tags:
-      - EmployeeOmsProcedure
-  /employee/procedures/{procedureId}/sync-affected-person:
-    put:
-      operationId: syncAffectedPerson
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SyncAffectedPersonRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Synchronize affected person data
-      tags:
-      - EmployeeOmsProcedure
-  /files/{fileId}:
-    delete:
-      operationId: deleteFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Soft deletes the specified file
-      tags:
-      - File
-    get:
-      operationId: getFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/Image"
-                - $ref: "#/components/schemas/Mail"
-                - $ref: "#/components/schemas/Pdf"
-          description: OK
-      summary: Retrieves the meta data of the specified file
-      tags:
-      - File
-  /files/{fileId}/deletion-request:
-    post:
-      operationId: requestFileDeletion
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateApprovalRequestRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      summary: Request deletion of a file entry
-      tags:
-      - File
-  /files/{fileId}/download:
-    get:
-      operationId: downloadFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - File
-  /files/{fileId}/meta-data:
-    put:
-      operationId: updateFileMetaData
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              oneOf:
-              - $ref: "#/components/schemas/ImageMetaData"
-              - $ref: "#/components/schemas/MailMetaData"
-              - $ref: "#/components/schemas/PdfMetaData"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/Image"
-                - $ref: "#/components/schemas/Mail"
-                - $ref: "#/components/schemas/Pdf"
-          description: Updated file
-      summary: Updates the meta data of the specified file
-      tags:
-      - File
-  /files/{fileId}/meta-data/history:
-    get:
-      operationId: getMetaDataHistory
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetMetaDataHistoryResponse"
-          description: OK
-      tags:
-      - File
-  /gdpr-validation-tasks:
-    get:
-      operationId: getAllGdprValidationTasks
-      parameters:
-      - in: query
-        name: status
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprValidationTaskSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAllValidationTasksResponse"
-          description: OK
-      summary: Get all GDPR validation tasks
-      tags:
-      - GdprValidationTask
-    post:
-      operationId: addGdprValidationTask
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddGdprValidationTaskRequest"
-        required: true
-      responses:
-        "200":
-          description: Add a GDPR validation task
-      summary: Add a GDPR validation task
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/notification-banner:
-    get:
-      operationId: getGdprNotificationBanner
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprNotificationBannerResponse"
-          description: OK
-      summary: Get data for GDPR notification banner
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}:
-    delete:
-      operationId: deleteGdprValidationTaskAndDownloadPackages
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/DeleteDownloadPackagesRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Delete the GDPR validation task with gdprProcedureId and GDPR download
-        packages with ids from request
-      tags:
-      - GdprValidationTask
-    get:
-      operationId: getGdprValidationTask
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprValidationTaskResponse"
-          description: OK
-      summary: Get Gdpr Validation Task by Gdpr Procedure Id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures:
-    get:
-      operationId: getGdprValidationTaskDetails
-      parameters:
-      - description: The Id of the GDPR procedure.
-        in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprValidationTaskDetailsResponse"
-          description: OK
-      summary: Get a GDPR validation task by id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}:
-    delete:
-      operationId: deleteBusinessProcedure
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: businessProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Delete the businessProcedure with businessProcedureId for validationTask
-        with gdprProcedureId with type right of erasure
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}/downloadPackage:
-    post:
-      operationId: addDownloadPackage
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: businessProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Creates a downloadPackage for validationTask with gdprProcedureId with
-        the data from the procedure with businessProcedureId
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/close:
-    post:
-      operationId: closeGdprValidationTask
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Close a GDPR validation task
-      summary: Close a GDPR validation task
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/download-packages:
-    get:
-      operationId: getGdprDownloadPackagesInfo
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprDownloadPackagesInfoResponse"
-          description: OK
-      summary: Get approved Gdpr Download Packages by Gdpr Procedure Id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}:
-    get:
-      operationId: getGdprDownloadPackage
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: downloadId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get Gdpr Download Package by the gdprProcedureId and its downloadId
-      tags:
-      - GdprValidationTask
-  /inbox-procedures:
-    get:
-      description: |
-        Get all inbox procedures with filter, sort, and pagination options
-      operationId: getInboxProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `inboxProcedureType` is submitted, only inbox procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place.
-        in: query
-        name: inboxProcedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If true, inbox procedures which have no type are returned in addition to the types specified by 'inboxProcedureType'.
-          - If false or not submitted, inbox procedures which have no type are not returned.
-        in: query
-        name: includeUntyped
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          Filter logic:
-          - If `inboxProcedureStatus` is submitted, only inbox procedures are returned which have one of the submitted statuses.
-          - If not submitted, no filtering takes place.
-        in: query
-        name: inboxProcedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/InboxProcedureStatus"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CREATED_AT`: Sorting by createdAt attribute
-          - `MODIFIED_AT`: Sorting by modifiedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetInboxProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetInboxProceduresSortOrder"
-      - description: Number of the requested page
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      - description: Amount of requested inbox procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 25
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInboxProceduresResponse"
-          description: OK
-      summary: Get inbox procedures
-      tags:
-      - InboxProcedure
-    post:
-      description: |-
-        Creates an inbox procedure with an optional file upload.
-
-               Permitted file formats:
-                - Image formats: jpeg, png
-                - PDF formats: pdf/a
-                - Mail formats: eml
-      operationId: addInboxProcedure
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                createInboxProcedureRequest:
-                  $ref: "#/components/schemas/CreateInboxProcedureRequest"
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-              required:
-              - createInboxProcedureRequest
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InboxProcedure"
-          description: OK
-      summary: Add inbox procedure
-      tags:
-      - InboxProcedure
-  /inbox-procedures/{inboxProcedureId}:
-    get:
-      operationId: getInboxProcedure
-      parameters:
-      - in: path
-        name: inboxProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInboxProcedureResponse"
-          description: OK
-      summary: Get inbox procedure with detailed information
-      tags:
-      - InboxProcedure
-  /inbox-procedures/{inboxProcedureId}/inbox-procedure-status:
-    put:
-      operationId: updateInboxProcedureStatus
-      parameters:
-      - in: path
-        name: inboxProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InboxProcedureStatus"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InboxProcedure"
-          description: OK
-      summary: Update status of inbox procedure
-      tags:
-      - InboxProcedure
-  /procedure-metrics:
-    get:
-      operationId: getProcedureMetrics
-      parameters:
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureMetricsResponse"
-          description: the metrics of procedures
-      summary: Get procedure metrics for procedures created in the given time range
-      tags:
-      - Procedure
-  /procedures:
-    get:
-      description: |
-        GET operation for retrieving basic information of procedures for the procedure overview.
-      operationId: getProcedures
-      parameters:
-      - description: |
-          Only procedures are returned where the assigneeId of at least one task equals the `assignedToId`.
-          If not submitted, no filtering takes place.
-        in: query
-        name: assignedToId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: |
-          Filter logic:
-          - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CREATED_AT`: Sorting by createdAt attribute
-          - `MODIFIED_AT`: Sorting by modifiedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for user
-      tags:
-      - Procedure
-  /procedures/check-file-state-usage:
-    post:
-      operationId: checkFileStateUsage
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CheckFileStateUsageRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CheckFileStateUsageResponse"
-          description: OK
-      summary: Identify which file state IDs are still used by active procedures.
-      tags:
-      - Procedure
-  /procedures/recent:
-    get:
-      operationId: getRecentProcedures
-      parameters:
-      - in: query
-        name: userId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRecentProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for user
-      tags:
-      - Procedure
-  /procedures/recent/self:
-    get:
-      operationId: getSelfRecentProcedures
-      parameters:
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRecentProceduresResponse"
-          description: the current users recent procedures
-      summary: Get recent procedures for the current user
-      tags:
-      - Procedure
-  /procedures/search:
-    get:
-      operationId: searchProcedures
-      parameters:
-      - in: query
-        name: query
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresResponse"
-          description: OK
-      tags:
-      - Procedure
-  /procedures/{id}:
-    get:
-      operationId: getDetailedProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetDetailedProcedureResponse"
-          description: a single procedure with details
-      summary: Get a single procedure with details
-      tags:
-      - Procedure
-  /procedures/{id}/approval-requests:
-    get:
-      operationId: getApprovalRequests
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureApprovalRequestsResponse"
-          description: OK
-      summary: Get all approval requests related to this procedure
-      tags:
-      - Procedure
-  /procedures/{id}/files:
-    get:
-      description: |
-        This returns all relevant (highest version per keydocument type and non-deleted) files sorted by descending creation date.
-        That is:
-         * if an progress entry has a keydocument type set, then its files are only returned if it also has the highest keydocument version of the respective key document type.
-         * if an progress entry does not have a keydocument type, then its files are always returned.
-      operationId: getProcedureFileDetails
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureFileDetailsResponse"
-          description: OK
-      summary: Get relevant procedure files
-      tags:
-      - Procedure
-  /procedures/{procedureId}/progress-entries:
-    get:
-      operationId: getProgressEntries
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - description: Filter on progressEntryType
-        in: query
-        name: progressEntryType
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-          uniqueItems: true
-      - description: Filter on child class of progressEntry
-        in: query
-        name: progressEntryClass
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProgressEntryClass"
-          uniqueItems: true
-      - description: |
-          If `initiatedBy` is set with a `userId` then the following is returned:
-          * Only progressEntries with `createdBy`=`userId` in case `ManualProgressEntry` or `ProcessedInboxProgressEntry`
-          * Only progressEntries with `triggeredBy`=`userId` in case `SystemProgressEntry`
-        in: query
-        name: initiatedBy
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      - description: |
-          Filter on triggerType.
-          If this is set, only SystemProgressEntries are returned since only SystemProgressEntries have this attribute.
-        in: query
-        name: triggerType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TriggerType"
-          uniqueItems: true
-      - description: 'Sorting on either modifiedAt or createdAt '
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProgressEntrySortBy"
-      - description: Sorting order. Possible options  "ASC" for ascending and "DESC"
-          for descending.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProgressEntrySortOrder"
-      - description: Maximum number of elements to return
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Index of page to be returned
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProgressEntriesResponse"
-          description: OK
-      summary: Get list of procedure's progress entries
-      tags:
-      - ProgressEntry
-    post:
-      description: |-
-        Creates a manual progress entry with an optional file upload.
-
-               Permitted file formats:
-                - Image formats: jpeg, png
-                - PDF formats: pdf/a
-                - Mail formats: eml
-      operationId: addProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                createManualProgressEntryRequest:
-                  $ref: "#/components/schemas/CreateManualProgressEntryRequest"
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-              required:
-              - createManualProgressEntryRequest
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ManualProgressEntry"
-          description: OK
-      summary: Create a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}:
-    delete:
-      operationId: removeProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Remove a manual progress entry
-      tags:
-      - ProgressEntry
-    get:
-      operationId: getProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProgressEntryResponse"
-          description: OK
-      summary: Get a progress entry
-      tags:
-      - ProgressEntry
-    patch:
-      operationId: patchProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchManualProgressEntryRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ManualProgressEntry"
-          description: OK
-      summary: Modify a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}/deletion-request:
-    post:
-      operationId: requestProgressEntryDeletion
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateApprovalRequestRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      summary: Request deletion of a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}/history:
-    get:
-      operationId: getManualProgressEntryHistory
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetManualProgressEntryHistoryResponse"
-          description: OK
-      summary: Get the history of a manual progress entry
-      tags:
-      - ProgressEntry
-  /task-metrics:
-    get:
-      operationId: getTaskMetrics
-      parameters:
-      - in: query
-        name: procedureType
-        required: true
-        schema:
-          $ref: "#/components/schemas/ProcedureType"
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTaskMetricsResponse"
-          description: the metrics of a specific procedure type
-      summary: Get tasks metrics for a procedure type of a business module for procedures
-        created in the given time range
-      tags:
-      - Task
-  /tasks:
-    get:
-      operationId: getTasks
-      parameters:
-      - in: query
-        name: assigneeId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: assignedById
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      - in: query
-        name: taskTypes
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskType"
-          uniqueItems: true
-      - in: query
-        name: taskStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskStatus"
-          uniqueItems: true
-      - in: query
-        name: sortKey
-        required: true
-        schema:
-          $ref: "#/components/schemas/GetTasksSortBy"
-      - in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetTasksSortOrder"
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TaskResponse"
-          description: tasks
-      summary: Get tasks
-      tags:
-      - Task
-  /tasks/dashboard:
-    get:
-      operationId: getTasksForDashboard
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TaskResponse"
-          description: tasks
-      summary: Get tasks for the dashboard
-      tags:
-      - Task
-  /tasks/team-view:
-    get:
-      description: Returns all _open_ tasks per module group member.
-      operationId: getTasksByAssignee
-      parameters:
-      - description: |
-          If provided, `assignee` must be member of the module group.
-          If not provided, all tasks for all members of the module group are returned.
-        in: query
-        name: assigneeId
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTaskByUserResponse"
-          description: OK
-      tags:
-      - Task
-  /tasks/{taskId}/assignment:
-    put:
-      operationId: assignTask
-      parameters:
-      - in: path
-        name: taskId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AssignTaskRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Task"
-          description: OK
-      tags:
-      - Task
-  /tasks/{taskId}/self-assignment:
-    put:
-      operationId: selfAssignTask
-      parameters:
-      - in: path
-        name: taskId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SelfAssignTaskRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Task"
-          description: OK
-      tags:
-      - Task
-  /test-helper/archiving-job:
-    post:
-      operationId: runArchivingJob
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/audit-log-storage:
-    delete:
-      operationId: clearAuditLogStorageDirectory
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population/administrative:
-    post:
-      operationId: populateAdministrative
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/PostPopulateAdministrativeResponse"
-          description: OK
-      summary: Create administrative entities
-      tags:
-      - TestHelper
-  /test-helper/population/procedure:
-    post:
-      operationId: populateProcedure
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostPopulateProcedureRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/PostPopulateProcedureResponse"
-          description: OK
-      summary: Create a procedure and dependent entities
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-components:
-  schemas:
-    AbstractFile:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFileReference"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          createdAt:
-            type: string
-            format: date-time
-          createdBy:
-            type: string
-            format: uuid
-          fileName:
-            type: string
-          fileSizeBytes:
-            type: integer
-            format: int32
-          fileType:
-            $ref: "#/components/schemas/FileType"
-          locked:
-            type: boolean
-          modifiedAt:
-            type: string
-            format: date-time
-      - $ref: "#/components/schemas/ApprovalRequestEntity"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    AbstractFileReference:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        deletable:
-          type: boolean
-        deleted:
-          type: boolean
-        fileId:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - deletable
-      - deleted
-      - fileId
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    AddGdprValidationTaskRequest:
-      type: object
-      properties:
-        gdprProcedureId:
-          type: string
-          format: uuid
-        startedAt:
-          type: string
-          format: date-time
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - gdprProcedureId
-      - startedAt
-      - type
-    Address:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    AffectedPerson:
-      type: object
-      properties:
-        affectedPersonSync:
-          $ref: "#/components/schemas/AffectedPersonSync"
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dateOfBirth:
-          type: string
-          format: date
-        emailAddresses:
-          type: array
-          items:
-            type: string
-        firstName:
-          type: string
-          maxLength: 80
-          minLength: 0
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          maxLength: 120
-          minLength: 0
-        nameAtBirth:
-          type: string
-          maxLength: 40
-          minLength: 1
-        phoneNumbers:
-          type: array
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          maxLength: 50
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          maxLength: 119
-          minLength: 1
-        version:
-          type: integer
-          format: int64
-      required:
-      - contactAddress
-      - dateOfBirth
-      - firstName
-      - lastName
-      - version
-    AffectedPersonSync:
-      type: object
-      properties:
-        fileStateId:
-          type: string
-          format: uuid
-        outdated:
-          type: boolean
-        version:
-          type: integer
-          format: int64
-      required:
-      - fileStateId
-      - outdated
-      - version
-    Appointment:
-      type: object
-      description: Appointment of a procedure.
-      properties:
-        end:
-          type: string
-          format: date-time
-        start:
-          type: string
-          format: date-time
-      required:
-      - end
-      - start
-    AppointmentBlockSortKey:
-      type: string
-      enum:
-      - START
-      - END
-    AppointmentLocation:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-      required:
-      - id
-      - name
-    AppointmentPopulation:
-      type: object
-      properties:
-        key:
-          type: string
-        request:
-          $ref: "#/components/schemas/PostOmsAppointmentRequest"
-      required:
-      - key
-      - request
-    AppointmentState:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    AppointmentType:
-      type: string
-      enum:
-      - CONSULTATION
-      - VACCINATION
-      - REGULAR_EXAMINATION
-      - CAN_CHILD
-      - ENTRY_LEVEL
-      - SPECIAL_NEEDS
-      - PROOF_SUBMISSION
-      - HIV_STI_CONSULTATION
-      - SEX_WORK
-      - RESULTS_REVIEW
-      - OFFICIAL_MEDICAL_SERVICE
-    AppointmentTypeConfig:
-      type: object
-      properties:
-        appointmentTypeDto:
-          $ref: "#/components/schemas/AppointmentType"
-        id:
-          type: string
-          format: uuid
-        standardDurationInMinutes:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - appointmentTypeDto
-      - id
-      - standardDurationInMinutes
-    ApprovalRequest:
-      type: object
-      properties:
-        approvalRequestId:
-          type: string
-          format: uuid
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-          format: uuid
-        decidedAt:
-          type: string
-          format: date-time
-        decidedBy:
-          type: string
-          format: uuid
-        decision:
-          $ref: "#/components/schemas/Decision"
-        entity:
-          oneOf:
-          - $ref: "#/components/schemas/ManualProgressEntry"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        operation:
-          $ref: "#/components/schemas/Operation"
-        reason:
-          type: string
-        status:
-          $ref: "#/components/schemas/ApprovalRequestStatus"
-      required:
-      - approvalRequestId
-      - createdAt
-      - createdBy
-      - operation
-      - reason
-      - status
-    ApprovalRequestEntity:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    ApprovalRequestStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    ArchivingDetails:
-      type: object
-      properties:
-        archivingPeriodYears:
-          type: integer
-          format: int32
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-      required:
-      - archivingPeriodYears
-      - archivingRelevance
-    ArchivingRelevance:
-      type: string
-      enum:
-      - DEFAULT
-      - RELEVANT
-      - IRRELEVANT
-    ArchivingRelevanceSettings:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        defaultArchivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-      required:
-      - archivingRelevance
-      - defaultArchivingRelevance
-    AssignTaskRequest:
-      type: object
-      properties:
-        assignee:
-          type: string
-          format: uuid
-        dueAt:
-          type: string
-          format: date-time
-        taskVersion:
-          type: integer
-          format: int64
-      required:
-      - assignee
-      - taskVersion
-    BookingInfo:
-      type: object
-      properties:
-        bookingType:
-          $ref: "#/components/schemas/BookingType"
-        duration:
-          type: integer
-          format: int32
-        start:
-          type: string
-          format: date-time
-      required:
-      - bookingType
-      - duration
-      - start
-    BookingState:
-      type: string
-      enum:
-      - BOOKABLE
-      - BOOKED
-      - CANCELLED
-      - WITHDRAWN
-    BookingType:
-      type: string
-      enum:
-      - APPOINTMENT_BLOCK
-      - USER_DEFINED
-    BulkUpdateProceduresArchivingRelevanceRequest:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        procedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 200
-          minItems: 1
-          uniqueItems: true
-      required:
-      - archivingRelevance
-      - procedures
-    BulkUpdateProceduresArchivingRelevanceResponse:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        failedProcedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-        updatedProcedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      required:
-      - archivingRelevance
-      - failedProcedures
-      - updatedProcedures
-    BusinessModule:
-      type: string
-      enum:
-      - INSPECTION
-      - SCHOOL_ENTRY
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY
-      - DENTAL
-      - OFFICIAL_MEDICAL_SERVICE
-    BusinessProcedureInclusionStatus:
-      type: string
-      enum:
-      - INCLUDED
-      - UNDECIDED
-    BusinessProcedureWithInclusionStatus:
-      type: object
-      properties:
-        businessProcedure:
-          $ref: "#/components/schemas/Procedure"
-        inclusionStatus:
-          $ref: "#/components/schemas/BusinessProcedureInclusionStatus"
-      required:
-      - businessProcedure
-      - inclusionStatus
-    CheckFileStateUsageRequest:
-      type: object
-      properties:
-        fileStatesIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-      required:
-      - fileStatesIds
-    CheckFileStateUsageResponse:
-      type: object
-      properties:
-        inUse:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - inUse
-    Concern:
-      type: object
-      properties:
-        categoryNameDe:
-          type: string
-        categoryNameEn:
-          type: string
-        descriptionDe:
-          type: string
-        descriptionEn:
-          type: string
-        highPriority:
-          type: boolean
-        nameDe:
-          type: string
-        nameEn:
-          type: string
-        version:
-          type: integer
-          format: int64
-      required:
-      - categoryNameDe
-      - categoryNameEn
-      - descriptionDe
-      - descriptionEn
-      - highPriority
-      - nameDe
-      - nameEn
-      - version
-    ConcernCategoryConfig:
-      type: object
-      properties:
-        concerns:
-          type: array
-          items:
-            $ref: "#/components/schemas/ConcernConfig"
-        nameDe:
-          type: string
-        nameEn:
-          type: string
-      required:
-      - concerns
-      - nameDe
-      - nameEn
-    ConcernConfig:
-      type: object
-      properties:
-        descriptionDe:
-          type: string
-        descriptionEn:
-          type: string
-        highPriority:
-          type: boolean
-        nameDe:
-          type: string
-        nameEn:
-          type: string
-      required:
-      - descriptionDe
-      - descriptionEn
-      - highPriority
-      - nameDe
-      - nameEn
-    ConcernTestDataConfig:
-      type: string
-      enum:
-      - EXAMINATION_ELIGIBILITY
-      - CERTIFICATE_FOR_CALL_OF_DUTY
-      - PRIORITIZATION_OF_CIVIL_SERVANTS
-      - EARLY_RETIREMENT
-      - REVIEW_OF_LONGER_SICK_NOTES
-    ContactDetails:
-      type: object
-      properties:
-        address:
-          $ref: "#/components/schemas/InboxProcedureAddress"
-        contactType:
-          $ref: "#/components/schemas/ContactType"
-        dateOfBirth:
-          type: string
-          format: date
-        emailAddress:
-          type: string
-        facilityName:
-          type: string
-        firstName:
-          type: string
-        lastName:
-          type: string
-        phoneNumber:
-          type: string
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          $ref: "#/components/schemas/Title"
-      required:
-      - contactType
-      - salutation
-    ContactType:
-      type: string
-      enum:
-      - PRIVATE_PERSON
-      - FACILITY
-    CountryCode:
-      type: string
-      description: "List of country codes in ISO 3166-1 alpha-2 format. With custom\
-        \ extensions for stateless, non-standard countries, and unknown countries."
-      enum:
-      - AD
-      - AE
-      - AF
-      - AG
-      - AI
-      - AL
-      - AM
-      - AO
-      - AQ
-      - AR
-      - AS
-      - AT
-      - AU
-      - AW
-      - AX
-      - AZ
-      - BA
-      - BB
-      - BD
-      - BE
-      - BF
-      - BG
-      - BH
-      - BI
-      - BJ
-      - BL
-      - BM
-      - BN
-      - BO
-      - BQ
-      - BR
-      - BS
-      - BT
-      - BV
-      - BW
-      - BY
-      - BZ
-      - CA
-      - CC
-      - CD
-      - CF
-      - CG
-      - CH
-      - CI
-      - CK
-      - CL
-      - CM
-      - CN
-      - CO
-      - CR
-      - CU
-      - CV
-      - CW
-      - CX
-      - CY
-      - CZ
-      - DE
-      - DJ
-      - DK
-      - DM
-      - DO
-      - DZ
-      - EC
-      - EE
-      - EG
-      - EH
-      - ER
-      - ES
-      - ET
-      - FI
-      - FJ
-      - FK
-      - FM
-      - FO
-      - FR
-      - GA
-      - GB
-      - GD
-      - GE
-      - GF
-      - GG
-      - GH
-      - GI
-      - GL
-      - GM
-      - GN
-      - GP
-      - GQ
-      - GR
-      - GS
-      - GT
-      - GU
-      - GW
-      - GY
-      - HK
-      - HM
-      - HN
-      - HR
-      - HT
-      - HU
-      - ID
-      - IE
-      - IL
-      - IM
-      - IN
-      - IO
-      - IQ
-      - IR
-      - IS
-      - IT
-      - JE
-      - JM
-      - JO
-      - JP
-      - KE
-      - KG
-      - KH
-      - KI
-      - KM
-      - KN
-      - KP
-      - KR
-      - KW
-      - KY
-      - KZ
-      - LA
-      - LB
-      - LC
-      - LI
-      - LK
-      - LR
-      - LS
-      - LT
-      - LU
-      - LV
-      - LY
-      - MA
-      - MC
-      - MD
-      - ME
-      - MF
-      - MG
-      - MH
-      - MK
-      - ML
-      - MM
-      - MN
-      - MO
-      - MP
-      - MQ
-      - MR
-      - MS
-      - MT
-      - MU
-      - MV
-      - MW
-      - MX
-      - MY
-      - MZ
-      - NA
-      - NC
-      - NE
-      - NF
-      - NG
-      - NI
-      - NL
-      - "NO"
-      - NP
-      - NR
-      - NU
-      - NZ
-      - OM
-      - PA
-      - PE
-      - PF
-      - PG
-      - PH
-      - PK
-      - PL
-      - PM
-      - PN
-      - PR
-      - PS
-      - PT
-      - PW
-      - PY
-      - QA
-      - RE
-      - RO
-      - RS
-      - RU
-      - RW
-      - SA
-      - SB
-      - SC
-      - SD
-      - SE
-      - SG
-      - SH
-      - SI
-      - SJ
-      - SK
-      - SL
-      - SM
-      - SN
-      - SO
-      - SR
-      - SS
-      - ST
-      - SV
-      - SX
-      - SY
-      - SZ
-      - TC
-      - TD
-      - TF
-      - TG
-      - TH
-      - TJ
-      - TK
-      - TL
-      - TM
-      - TN
-      - TO
-      - TR
-      - TT
-      - TV
-      - TW
-      - TZ
-      - UA
-      - UG
-      - UM
-      - US
-      - UY
-      - UZ
-      - VA
-      - VC
-      - VE
-      - VG
-      - VI
-      - VN
-      - VU
-      - WF
-      - WS
-      - YE
-      - YT
-      - ZA
-      - ZM
-      - ZW
-      - XK
-      - UNKNOWN
-      - STATELESS
-    CreateAppointmentBlockGroupResponse:
-      type: object
-      properties:
-        appointmentBlockIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-        id:
-          type: string
-          format: uuid
-          description: Id of the AppointmentBlockGroup.
-          example: a765534d-760a-417d-8639-5e2fd59246e2
-      required:
-      - appointmentBlockIds
-      - id
-    CreateApprovalRequestRequest:
-      type: object
-      properties:
-        reason:
-          type: string
-      required:
-      - reason
-    CreateDailyAppointmentBlock:
-      type: object
-      properties:
-        daysOfWeek:
-          type: array
-          items:
-            $ref: "#/components/schemas/DayOfWeek"
-        end:
-          type: string
-          format: date-time
-          description: Time at which the appointment block ends.
-          example: 2016-01-01T01:45:00.123456+01:00
-        start:
-          type: string
-          format: date-time
-          description: Time at which the appointment block starts.
-          example: 2016-01-01T01:00:00.123456+01:00
-      required:
-      - daysOfWeek
-      - end
-      - start
-    CreateDailyAppointmentBlockGroupRequest:
-      type: object
-      properties:
-        appointmentBlocks:
-          type: array
-          items:
-            $ref: "#/components/schemas/CreateDailyAppointmentBlock"
-        consultants:
-          type: array
-          items:
-            type: string
-            format: uuid
-        locationId:
-          type: string
-          format: uuid
-        mfas:
-          type: array
-          items:
-            type: string
-            format: uuid
-        parallelExaminations:
-          type: integer
-          format: int32
-          maximum: 10
-          minimum: 1
-        physicians:
-          type: array
-          items:
-            type: string
-            format: uuid
-        type:
-          $ref: "#/components/schemas/AppointmentType"
-      required:
-      - appointmentBlocks
-      - parallelExaminations
-      - type
-    CreateInboxProcedureRequest:
-      type: object
-      properties:
-        contactDetails:
-          $ref: "#/components/schemas/ContactDetails"
-        inboxProcedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        inboxProgressEntry:
-          $ref: "#/components/schemas/CreateInboxProgressEntry"
-      required:
-      - contactDetails
-      - inboxProgressEntry
-    CreateInboxProgressEntry:
-      type: object
-      properties:
-        inboxProgressEntryType:
-          $ref: "#/components/schemas/InboxProgressEntryType"
-        messageText:
-          type: string
-        subject:
-          type: string
-      required:
-      - inboxProgressEntryType
-    CreateManualProgressEntryRequest:
-      type: object
-      properties:
-        keyDocumentType:
-          type: string
-        manualProgressEntryType:
-          $ref: "#/components/schemas/ManualProgressEntryType"
-        note:
-          type: string
-      required:
-      - manualProgressEntryType
-    DataOrigin:
-      type: string
-      description: "A list of possible origins of Persons and Facility in the Central\
-        \ Files. EDIT will only be set automatically on changes. EXTERNAL is for entries\
-        \ that come, e.g., from the citizen portal. IMPORT is reserved for automatic\
-        \ imports. MANUAL shall be set for every creation or connection done by an\
-        \ employee."
-      enum:
-      - MANUAL
-      - EXTERNAL
-      - IMPORT
-      - EDIT
-    DayOfWeek:
-      type: string
-      enum:
-      - MONDAY
-      - TUESDAY
-      - WEDNESDAY
-      - THURSDAY
-      - FRIDAY
-      - SATURDAY
-      - SUNDAY
-    Decision:
-      type: string
-      enum:
-      - GRANTED
-      - DENIED
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    DeleteDownloadPackagesRequest:
-      type: object
-      properties:
-        downloadIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - downloadIds
-    DetailedFacility:
-      type: object
-      properties:
-        facilityFileState:
-          $ref: "#/components/schemas/GetFacilityFileStateResponse"
-        facilityType:
-          $ref: "#/components/schemas/FacilityType"
-      required:
-      - facilityFileState
-      - facilityType
-    DetailedPerson:
-      type: object
-      properties:
-        person:
-          $ref: "#/components/schemas/GetPersonFileStateResponse"
-        personType:
-          $ref: "#/components/schemas/PersonType"
-      required:
-      - person
-      - personType
-    DetailedTask:
-      type: object
-      properties:
-        assignedByName:
-          type: string
-        assigneeName:
-          type: string
-        task:
-          $ref: "#/components/schemas/Task"
-      required:
-      - task
-    DomesticAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          addressAddition:
-            type: string
-            description: A descriptive addition to the address.
-            example: 2.OG links
-            maxLength: 100
-            minLength: 1
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          houseNumber:
-            type: string
-            description: "The house number of the address, including extensions."
-            example: 1a
-            maxLength: 11
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          street:
-            type: string
-            description: "The name of the street of the address, without the house\
-              \ number."
-            example: Beispielweg
-            maxLength: 55
-            minLength: 1
-      description: A usual domestic address.
-      required:
-      - city
-      - country
-      - postalCode
-      - street
-    EmployeeOmsProcedureDetails:
-      type: object
-      properties:
-        affectedPerson:
-          $ref: "#/components/schemas/AffectedPerson"
-        appointments:
-          type: array
-          items:
-            $ref: "#/components/schemas/OmsAppointment"
-        concern:
-          $ref: "#/components/schemas/Concern"
-        facility:
-          $ref: "#/components/schemas/Facility"
-        id:
-          type: string
-          format: uuid
-        physician:
-          $ref: "#/components/schemas/User"
-        status:
-          $ref: "#/components/schemas/ProcedureStatus"
-      required:
-      - affectedPerson
-      - appointments
-      - id
-      - status
-    EmployeeOmsProcedureHeader:
-      type: object
-      properties:
-        dateOfBirth:
-          type: string
-          format: date
-        firstName:
-          type: string
-        id:
-          type: string
-          format: uuid
-        lastName:
-          type: string
-        status:
-          $ref: "#/components/schemas/ProcedureStatus"
-      required:
-      - id
-      - status
-    EmployeeOmsProcedureOverview:
-      type: object
-      properties:
-        concern:
-          $ref: "#/components/schemas/Concern"
-        dateOfBirth:
-          type: string
-          format: date
-        facilityName:
-          type: string
-        firstName:
-          type: string
-        id:
-          type: string
-          format: uuid
-        lastName:
-          type: string
-        nextAppointment:
-          type: string
-          format: date-time
-        physicianName:
-          type: string
-        status:
-          $ref: "#/components/schemas/ProcedureStatus"
-      required:
-      - id
-      - status
-    EmployeeOmsProcedureSortKey:
-      type: string
-      enum:
-      - ID
-      - FIRSTNAME
-      - LASTNAME
-      - DATEOFBIRTH
-      - FACILITYNAME
-      - PHYSICIANNAME
-      - STATUS
-      - NEXTAPPOINTMENT
-    ExportArchivingRelevantProceduresRequest:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-          uniqueItems: true
-      required:
-      - procedures
-    Facility:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        emailAddresses:
-          type: array
-          items:
-            type: string
-        facilitySync:
-          $ref: "#/components/schemas/FacilitySync"
-        name:
-          type: string
-        phoneNumbers:
-          type: array
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        version:
-          type: integer
-          format: int64
-      required:
-      - name
-      - version
-    FacilityContactPerson:
-      type: object
-      properties:
-        emailAddress:
-          type: string
-          description: The email addresses of the Contact Person.
-          example: mail1@address.de
-          maxLength: 254
-          minLength: 6
-        firstName:
-          type: string
-          description: The given name(s) of the Contact Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: The last name of the Contact Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        phoneNumber:
-          type: string
-          description: The phone number of the Contact Person.
-          example: "+491234567890"
-          maxLength: 23
-          minLength: 1
-        role:
-          type: string
-          description: The role of the Contact Person in the Facility.
-          example: CEO
-          maxLength: 255
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of the Contact Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - lastName
-    FacilitySync:
-      type: object
-      properties:
-        fileStateId:
-          type: string
-          format: uuid
-        outdated:
-          type: boolean
-        version:
-          type: integer
-          format: int64
-      required:
-      - fileStateId
-      - outdated
-      - version
-    FacilityType:
-      type: string
-      enum:
-      - SCHOOL
-      - INSPECTION
-      - DAYCARE
-      - HOSPITAL
-      - MEDICAL_PRACTICE
-      - REFUGEE_ACCOMMODATION
-      - OTHER
-    FileMetaData:
-      type: object
-      properties:
-        description:
-          type: string
-    FileType:
-      type: string
-      enum:
-      - JPEG
-      - PNG
-      - PDF
-      - EML
-    GdprDownloadPackageInfo:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-      required:
-      - id
-    GdprFacility:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          dataTransmitterPseudonymId:
-            type: string
-            description: The 'DatenübermittlerPseudonymId' of the MUK user
-            example: du-986b2b54ab89cf4ed674ad8c3126b966b54d4872
-          emailAddress:
-            type: string
-            description: The email addresses of the Facility.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          name:
-            type: string
-            description: The name of the Facility.
-            example: 123 Example Facility
-            maxLength: 300
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Facility.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 1
-      required:
-      - address
-      - name
-    GdprIdentificationData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    GdprPerson:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          bpk2:
-            type: string
-            description: The bpk2 of the BundId user
-            example: VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0
-          dateOfBirth:
-            type: string
-            format: date
-            description: The date of birth of the Person.
-            example: 2000-01-01
-          emailAddress:
-            type: string
-            description: The email addresses of the Person.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          firstName:
-            type: string
-            description: The given name(s) of the Person.
-            example: John
-            maxLength: 80
-            minLength: 1
-          lastName:
-            type: string
-            description: The last name of the Person.
-            example: Doe
-            maxLength: 120
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Person.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 0
-          salutation:
-            $ref: "#/components/schemas/Salutation"
-          title:
-            type: string
-            description: The academic title of the Person.
-            example: Prof. Dr.
-            maxLength: 119
-            minLength: 1
-      required:
-      - address
-      - dateOfBirth
-      - firstName
-      - lastName
-    GdprProcedureType:
-      type: string
-      description: A list of types of GDPR procedures.
-      enum:
-      - RIGHT_OF_ACCESS
-      - RIGHT_TO_ERASURE
-    GdprValidationTask:
-      type: object
-      properties:
-        dueDate:
-          type: string
-          format: date
-        gdprProcedureId:
-          type: string
-          format: uuid
-        identificationData:
-          oneOf:
-          - $ref: "#/components/schemas/GdprFacility"
-          - $ref: "#/components/schemas/GdprPerson"
-        status:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - dueDate
-      - gdprProcedureId
-      - identificationData
-      - status
-      - type
-    GdprValidationTaskSortKey:
-      type: string
-      enum:
-      - CREATED_AT
-    GdprValidationTaskStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    Gender:
-      type: string
-      description: The list of genders as specified in the German Personenstandsgesetz.
-      enum:
-      - NOT_SPECIFIED
-      - DIVERSE
-      - FEMALE
-      - MALE
-    GenericFileReference:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFileReference"
-      - type: object
-        properties:
-          '@type':
-            type: string
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - deletable
-      - deleted
-      - fileId
-    GetAllValidationTasksResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/GdprValidationTask"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          minimum: 0
-      required:
-      - elements
-      - totalNumberOfElements
-    GetAppointmentBlock:
-      type: object
-      description: A planned appointment block. Appointment blocks offer a set of
-        bookable appointments at different times within the timeframe of the appointment
-        block.
-      properties:
-        end:
-          type: string
-          format: date-time
-          description: Time at which the appointment block ends.
-          example: 2016-01-01T01:45:00.123456+01:00
-        id:
-          type: string
-          format: uuid
-          description: Id of the AppointmentBlock.
-          example: a765534d-760a-417d-8639-5e2fd59246e2
-        numberOfBookedAppointments:
-          type: integer
-          format: int64
-          minimum: 0
-        numberOfFreeAppointments:
-          type: integer
-          format: int64
-          minimum: 0
-        start:
-          type: string
-          format: date-time
-          description: Time at which the appointment block starts.
-          example: 2016-01-01T01:00:00.123456+01:00
-      required:
-      - end
-      - id
-      - numberOfBookedAppointments
-      - numberOfFreeAppointments
-      - start
-    GetAppointmentBlockGroup:
-      type: object
-      properties:
-        appointmentBlocks:
-          type: array
-          items:
-            $ref: "#/components/schemas/GetAppointmentBlock"
-        id:
-          type: string
-          format: uuid
-          description: Id of the AppointmentBlockGroup.
-          example: a765534d-760a-417d-8639-5e2fd59246e2
-        location:
-          $ref: "#/components/schemas/AppointmentLocation"
-        parallelExaminations:
-          type: integer
-          format: int32
-          maximum: 10
-          minimum: 1
-        type:
-          $ref: "#/components/schemas/AppointmentType"
-      required:
-      - appointmentBlocks
-      - id
-      - parallelExaminations
-      - type
-    GetAppointmentBlockGroupsResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/GetAppointmentBlockGroup"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-      required:
-      - elements
-      - totalNumberOfElements
-    GetAppointmentTypesResponse:
-      type: object
-      properties:
-        appointmentTypeConfigDtos:
-          type: array
-          items:
-            $ref: "#/components/schemas/AppointmentTypeConfig"
-      required:
-      - appointmentTypeConfigDtos
-    GetArchivableProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetArchivableProceduresSortBy:
-      type: string
-      default: CLOSED_AT
-      enum:
-      - CLOSED_AT
-      - PROCEDURE_TYPE
-    GetArchivableProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetArchivingConfigurationResponse:
-      type: object
-      properties:
-        archivingDetails:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/ArchivingDetails"
-        gracePeriodMonths:
-          type: integer
-          format: int32
-      required:
-      - archivingDetails
-      - gracePeriodMonths
-    GetConcernsResponse:
-      type: object
-      properties:
-        categories:
-          type: array
-          items:
-            $ref: "#/components/schemas/ConcernCategoryConfig"
-      required:
-      - categories
-    GetDepartmentInfoResponse:
-      type: object
-      properties:
-        abbreviation:
-          type: string
-          description: The abbreviation of the name of the department
-          example: LTG
-        city:
-          type: string
-          description: The name of the city where the department is located
-          example: Berlin
-        country:
-          $ref: "#/components/schemas/CountryCode"
-        email:
-          type: string
-          description: The email address of the department
-          example: mail@address.de
-        homepage:
-          type: string
-          description: "The domain of the department's official homepage, excluding\
-            \ protocols"
-          example: department-homepage.de
-        houseNumber:
-          type: string
-          description: "The house number at the department's address, including any\
-            \ extensions or suffixes"
-          example: 1b
-        location:
-          $ref: "#/components/schemas/Location"
-        name:
-          type: string
-          description: The name of the department
-          example: Gesundheitsamt Landkreis Testgebiet
-        phoneNumber:
-          type: string
-          description: The primary contact telephone number for the department
-          example: "+491234567890"
-        postalCode:
-          type: string
-          description: The postal code for the department’s address
-          example: "12345"
-        street:
-          type: string
-          description: "The street name for the department’s address, not including\
-            \ the house number"
-          example: Beispielweg
-      required:
-      - city
-      - country
-      - email
-      - homepage
-      - houseNumber
-      - location
-      - name
-      - phoneNumber
-      - postalCode
-      - street
-    GetDetailedProcedureResponse:
-      type: object
-      properties:
-        facilities:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedFacility"
-        persons:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedPerson"
-        procedure:
-          $ref: "#/components/schemas/Procedure"
-        tasks:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedTask"
-      required:
-      - facilities
-      - persons
-      - procedure
-      - tasks
-    GetEmployeeOmsProcedureOverviewResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/EmployeeOmsProcedureOverview"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-      required:
-      - elements
-      - totalNumberOfElements
-    GetFacilityFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        id:
-          type: string
-          format: uuid
-          description: Id of the Facility.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referenceFacility
-            it is connected to.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-      required:
-      - contactPersons
-      - dataOrigin
-      - emailAddresses
-      - id
-      - name
-      - phoneNumbers
-      - referenceVersion
-    GetFreeAppointmentsResponse:
-      type: object
-      properties:
-        appointments:
-          type: array
-          items:
-            $ref: "#/components/schemas/Appointment"
-      required:
-      - appointments
-    GetGdprDownloadPackagesInfoResponse:
-      type: object
-      properties:
-        downloadPackages:
-          type: array
-          items:
-            $ref: "#/components/schemas/GdprDownloadPackageInfo"
-      required:
-      - downloadPackages
-    GetGdprNotificationBannerResponse:
-      type: object
-      properties:
-        earliestDueDate:
-          type: string
-          format: date
-        openValidationTasksCount:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - openValidationTasksCount
-    GetGdprValidationTaskDetailsResponse:
-      type: object
-      properties:
-        proceduresWithStatus:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessProcedureWithInclusionStatus"
-        validationTask:
-          $ref: "#/components/schemas/GdprValidationTask"
-      required:
-      - proceduresWithStatus
-      - validationTask
-    GetGdprValidationTaskResponse:
-      type: object
-      properties:
-        status:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-      required:
-      - status
-    GetInboxProcedureResponse:
-      type: object
-      properties:
-        inboxProcedure:
-          $ref: "#/components/schemas/InboxProcedure"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - inboxProcedure
-      - resolvedUsers
-    GetInboxProceduresResponse:
-      type: object
-      properties:
-        inboxProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/InboxProcedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - inboxProcedures
-      - totalElements
-      - totalPages
-    GetInboxProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - CREATED_AT
-    GetInboxProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetManualProgressEntryHistoryResponse:
-      type: object
-      properties:
-        manualProgressEntryHistory:
-          type: array
-          items:
-            $ref: "#/components/schemas/ManualProgressEntryHistory"
-    GetMetaDataHistoryResponse:
-      type: object
-      properties:
-        metaDataHistory:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ImageMetaDataHistory"
-            - $ref: "#/components/schemas/MailMetaDataHistory"
-            - $ref: "#/components/schemas/PdfMetaDataHistory"
-    GetOpeningHoursResponse:
-      type: object
-      properties:
-        de:
-          type: array
-          items:
-            type: string
-        en:
-          type: array
-          items:
-            type: string
-      required:
-      - de
-      - en
-    GetPersonFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        dateOfBirth:
-          type: string
-          format: date
-          description: The date of birth of the Person.
-          example: 2000-01-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Person.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: The given name(s) of the Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        id:
-          type: string
-          format: uuid
-          description: Id of the Person.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        lastName:
-          type: string
-          description: The last name of the Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          description: The last name at birth of the Person.
-          example: Smith
-          maxLength: 40
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referencePerson
-            it is connected to. Set to 'null' if unchecked.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Person.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          description: The place of birth (without country) of the Person.
-          example: Berlin
-          maxLength: 50
-          minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - dataOrigin
-      - dateOfBirth
-      - emailAddresses
-      - firstName
-      - gender
-      - id
-      - lastName
-      - phoneNumbers
-      - referenceVersion
-      - salutation
-    GetProcedureApprovalRequestsResponse:
-      type: object
-      properties:
-        approvalRequests:
-          type: array
-          items:
-            $ref: "#/components/schemas/ApprovalRequest"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - approvalRequests
-      - resolvedUsers
-    GetProcedureFileDetailsResponse:
-      type: object
-      properties:
-        fileDetails:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProgressEntryReferenceFilePair"
-        procedureId:
-          type: string
-          format: uuid
-      required:
-      - fileDetails
-      - procedureId
-    GetProcedureMetricsResponse:
-      type: object
-      properties:
-        procedureMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureMetric"
-      required:
-      - procedureMetrics
-    GetProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - MODIFIED_AT
-      - CREATED_AT
-    GetProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetProgressEntriesResponse:
-      type: object
-      properties:
-        progressEntries:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ManualProgressEntry"
-            - $ref: "#/components/schemas/ProcessedInboxProgressEntry"
-            - $ref: "#/components/schemas/SystemProgressEntry"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - progressEntries
-      - totalElements
-      - totalPages
-    GetProgressEntryResponse:
-      type: object
-      properties:
-        progressEntry:
-          oneOf:
-          - $ref: "#/components/schemas/ManualProgressEntry"
-          - $ref: "#/components/schemas/ProcessedInboxProgressEntry"
-          - $ref: "#/components/schemas/SystemProgressEntry"
-        relatedKeyDocumentProgressEntries:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ManualProgressEntry"
-            - $ref: "#/components/schemas/SystemProgressEntry"
-      required:
-      - progressEntry
-      - relatedKeyDocumentProgressEntries
-    GetRecentProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-      required:
-      - procedures
-    GetRelevantArchivableProceduresResponse:
-      type: object
-      properties:
-        fileSizeBytes:
-          type: integer
-          format: int32
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - fileSizeBytes
-      - procedures
-      - totalElements
-      - totalPages
-    GetRelevantArchivableProceduresSortBy:
-      type: string
-      default: CLOSED_AT
-      enum:
-      - CLOSED_AT
-      - EXPORTED_AT
-    GetRelevantArchivableProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetTaskByUserResponse:
-      type: object
-      properties:
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-        tasksByUser:
-          type: object
-          additionalProperties:
-            type: array
-            items:
-              $ref: "#/components/schemas/Task"
-      required:
-      - resolvedUsers
-      - tasksByUser
-    GetTaskMetricsResponse:
-      type: object
-      properties:
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedProcedureCount:
-          type: integer
-          format: int64
-        fastestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        slowestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        taskMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskMetric"
-      required:
-      - businessModule
-      - closedProcedureCount
-      - fastestProcedures
-      - procedureType
-      - slowestProcedures
-      - taskMetrics
-    GetTasksSortBy:
-      type: string
-      enum:
-      - PRIORITY
-      - CREATED_AT
-      - MODIFIED_AT
-    GetTasksSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    Image:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/ImageMetaData"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    ImageMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          createdDate:
-            type: string
-            format: date-time
-    ImageMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          imageMetaData:
-            $ref: "#/components/schemas/ImageMetaData"
-      required:
-      - changedAt
-    InboxProcedure:
-      type: object
-      properties:
-        closedAt:
-          type: string
-          format: date-time
-        contactDetails:
-          $ref: "#/components/schemas/ContactDetails"
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-          format: uuid
-        inboxProcedureId:
-          type: string
-          format: uuid
-        inboxProcedureStatus:
-          $ref: "#/components/schemas/InboxProcedureStatus"
-        inboxProcedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        inboxProgressEntry:
-          $ref: "#/components/schemas/InboxProgressEntry"
-      required:
-      - contactDetails
-      - createdAt
-      - createdBy
-      - inboxProcedureId
-      - inboxProcedureStatus
-      - inboxProgressEntry
-    InboxProcedureAddress:
-      type: object
-      properties:
-        addressAddition:
-          type: string
-        city:
-          type: string
-        country:
-          type: string
-        houseNumber:
-          type: string
-        postalCode:
-          type: string
-        postboxNumber:
-          type: integer
-          format: int32
-        street:
-          type: string
-    InboxProcedureStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    InboxProgressEntry:
-      type: object
-      properties:
-        fileReference:
-          oneOf:
-          - $ref: "#/components/schemas/GenericFileReference"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        inboxProgressEntryId:
-          type: string
-          format: uuid
-        inboxProgressEntryType:
-          $ref: "#/components/schemas/InboxProgressEntryType"
-        messageText:
-          type: string
-        subject:
-          type: string
-      required:
-      - inboxProgressEntryId
-      - inboxProgressEntryType
-    InboxProgressEntryType:
-      type: string
-      enum:
-      - LETTER
-      - PHONE_CALL
-      - EMAIL
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    KeyDocumentAwareProgressEntry:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        keyDocumentType:
-          type: string
-        keyDocumentVersion:
-          type: integer
-          format: int32
-      required:
-      - '@type'
-    Location:
-      type: object
-      description: Location defined by latitude and longitude.
-      properties:
-        latitude:
-          type: number
-          format: double
-          description: Geographic coordinate that specifies the north–south angular
-            location of a point on the surface of the Earth.
-          example: 52.51627
-        longitude:
-          type: number
-          format: double
-          description: Geographic coordinate that specifies the east–west angular
-            position of a point on the surface of the Earth.
-          example: 13.377703
-      required:
-      - latitude
-      - longitude
-    Mail:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/MailMetaData"
-          removedInvalidAttachments:
-            type: integer
-            format: int32
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-      - removedInvalidAttachments
-    MailMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          mailFrom:
-            type: string
-          mailTo:
-            type: string
-          messageText:
-            type: string
-          sentDate:
-            type: string
-            format: date-time
-          subject:
-            type: string
-      required:
-      - mailFrom
-      - mailTo
-      - messageText
-      - sentDate
-      - subject
-    MailMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          mailMetaData:
-            $ref: "#/components/schemas/MailMetaData"
-      required:
-      - changedAt
-    ManualProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          createdByUserFirstName:
-            type: string
-          createdByUserLastName:
-            type: string
-          keyDocumentType:
-            type: string
-          keyDocumentVersion:
-            type: integer
-            format: int32
-          locked:
-            type: boolean
-          manualProgressEntryType:
-            $ref: "#/components/schemas/ManualProgressEntryType"
-          note:
-            type: string
-      - $ref: "#/components/schemas/ApprovalRequestEntity"
-      - $ref: "#/components/schemas/KeyDocumentAwareProgressEntry"
-      required:
-      - createdAt
-      - createdBy
-      - locked
-      - manualProgressEntryType
-      - modifiedAt
-      - progressEntryId
-    ManualProgressEntryHistory:
-      type: object
-      properties:
-        changedAt:
-          type: string
-          format: date-time
-        manualProgressEntry:
-          $ref: "#/components/schemas/ManualProgressEntry"
-      required:
-      - changedAt
-    ManualProgressEntryType:
-      type: string
-      enum:
-      - LETTER
-      - PHONE_CALL
-      - NOTE
-      - EMAIL
-      - IMAGE
-      - DOCUMENT
-    MetaData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        description:
-          type: string
-      required:
-      - '@type'
-    MetaDataHistory:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        changedAt:
-          type: string
-          format: date-time
-      required:
-      - '@type'
-      - changedAt
-    OmsAppointment:
-      type: object
-      properties:
-        appointmentId:
-          type: string
-          format: uuid
-        appointmentState:
-          $ref: "#/components/schemas/AppointmentState"
-        appointmentType:
-          $ref: "#/components/schemas/AppointmentType"
-        bookingState:
-          $ref: "#/components/schemas/BookingState"
-        bookingType:
-          $ref: "#/components/schemas/BookingType"
-        duration:
-          type: integer
-          format: int32
-        start:
-          type: string
-          format: date-time
-      required:
-      - appointmentId
-      - appointmentState
-      - appointmentType
-      - bookingState
-    Operation:
-      type: string
-      enum:
-      - DELETE
-    PatchAffectedPersonRequest:
-      type: object
-      properties:
-        affectedPerson:
-          $ref: "#/components/schemas/AffectedPerson"
-      required:
-      - affectedPerson
-    PatchConcernRequest:
-      type: object
-      properties:
-        concern:
-          $ref: "#/components/schemas/Concern"
-      required:
-      - concern
-    PatchEmployeeOmsProcedureFacilityRequest:
-      type: object
-      properties:
-        updatedFacility:
-          $ref: "#/components/schemas/Facility"
-      required:
-      - updatedFacility
-    PatchEmployeeOmsProcedurePhysicianRequest:
-      type: object
-      properties:
-        physicianId:
-          type: string
-          format: uuid
-      required:
-      - physicianId
-    PatchManualProgressEntryRequest:
-      type: object
-      properties:
-        manualProgressEntryType:
-          $ref: "#/components/schemas/ManualProgressEntryType"
-        note:
-          type: string
-          nullable: true
-    Pdf:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/PdfMetaData"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    PdfMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          createdDate:
-            type: string
-            format: date-time
-    PdfMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          pdfMetaData:
-            $ref: "#/components/schemas/PdfMetaData"
-      required:
-      - changedAt
-    PersonType:
-      type: string
-      enum:
-      - PATIENT
-      - PARENT
-      - PROFESSIONAL
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    PostEmployeeOmsProcedureFacilityRequest:
-      type: object
-      properties:
-        facility:
-          $ref: "#/components/schemas/Facility"
-      required:
-      - facility
-    PostEmployeeOmsProcedureRequest:
-      type: object
-      properties:
-        affectedPerson:
-          $ref: "#/components/schemas/AffectedPerson"
-      required:
-      - affectedPerson
-    PostOmsAppointmentRequest:
-      type: object
-      properties:
-        appointmentType:
-          $ref: "#/components/schemas/AppointmentType"
-        bookingInfo:
-          $ref: "#/components/schemas/BookingInfo"
-      required:
-      - appointmentType
-    PostPopulateAdministrativeResponse:
-      type: object
-      properties:
-        appointmentBlockGroupsCreated:
-          type: object
-          additionalProperties:
-            type: string
-            format: uuid
-        physiciansCreated:
-          type: object
-          additionalProperties:
-            type: string
-            format: uuid
-      required:
-      - appointmentBlockGroupsCreated
-      - physiciansCreated
-    PostPopulateProcedureRequest:
-      type: object
-      properties:
-        appointments:
-          type: array
-          items:
-            $ref: "#/components/schemas/AppointmentPopulation"
-        cancelledAppointments:
-          type: array
-          items:
-            type: string
-        concern:
-          $ref: "#/components/schemas/ConcernTestDataConfig"
-        facility:
-          $ref: "#/components/schemas/PostEmployeeOmsProcedureFacilityRequest"
-        physician:
-          type: string
-          format: uuid
-        procedureData:
-          $ref: "#/components/schemas/PostEmployeeOmsProcedureRequest"
-        targetState:
-          $ref: "#/components/schemas/ProcedureStatus"
-      required:
-      - procedureData
-    PostPopulateProcedureResponse:
-      type: object
-      properties:
-        appointments:
-          type: object
-          additionalProperties:
-            type: string
-            format: uuid
-        facilityId:
-          type: string
-          format: uuid
-        procedureId:
-          type: string
-          format: uuid
-      required:
-      - appointments
-      - procedureId
-    PostboxAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          postbox:
-            type: string
-            description: The number (or name) of the postbox.
-            example: "123"
-            maxLength: 21
-            minLength: 1
-      description: An address which is a postbox.
-      required:
-      - city
-      - country
-      - postalCode
-      - postbox
-    Procedure:
-      type: object
-      properties:
-        archivingRelevanceSettings:
-          $ref: "#/components/schemas/ArchivingRelevanceSettings"
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedAt:
-          type: string
-          format: date-time
-        createdAt:
-          type: string
-          format: date-time
-        exportedAt:
-          type: string
-          format: date-time
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        procedureStatus:
-          $ref: "#/components/schemas/ProcedureStatus"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-          pattern: "[a-zA-Z0-9.].+"
-      required:
-      - archivingRelevanceSettings
-      - businessModule
-      - createdAt
-      - modifiedAt
-      - procedureId
-      - procedureStatus
-      - procedureType
-      - summary
-    ProcedureMetric:
-      type: object
-      properties:
-        abortedCount:
-          type: integer
-          format: int64
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedCount:
-          type: integer
-          format: int64
-        inProgressCount:
-          type: integer
-          format: int64
-        openOrDraftCount:
-          type: integer
-          format: int64
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        totalCount:
-          type: integer
-          format: int64
-      required:
-      - abortedCount
-      - businessModule
-      - closedCount
-      - inProgressCount
-      - openOrDraftCount
-      - procedureType
-      - totalCount
-    ProcedureStatus:
-      type: string
-      enum:
-      - DRAFT
-      - OPEN
-      - IN_PROGRESS
-      - CLOSED
-      - ABORTED
-    ProcedureType:
-      type: string
-      enum:
-      - REGULAR_EXAMINATION
-      - CAN_CHILD
-      - ENTRY_LEVEL
-      - DRAFT_CITIZEN_OFFICE_IMPORT
-      - DRAFT_SCHOOL_IMPORT
-      - INSPECTION
-      - TM_VACCINATION_CONSULTATION
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY_ENTRY
-      - MEDICAL_REGISTRY_CITIZEN_DRAFT
-      - MEDICAL_REGISTRY_EMPLOYEE_DRAFT
-      - DENTAL_CHILD
-      - OFFICIAL_MEDICAL_SERVICE
-    ProcedureWithDuration:
-      type: object
-      properties:
-        createdAt:
-          type: string
-          format: date-time
-        duration:
-          type: string
-          description: A duration in ISO 8601
-        id:
-          type: string
-          format: uuid
-      required:
-      - createdAt
-      - id
-    ProcessedInboxProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          createdByUserFirstName:
-            type: string
-          createdByUserLastName:
-            type: string
-          inboxProcedureId:
-            type: string
-            format: uuid
-          inboxProgressEntryType:
-            $ref: "#/components/schemas/InboxProgressEntryType"
-          messageText:
-            type: string
-          subject:
-            type: string
-      required:
-      - createdAt
-      - createdBy
-      - inboxProcedureId
-      - inboxProgressEntryType
-      - modifiedAt
-      - progressEntryId
-    ProgressEntry:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        createdAt:
-          type: string
-          format: date-time
-        fileReference:
-          oneOf:
-          - $ref: "#/components/schemas/GenericFileReference"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        modifiedAt:
-          type: string
-          format: date-time
-        progressEntryId:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - createdAt
-      - modifiedAt
-      - progressEntryId
-    ProgressEntryClass:
-      type: string
-      enum:
-      - MANUAL_PROGRESS_ENTRY
-      - SYSTEM_PROGRESS_ENTRY
-      - PROCESSED_INBOX_PROGRESS_ENTRY
-    ProgressEntryReferenceFilePair:
-      type: object
-      properties:
-        file:
-          oneOf:
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        progressEntryId:
-          type: string
-          format: uuid
-      required:
-      - file
-      - progressEntryId
-    ProgressEntrySortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - CREATED_AT
-      - MODIFIED_AT
-    ProgressEntrySortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    Salutation:
-      type: string
-      enum:
-      - NOT_SPECIFIED
-      - NEUTRAL
-      - FEMALE
-      - MALE
-    SelfAssignTaskRequest:
-      type: object
-      properties:
-        dueAt:
-          type: string
-          format: date-time
-        taskVersion:
-          type: integer
-          format: int64
-      required:
-      - taskVersion
-    SortDirection:
-      type: string
-      enum:
-      - ASC
-      - DESC
-    SyncAffectedPersonRequest:
-      type: object
-      properties:
-        fileStateId:
-          type: string
-          format: uuid
-        personVersion:
-          type: integer
-          format: int64
-        referenceVersion:
-          type: integer
-          format: int64
-      required:
-      - fileStateId
-      - personVersion
-      - referenceVersion
-    SyncFacilityRequest:
-      type: object
-      properties:
-        facilityVersion:
-          type: integer
-          format: int64
-        fileStateId:
-          type: string
-          format: uuid
-        referenceVersion:
-          type: integer
-          format: int64
-      required:
-      - facilityVersion
-      - fileStateId
-      - referenceVersion
-    SystemProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          changeDescription:
-            type: string
-          keyDocumentType:
-            type: string
-          keyDocumentVersion:
-            type: integer
-            format: int32
-          previousFileStateId:
-            type: string
-            format: uuid
-          systemProgressEntryType:
-            type: string
-          triggerType:
-            $ref: "#/components/schemas/TriggerType"
-          triggeredBy:
-            type: string
-            format: uuid
-          triggeredByUserFirstName:
-            type: string
-          triggeredByUserLastName:
-            type: string
-      - $ref: "#/components/schemas/KeyDocumentAwareProgressEntry"
-      required:
-      - createdAt
-      - modifiedAt
-      - progressEntryId
-      - systemProgressEntryType
-      - triggerType
-    Task:
-      type: object
-      properties:
-        assignedById:
-          type: string
-          format: uuid
-        assigneeId:
-          type: string
-          format: uuid
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        createdAt:
-          type: string
-          format: date-time
-        dueAt:
-          type: string
-          format: date-time
-        isOverdue:
-          type: boolean
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-        taskId:
-          type: string
-          format: uuid
-        taskStatus:
-          $ref: "#/components/schemas/TaskStatus"
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        version:
-          type: integer
-          format: int64
-      required:
-      - businessModule
-      - createdAt
-      - isOverdue
-      - modifiedAt
-      - procedureId
-      - summary
-      - taskId
-      - taskStatus
-      - taskType
-      - version
-    TaskMetric:
-      type: object
-      properties:
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        moreThanTwoOccurrencesCount:
-          type: integer
-          format: int32
-        noOccurrencesCount:
-          type: integer
-          format: int32
-        oneOccurrenceCount:
-          type: integer
-          format: int32
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        twoOccurrencesCount:
-          type: integer
-          format: int32
-      required:
-      - moreThanTwoOccurrencesCount
-      - noOccurrencesCount
-      - oneOccurrenceCount
-      - taskType
-      - twoOccurrencesCount
-    TaskResponse:
-      type: object
-      properties:
-        count:
-          type: integer
-          format: int64
-          description: total number of tasks for this query
-        tasks:
-          type: array
-          items:
-            $ref: "#/components/schemas/Task"
-          maxItems: 200
-          minItems: 0
-      required:
-      - count
-      - tasks
-    TaskStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    TaskType:
-      type: string
-      enum:
-      - BOOK_APPOINTMENT
-      - PERFORM_SCHOOL_ENTRY_EXAMINATION
-      - INSPECTION_PLANNING
-      - INSPECTION_EXECUTION
-      - INSPECTION_REPORT
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - OFFICIAL_MEDICAL_SERVICE
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
-    Title:
-      type: string
-      enum:
-      - DR
-      - PROF
-      - PROF_DR
-    TriggerType:
-      type: string
-      enum:
-      - SYSTEM_AUTOMATIC
-      - EMPLOYEE
-      - CITIZEN
-    UpdateAppointmentTypeRequest:
-      type: object
-      properties:
-        standardDurationInMinutes:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - standardDurationInMinutes
-    User:
-      type: object
-      properties:
-        email:
-          type: string
-          description: The email address of a user.
-          example: example@mail.de
-        enabled:
-          type: boolean
-          description: "True, if the user can login"
-          example: false
-        externalChatUsername:
-          type: string
-          description: The chat username of the gematik TI-Messenger (matrix chat).
-          example: '@username:server'
-        firstName:
-          type: string
-          description: The given name(s) of a user.
-          example: John
-        lastName:
-          type: string
-          description: The last name of a user.
-          example: Doe
-        phoneNumber:
-          type: string
-          description: The phone number of a user.
-          example: "+491234567890"
-        userId:
-          type: string
-          format: uuid
-          description: The Id of the user.
-          example: fe9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        username:
-          type: string
-          description: The username which is displayed in the application and can
-            be used for the login.
-          example: testuser
-      required:
-      - enabled
-      - firstName
-      - lastName
-      - userId
-      - username
-    ValidateAppointmentBlockGroupResponse:
-      type: object
-      properties:
-        userIdsWithEventConflicts:
-          type: array
-          items:
-            type: string
-            format: uuid
-        userIdsWithoutEventConflicts:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - userIdsWithEventConflicts
-      - userIdsWithoutEventConflicts
diff --git a/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/appointment/OmsAppointmentController.java b/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/appointment/OmsAppointmentController.java
index 630e87bff..a6fcc4cb7 100644
--- a/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/appointment/OmsAppointmentController.java
+++ b/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/appointment/OmsAppointmentController.java
@@ -45,4 +45,10 @@ public class OmsAppointmentController {
   public void cancelAppointment(@PathVariable("id") UUID appointmentId) {
     omsAppointmentService.cancelAppointmentEmployee(appointmentId);
   }
+
+  @PatchMapping(path = APPOINTMENT_URL + "/{id}/close")
+  @Operation(summary = "close an appointment")
+  public void closeAppointment(@PathVariable("id") UUID appointmentId) {
+    omsAppointmentService.closeAppointmentEmployee(appointmentId);
+  }
 }
diff --git a/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/appointment/OmsAppointmentService.java b/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/appointment/OmsAppointmentService.java
index 077284c69..38bc715d8 100644
--- a/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/appointment/OmsAppointmentService.java
+++ b/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/appointment/OmsAppointmentService.java
@@ -113,6 +113,24 @@ public class OmsAppointmentService {
     appointment.setAppointment(null); // to unlock appointment block
   }
 
+  @Transactional
+  public void closeAppointmentEmployee(UUID appointmentId) {
+    OmsAppointment appointment = loadAppointment(appointmentId);
+
+    if (appointment.getProcedure().isFinalized()) {
+      throw new BadRequestException("Procedure is already closed.");
+    }
+    if (AppointmentState.CLOSED == appointment.getAppointmentState()) {
+      throw new BadRequestException("Appointment is already closed.");
+    }
+
+    if (BookingState.BOOKABLE == appointment.getBookingState()) {
+      appointment.setBookingState(BookingState.WITHDRAWN);
+    }
+
+    appointment.setAppointmentState(AppointmentState.CLOSED);
+  }
+
   private void processBooking(BookingInfoDto bookingInfo, OmsAppointment appointment) {
     BookingTypeDto bookingTypeDto = bookingInfo.bookingType();
     Instant start = bookingInfo.start();
diff --git a/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/procedure/EmployeeOmsProcedureController.java b/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/procedure/EmployeeOmsProcedureController.java
index ff7653764..5ce09297d 100644
--- a/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/procedure/EmployeeOmsProcedureController.java
+++ b/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/procedure/EmployeeOmsProcedureController.java
@@ -6,6 +6,7 @@
 package de.eshg.officialmedicalservice.procedure;
 
 import de.eshg.api.commons.InlineParameterObject;
+import de.eshg.lib.procedure.api.ProcedureSearchParameters;
 import de.eshg.officialmedicalservice.appointment.OmsAppointmentService;
 import de.eshg.officialmedicalservice.appointment.api.PostOmsAppointmentRequest;
 import de.eshg.officialmedicalservice.procedure.api.EmployeeOmsProcedureDetailsDto;
@@ -91,10 +92,11 @@ public class EmployeeOmsProcedureController {
   public GetEmployeeOmsProcedureOverviewResponse getAllEmployeeProcedures(
       @InlineParameterObject @ParameterObject @Valid GetOmsProceduresFilterOptionsDto filters,
       @InlineParameterObject @ParameterObject @Valid
-          EmployeeOmsProcedurePaginationAndSortParameters paginationAndSortParameters) {
+          EmployeeOmsProcedurePaginationAndSortParameters paginationAndSortParameters,
+      @InlineParameterObject @ParameterObject @Valid ProcedureSearchParameters searchParameters) {
     EmployeePagedOmsProcedures pagedOmsProcedures =
         employeeOmsProcedureService.getEmployeeProceduresOverview(
-            filters, paginationAndSortParameters);
+            filters, paginationAndSortParameters, searchParameters);
     return new GetEmployeeOmsProcedureOverviewResponse(
         pagedOmsProcedures.proceduresPage(), pagedOmsProcedures.totalNumberOfProcedures());
   }
diff --git a/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/procedure/EmployeeOmsProcedureService.java b/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/procedure/EmployeeOmsProcedureService.java
index 5d35d7a74..a0e4df614 100644
--- a/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/procedure/EmployeeOmsProcedureService.java
+++ b/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/procedure/EmployeeOmsProcedureService.java
@@ -24,12 +24,16 @@ import de.eshg.base.centralfile.api.person.GetPersonFileStatesRequest;
 import de.eshg.base.centralfile.api.person.GetPersonFileStatesResponse;
 import de.eshg.base.user.api.UserDto;
 import de.eshg.lib.auditlog.AuditLogger;
+import de.eshg.lib.procedure.api.ProcedureSearchParameters;
 import de.eshg.lib.procedure.domain.model.FacilityType;
+import de.eshg.lib.procedure.domain.model.PersonType;
 import de.eshg.lib.procedure.domain.model.ProcedureStatus;
 import de.eshg.lib.procedure.domain.model.RelatedPerson;
 import de.eshg.lib.procedure.domain.model.TriggerType;
 import de.eshg.lib.procedure.mapping.ProcedureMapper;
 import de.eshg.lib.procedure.model.ProcedureStatusDto;
+import de.eshg.lib.procedure.procedures.ProcedureSearchService;
+import de.eshg.lib.procedure.util.ProcedureValidator;
 import de.eshg.officialmedicalservice.appointment.OmsAppointmentMapper;
 import de.eshg.officialmedicalservice.appointment.persistence.entity.AppointmentState;
 import de.eshg.officialmedicalservice.appointment.persistence.entity.OmsAppointment;
@@ -111,6 +115,7 @@ public class EmployeeOmsProcedureService {
   private final AuditLogger auditLogger;
   private final ProgressEntryService progressEntryService;
   private final EntityManager entityManager;
+  private final ProcedureSearchService<OmsProcedure> procedureSearchService;
 
   public EmployeeOmsProcedureService(
       OmsProcedureRepository omsProcedureRepository,
@@ -122,7 +127,8 @@ public class EmployeeOmsProcedureService {
       AuditLogger auditLogger,
       UserClient userClient,
       ProgressEntryService progressEntryService,
-      EntityManager entityManager) {
+      EntityManager entityManager,
+      ProcedureSearchService<OmsProcedure> procedureSearchService) {
     this.omsProcedureRepository = omsProcedureRepository;
     this.omsProcedureOverviewMapper = omsProcedureOverviewMapper;
     this.omsAppointmentMapper = omsAppointmentMapper;
@@ -133,6 +139,7 @@ public class EmployeeOmsProcedureService {
     this.userClient = userClient;
     this.progressEntryService = progressEntryService;
     this.entityManager = entityManager;
+    this.procedureSearchService = procedureSearchService;
   }
 
   @Transactional
@@ -197,23 +204,39 @@ public class EmployeeOmsProcedureService {
   @Transactional(readOnly = true)
   public EmployeePagedOmsProcedures getEmployeeProceduresOverview(
       GetOmsProceduresFilterOptionsDto filters,
-      EmployeeOmsProcedurePaginationAndSortParameters paginationAndSortParameters) {
+      EmployeeOmsProcedurePaginationAndSortParameters paginationAndSortParameters,
+      ProcedureSearchParameters searchParameters) {
 
-    Instant isBefore = null;
-    Instant isAfter = null;
+    List<OmsProcedureView> candidates = null;
 
-    if (Boolean.TRUE.equals(filters.today())) {
-      LocalDate today = LocalDate.ofInstant(clock.instant(), clock.getZone());
-      LocalDateTime startOfDay = today.atStartOfDay();
-      isAfter = startOfDay.atZone(clock.getZone()).toInstant();
-      isBefore = isAfter.plus(1, ChronoUnit.DAYS);
-    }
+    if (ProcedureValidator.hasNonNullValue(searchParameters)) {
+
+      List<OmsProcedure> allProcedures =
+          procedureSearchService.searchProceduresByPerson(
+              searchParameters.searchFirstName(),
+              searchParameters.searchLastName(),
+              searchParameters.searchDateOfBirth(),
+              PersonType.PATIENT);
+
+      candidates = allProcedures.stream().flatMap(this::convertToProcedureViewStream).toList();
+    } else {
+      Instant isBefore = null;
+      Instant isAfter = null;
+
+      if (Boolean.TRUE.equals(filters.today())) {
+        LocalDate today = LocalDate.ofInstant(clock.instant(), clock.getZone());
+        LocalDateTime startOfDay = today.atStartOfDay();
+        isAfter = startOfDay.atZone(clock.getZone()).toInstant();
+        isBefore = isAfter.plus(1, ChronoUnit.DAYS);
+      }
 
-    UserDto selfUser = userClient.getSelfUser();
-    UUID physicianId = Boolean.TRUE.equals(filters.assigned()) ? selfUser.userId() : null;
+      UserDto selfUser = userClient.getSelfUser();
+      UUID physicianId = Boolean.TRUE.equals(filters.assigned()) ? selfUser.userId() : null;
 
-    List<OmsProcedureView> candidates =
-        findOmsProcedures(physicianId, filters.status(), isBefore, isAfter, filters.highPriority());
+      candidates =
+          findOmsProcedures(
+              physicianId, filters.status(), isBefore, isAfter, filters.highPriority());
+    }
 
     List<OmsProcedure> candidateProcedures =
         candidates.stream().map(OmsProcedureView::procedure).toList();
@@ -232,6 +255,18 @@ public class EmployeeOmsProcedureService {
     return new EmployeePagedOmsProcedures(result, omsProcedureOverviewDtos.size());
   }
 
+  private Stream<OmsProcedureView> convertToProcedureViewStream(OmsProcedure procedure) {
+    Concern concern = procedure.getConcern();
+    List<OmsAppointment> appointments = procedure.getAppointments();
+
+    if (appointments.isEmpty()) {
+      return Stream.of(new OmsProcedureView(procedure, procedure.getConcern(), null));
+    } else {
+      return appointments.stream()
+          .map(appointment -> new OmsProcedureView(procedure, concern, appointment));
+    }
+  }
+
   private List<OmsProcedureView> findOmsProcedures(
       @Nullable UUID physicianId,
       @Nullable Set<ProcedureStatusDto> status,
diff --git a/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/testhelper/TestPopulateProcedureService.java b/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/testhelper/TestPopulateProcedureService.java
index 97e51af13..987edab21 100644
--- a/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/testhelper/TestPopulateProcedureService.java
+++ b/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/testhelper/TestPopulateProcedureService.java
@@ -25,6 +25,7 @@ import java.util.Arrays;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.UUID;
 import org.springframework.stereotype.Service;
@@ -168,8 +169,11 @@ public class TestPopulateProcedureService {
           // 7. cancel appointments
           cancelAppointments(request.cancelledAppointments(), appointmentMap);
 
-          // 8. close procedure
-          if (Arrays.asList(CLOSED).contains(request.targetState())) {
+          // 8. close appointments
+          closeAppointments(request.closedAppointments(), appointmentMap);
+
+          // 9. close procedure
+          if (Objects.equals(CLOSED, request.targetState())) {
             employeeOmsProcedureService.closeOpenProcedure(procedureId);
           }
 
@@ -204,4 +208,17 @@ public class TestPopulateProcedureService {
           appointmentService.cancelAppointmentEmployee(appointmentId);
         });
   }
+
+  private void closeAppointments(List<String> appointmentList, Map<String, UUID> appointmentMap) {
+    if (appointmentList == null) {
+      return;
+    }
+    appointmentList.forEach(
+        appointment -> {
+          UUID appointmentId =
+              Optional.of(appointmentMap.get(appointment))
+                  .orElseThrow(() -> new RuntimeException("Unknown appointment key"));
+          appointmentService.closeAppointmentEmployee(appointmentId);
+        });
+  }
 }
diff --git a/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/testhelper/api/PostPopulateProcedureRequest.java b/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/testhelper/api/PostPopulateProcedureRequest.java
index d98b41202..6d0413795 100644
--- a/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/testhelper/api/PostPopulateProcedureRequest.java
+++ b/backend/official-medical-service/src/main/java/de/eshg/officialmedicalservice/testhelper/api/PostPopulateProcedureRequest.java
@@ -20,4 +20,5 @@ public record PostPopulateProcedureRequest(
     UUID physician,
     @Valid List<@Valid AppointmentPopulationDto> appointments,
     List<String> cancelledAppointments,
+    List<String> closedAppointments,
     ProcedureStatusDto targetState) {}
diff --git a/backend/opendata/build.gradle b/backend/opendata/build.gradle
index 881cbb36e..4546a9b2b 100644
--- a/backend/opendata/build.gradle
+++ b/backend/opendata/build.gradle
@@ -17,8 +17,6 @@ dependencies {
     testImplementation testFixtures(project(':business-module-persistence-commons'))
     annotationProcessor 'org.hibernate.orm:hibernate-jpamodelgen'
 
-    testImplementation 'org.testcontainers:junit-jupiter'
-    testImplementation 'org.testcontainers:postgresql'
     testImplementation 'org.springdoc:springdoc-openapi-starter-common:latest.release'
 }
 
diff --git a/backend/opendata/gradle.lockfile b/backend/opendata/gradle.lockfile
index 0b9552224..bd266a768 100644
--- a/backend/opendata/gradle.lockfile
+++ b/backend/opendata/gradle.lockfile
@@ -192,10 +192,9 @@ org.springframework:spring-test:6.2.1=testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-tx:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-web:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-webmvc:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-org.testcontainers:database-commons:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:jdbc:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:junit-jupiter:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:postgresql:1.20.4=testCompileClasspath,testRuntimeClasspath
+org.testcontainers:database-commons:1.20.4=testRuntimeClasspath
+org.testcontainers:jdbc:1.20.4=testRuntimeClasspath
+org.testcontainers:postgresql:1.20.4=testRuntimeClasspath
 org.testcontainers:testcontainers:1.20.4=testCompileClasspath,testRuntimeClasspath
 org.verapdf:core-jakarta:1.26.5=productionRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
 org.verapdf:feature-reporting-jakarta:1.26.5=productionRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
diff --git a/backend/opendata/openApi.json b/backend/opendata/openApi.json
new file mode 100644
index 000000000..a19523950
--- /dev/null
+++ b/backend/opendata/openApi.json
@@ -0,0 +1,921 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is the API for the opendata service",
+    "title" : "OpenData Service API",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8096"
+  } ],
+  "paths" : {
+    "/citizen/public" : {
+      "get" : {
+        "description" : "Gets all open documents aka all resources including their versions.\nIt is possible to filter by `fileType`, `sources` and the year of\n`statisticsStartDate` and `statisticsEndDate`\n",
+        "operationId" : "getOpenDocuments_1",
+        "parameters" : [ {
+          "description" : "If set only versions with a `statisticsStartDate` or `statisticsEndDate`\nwithin the given year or whose period from `statisticsStartDate` to\n`statisticsEndDate` covers the given year\n",
+          "in" : "query",
+          "name" : "statisticsYearFilter",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "description" : "If set, versions with at least one of the given business modules are returned\n",
+          "in" : "query",
+          "name" : "sourcesFilter",
+          "required" : false,
+          "schema" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessModule"
+            }
+          }
+        }, {
+          "description" : "If set, versions with the given file type are returned",
+          "in" : "query",
+          "name" : "fileTypeFilter",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/OpenDataFileType"
+          }
+        }, {
+          "description" : "If set, versions with `fileName` or `description` matching the given search string are returned",
+          "in" : "query",
+          "name" : "searchString",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "description" : "Limit of returned results",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetOpenDocumentsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets open documents",
+        "tags" : [ "OpenDataPublicCitizen" ]
+      }
+    },
+    "/citizen/public/terms-of-use" : {
+      "get" : {
+        "operationId" : "getTermsOfUse",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Returns the terms of use",
+        "tags" : [ "OpenDataPublicCitizen" ]
+      }
+    },
+    "/citizen/public/{versionId}" : {
+      "get" : {
+        "description" : "Gets one specific version of an open document by its id\n",
+        "operationId" : "getVersion_1",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "versionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Version"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get specific version of an open document",
+        "tags" : [ "OpenDataPublicCitizen" ]
+      }
+    },
+    "/citizen/public/{versionId}/download" : {
+      "get" : {
+        "operationId" : "downloadDocument_1",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "versionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Download a specific version of a document",
+        "tags" : [ "OpenDataPublicCitizen" ]
+      }
+    },
+    "/open-documents" : {
+      "get" : {
+        "description" : "Gets all open documents aka all resources including their versions.\nIt is possible to filter by `fileType`, `sources` and the year of\n`statisticsStartDate` and `statisticsEndDate`\n",
+        "operationId" : "getOpenDocuments",
+        "parameters" : [ {
+          "description" : "If set only versions with a `statisticsStartDate` or `statisticsEndDate`\nwithin the given year or whose period from `statisticsStartDate` to\n`statisticsEndDate` covers the given year\n",
+          "in" : "query",
+          "name" : "statisticsYearFilter",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "description" : "If set, versions with at least one of the given business modules are returned\n",
+          "in" : "query",
+          "name" : "sourcesFilter",
+          "required" : false,
+          "schema" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessModule"
+            }
+          }
+        }, {
+          "description" : "If set, versions with the given file type are returned",
+          "in" : "query",
+          "name" : "fileTypeFilter",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/OpenDataFileType"
+          }
+        }, {
+          "description" : "If set, versions with `fileName` or `description` matching the given search string are returned",
+          "in" : "query",
+          "name" : "searchString",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "description" : "Limit of returned results",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetOpenDocumentsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets open documents",
+        "tags" : [ "OpenData" ]
+      },
+      "post" : {
+        "description" : "Creates a resource as well if there is no existing resource with the\ngiven `resourceName`. If resourceName is null, a UUID based one is generated\n",
+        "operationId" : "createOpenDocument",
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "postOpenDocumentRequest" : {
+                    "$ref" : "#/components/schemas/PostOpenDocumentRequest"
+                  }
+                },
+                "required" : [ "file", "postOpenDocumentRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Resource"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Creates a new version",
+        "tags" : [ "OpenData" ]
+      }
+    },
+    "/open-documents/fallback-license-url" : {
+      "get" : {
+        "operationId" : "getFallbackLicenseUrl",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFallbackLicenseUrlResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "get the configured fallback license url",
+        "tags" : [ "OpenData" ]
+      }
+    },
+    "/open-documents/{versionId}" : {
+      "delete" : {
+        "description" : "Deletes correlating resource as well if there are no other versions left",
+        "operationId" : "deleteVersion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "versionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Deletes a version",
+        "tags" : [ "OpenData" ]
+      },
+      "get" : {
+        "description" : "Gets one specific version of an open document by its id\n",
+        "operationId" : "getVersion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "versionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Version"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get specific version of an open document",
+        "tags" : [ "OpenData" ]
+      },
+      "put" : {
+        "description" : "Updates `versionName`, `fileName`, `description`, `licence` and/or `sources`",
+        "operationId" : "updateVersionMetadata",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "versionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateVersionMetaDataRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Updates meta data of a version",
+        "tags" : [ "OpenData" ]
+      }
+    },
+    "/open-documents/{versionId}/download" : {
+      "get" : {
+        "operationId" : "downloadDocument",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "versionId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Download a specific version of a document",
+        "tags" : [ "OpenData" ]
+      }
+    },
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "BusinessModule" : {
+        "type" : "string",
+        "enum" : [ "INSPECTION", "SCHOOL_ENTRY", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY", "DENTAL", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "GetFallbackLicenseUrlResponse" : {
+        "required" : [ "fallbackLicenseUrl" ],
+        "type" : "object",
+        "properties" : {
+          "fallbackLicenseUrl" : {
+            "type" : "string"
+          }
+        }
+      },
+      "GetOpenDocumentsResponse" : {
+        "required" : [ "elements", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Resource"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "OpenDataFileType" : {
+        "type" : "string",
+        "enum" : [ "PDF", "CSV" ]
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "PostOpenDocumentRequest" : {
+        "required" : [ "licence", "sources", "versionName" ],
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          },
+          "licence" : {
+            "type" : "string"
+          },
+          "resourceName" : {
+            "type" : "string",
+            "description" : "If set, and a resource with the same value already exists in the database,\nthe version is added to this resource. Otherwise, a new resource is created.\n\nIf this value is not set, a new resource with a generated UUID as `resourceName` is created.\n"
+          },
+          "sources" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessModule"
+            }
+          },
+          "statisticEndDate" : {
+            "type" : "string",
+            "description" : "Either set `statisticsStartDate` and `statisticsEndDate` together or not at all.",
+            "format" : "date"
+          },
+          "statisticStartDate" : {
+            "type" : "string",
+            "description" : "Either set `statisticsStartDate` and `statisticsEndDate` together or not at all.",
+            "format" : "date"
+          },
+          "versionName" : {
+            "type" : "string"
+          }
+        }
+      },
+      "Resource" : {
+        "required" : [ "resourceName", "versions" ],
+        "type" : "object",
+        "properties" : {
+          "resourceName" : {
+            "type" : "string"
+          },
+          "versions" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Version"
+            }
+          }
+        }
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      },
+      "UpdateVersionMetaDataRequest" : {
+        "required" : [ "licence", "sources", "version", "versionName" ],
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          },
+          "fileName" : {
+            "pattern" : "^[\\w\\-\\. ]+$",
+            "type" : "string"
+          },
+          "licence" : {
+            "type" : "string"
+          },
+          "sources" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessModule"
+            }
+          },
+          "statisticEndDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "statisticStartDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "versionName" : {
+            "type" : "string"
+          }
+        }
+      },
+      "Version" : {
+        "required" : [ "externalId", "fileName", "fileSize", "fileType", "licence", "major", "minor", "publicationDate", "sources", "version", "versionName" ],
+        "type" : "object",
+        "properties" : {
+          "author" : {
+            "type" : "string"
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "externalId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "fileName" : {
+            "type" : "string"
+          },
+          "fileSize" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "fileType" : {
+            "$ref" : "#/components/schemas/OpenDataFileType"
+          },
+          "licence" : {
+            "type" : "string"
+          },
+          "major" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minor" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "publicationDate" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "sources" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessModule"
+            }
+          },
+          "statisticEndDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "statisticStartDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "version" : {
+            "type" : "integer",
+            "description" : "Version of the entity. Each time the entity is changed, it is incremented by one.",
+            "format" : "int64"
+          },
+          "versionName" : {
+            "type" : "string"
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/backend/opendata/openApi.yaml b/backend/opendata/openApi.yaml
deleted file mode 100644
index 3ba7fd0f9..000000000
--- a/backend/opendata/openApi.yaml
+++ /dev/null
@@ -1,750 +0,0 @@
-# Copyright 2025 cronn GmbH
-# SPDX-License-Identifier: Apache-2.0
-
-openapi: 3.0.1
-info:
-  description: This is the API for the opendata service
-  title: OpenData Service API
-  version: "0.1"
-servers:
-- url: http://localhost:8096
-paths:
-  /citizen/public:
-    get:
-      description: |
-        Gets all open documents aka all resources including their versions.
-        It is possible to filter by `fileType`, `sources` and the year of
-        `statisticsStartDate` and `statisticsEndDate`
-      operationId: getOpenDocuments_1
-      parameters:
-      - description: |
-          If set only versions with a `statisticsStartDate` or `statisticsEndDate`
-          within the given year or whose period from `statisticsStartDate` to
-          `statisticsEndDate` covers the given year
-        in: query
-        name: statisticsYearFilter
-        required: false
-        schema:
-          type: string
-      - description: |
-          If set, versions with at least one of the given business modules are returned
-        in: query
-        name: sourcesFilter
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessModule"
-      - description: "If set, versions with the given file type are returned"
-        in: query
-        name: fileTypeFilter
-        required: false
-        schema:
-          $ref: "#/components/schemas/OpenDataFileType"
-      - description: "If set, versions with `fileName` or `description` matching the\
-          \ given search string are returned"
-        in: query
-        name: searchString
-        required: false
-        schema:
-          type: string
-      - description: Limit of returned results
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 25
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetOpenDocumentsResponse"
-          description: OK
-      summary: Gets open documents
-      tags:
-      - OpenDataPublicCitizen
-  /citizen/public/terms-of-use:
-    get:
-      operationId: getTermsOfUse
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Returns the terms of use
-      tags:
-      - OpenDataPublicCitizen
-  /citizen/public/{versionId}:
-    get:
-      description: |
-        Gets one specific version of an open document by its id
-      operationId: getVersion_1
-      parameters:
-      - in: path
-        name: versionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Version"
-          description: OK
-      summary: Get specific version of an open document
-      tags:
-      - OpenDataPublicCitizen
-  /citizen/public/{versionId}/download:
-    get:
-      operationId: downloadDocument_1
-      parameters:
-      - in: path
-        name: versionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Download a specific version of a document
-      tags:
-      - OpenDataPublicCitizen
-  /open-documents:
-    get:
-      description: |
-        Gets all open documents aka all resources including their versions.
-        It is possible to filter by `fileType`, `sources` and the year of
-        `statisticsStartDate` and `statisticsEndDate`
-      operationId: getOpenDocuments
-      parameters:
-      - description: |
-          If set only versions with a `statisticsStartDate` or `statisticsEndDate`
-          within the given year or whose period from `statisticsStartDate` to
-          `statisticsEndDate` covers the given year
-        in: query
-        name: statisticsYearFilter
-        required: false
-        schema:
-          type: string
-      - description: |
-          If set, versions with at least one of the given business modules are returned
-        in: query
-        name: sourcesFilter
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessModule"
-      - description: "If set, versions with the given file type are returned"
-        in: query
-        name: fileTypeFilter
-        required: false
-        schema:
-          $ref: "#/components/schemas/OpenDataFileType"
-      - description: "If set, versions with `fileName` or `description` matching the\
-          \ given search string are returned"
-        in: query
-        name: searchString
-        required: false
-        schema:
-          type: string
-      - description: Limit of returned results
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 25
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetOpenDocumentsResponse"
-          description: OK
-      summary: Gets open documents
-      tags:
-      - OpenData
-    post:
-      description: |
-        Creates a resource as well if there is no existing resource with the
-        given `resourceName`. If resourceName is null, a UUID based one is generated
-      operationId: createOpenDocument
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                file:
-                  type: string
-                  format: binary
-                postOpenDocumentRequest:
-                  $ref: "#/components/schemas/PostOpenDocumentRequest"
-              required:
-              - file
-              - postOpenDocumentRequest
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Resource"
-          description: OK
-      summary: Creates a new version
-      tags:
-      - OpenData
-  /open-documents/fallback-license-url:
-    get:
-      operationId: getFallbackLicenseUrl
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetFallbackLicenseUrlResponse"
-          description: OK
-      summary: get the configured fallback license url
-      tags:
-      - OpenData
-  /open-documents/{versionId}:
-    delete:
-      description: Deletes correlating resource as well if there are no other versions
-        left
-      operationId: deleteVersion
-      parameters:
-      - in: path
-        name: versionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Deletes a version
-      tags:
-      - OpenData
-    get:
-      description: |
-        Gets one specific version of an open document by its id
-      operationId: getVersion
-      parameters:
-      - in: path
-        name: versionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Version"
-          description: OK
-      summary: Get specific version of an open document
-      tags:
-      - OpenData
-    put:
-      description: "Updates `versionName`, `fileName`, `description`, `licence` and/or\
-        \ `sources`"
-      operationId: updateVersionMetadata
-      parameters:
-      - in: path
-        name: versionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateVersionMetaDataRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Updates meta data of a version
-      tags:
-      - OpenData
-  /open-documents/{versionId}/download:
-    get:
-      operationId: downloadDocument
-      parameters:
-      - in: path
-        name: versionId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Download a specific version of a document
-      tags:
-      - OpenData
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-components:
-  schemas:
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    BusinessModule:
-      type: string
-      enum:
-      - INSPECTION
-      - SCHOOL_ENTRY
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY
-      - DENTAL
-      - OFFICIAL_MEDICAL_SERVICE
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    GetFallbackLicenseUrlResponse:
-      type: object
-      properties:
-        fallbackLicenseUrl:
-          type: string
-      required:
-      - fallbackLicenseUrl
-    GetOpenDocumentsResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/Resource"
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - elements
-      - totalElements
-      - totalPages
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    OpenDataFileType:
-      type: string
-      enum:
-      - PDF
-      - CSV
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    PostOpenDocumentRequest:
-      type: object
-      properties:
-        description:
-          type: string
-        licence:
-          type: string
-        resourceName:
-          type: string
-          description: |
-            If set, and a resource with the same value already exists in the database,
-            the version is added to this resource. Otherwise, a new resource is created.
-
-            If this value is not set, a new resource with a generated UUID as `resourceName` is created.
-        sources:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessModule"
-          uniqueItems: true
-        statisticEndDate:
-          type: string
-          format: date
-          description: Either set `statisticsStartDate` and `statisticsEndDate` together
-            or not at all.
-        statisticStartDate:
-          type: string
-          format: date
-          description: Either set `statisticsStartDate` and `statisticsEndDate` together
-            or not at all.
-        versionName:
-          type: string
-      required:
-      - licence
-      - sources
-      - versionName
-    Resource:
-      type: object
-      properties:
-        resourceName:
-          type: string
-        versions:
-          type: array
-          items:
-            $ref: "#/components/schemas/Version"
-      required:
-      - resourceName
-      - versions
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
-    UpdateVersionMetaDataRequest:
-      type: object
-      properties:
-        description:
-          type: string
-        fileName:
-          type: string
-          pattern: "^[\\w\\-\\. ]+$"
-        licence:
-          type: string
-        sources:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessModule"
-          uniqueItems: true
-        statisticEndDate:
-          type: string
-          format: date
-        statisticStartDate:
-          type: string
-          format: date
-        version:
-          type: integer
-          format: int64
-        versionName:
-          type: string
-      required:
-      - licence
-      - sources
-      - version
-      - versionName
-    Version:
-      type: object
-      properties:
-        author:
-          type: string
-        description:
-          type: string
-        externalId:
-          type: string
-          format: uuid
-        fileName:
-          type: string
-        fileSize:
-          type: integer
-          format: int32
-        fileType:
-          $ref: "#/components/schemas/OpenDataFileType"
-        licence:
-          type: string
-        major:
-          type: integer
-          format: int32
-        minor:
-          type: integer
-          format: int32
-        publicationDate:
-          type: string
-          format: date-time
-        sources:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessModule"
-          uniqueItems: true
-        statisticEndDate:
-          type: string
-          format: date
-        statisticStartDate:
-          type: string
-          format: date
-        version:
-          type: integer
-          format: int64
-          description: "Version of the entity. Each time the entity is changed, it\
-            \ is incremented by one."
-        versionName:
-          type: string
-      required:
-      - externalId
-      - fileName
-      - fileSize
-      - fileType
-      - licence
-      - major
-      - minor
-      - publicationDate
-      - sources
-      - version
-      - versionName
diff --git a/backend/replace.sh b/backend/replace.sh
new file mode 100644
index 000000000..517d1d8fb
--- /dev/null
+++ b/backend/replace.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/bash
+# Copyright 2025 cronn GmbH
+# SPDX-License-Identifier: Apache-2.0
+
+
+ln -s data/test/validation/AuditLogOpenApiTest/openApiSpec.json auditlog/openApi.json
+ln -s data/test/validation/BaseOpenApiTest/openApiSpec.json base/openApi.json
+ln -s data/test/validation/CentralRepositoryOpenApiTest/openApiSpec.json central-repository/openApi.json
+ln -s data/test/validation/ChatManagementOpenApiTest/openApiSpec.json chat-management/openApi.json
+ln -s data/test/validation/DentalOpenApiTest/openApiSpec.json dental/openApi.json
+ln -s data/test/validation/InspectionOpenApiTest/openApiSpec.json inspection/openApi.json
+ln -s data/test/validation/EditorLibraryOpenApiTest/openApiSpec.json lib-editor/openApi.json
+ln -s data/test/validation/ProcedureLibraryOpenApiTest/openApiSpec.json lib-procedures/openApi.json
+ln -s data/test/validation/StatisticsLibraryOpenApiTest/openApiSpec.json lib-statistics/openApi.json
+ln -s data/test/validation/LsdOpenApiTest/openApiSpec.json local-service-directory/openApi.json
+ln -s data/test/validation/MeaslesProtectionOpenApiTest/openApiSpec.json measles-protection/openApi.json
+ln -s data/test/validation/MedicalRegistryOpenApiTest/openApiSpec.json medical-registry/openApi.json
+ln -s data/test/validation/OmsOpenApiTest/openApiSpec.json official-medical-service/openApi.json
+ln -s data/test/validation/OpenDataOpenApiTest/openApiSpec.json opendata/openApi.json
+ln -s data/test/validation/SchoolEntryOpenApiTest/openApiSpec.json school-entry/openApi.json
+ln -s data/test/validation/ServiceDirectoryOpenApiTest/openApiSpec.json service-directory/openApi.json
+ln -s data/test/validation/StatisticsOpenApiTest/openApiSpec.json statistics/openApi.json
+ln -s data/test/validation/StiProtectionOpenApiTest/openApiSpec.json sti-protection/openApi.json
+ln -s data/test/validation/TravelMedicineOpenApiTest/openApiSpec.json travel-medicine/openApi.json
diff --git a/backend/school-entry/openApi.json b/backend/school-entry/openApi.json
new file mode 100644
index 000000000..cb19d208d
--- /dev/null
+++ b/backend/school-entry/openApi.json
@@ -0,0 +1,9597 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is the API for the school-entry module",
+    "title" : "School Entry Module API",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8082"
+  } ],
+  "paths" : {
+    "/appointment-blocks/appointment-block-groups" : {
+      "get" : {
+        "operationId" : "getAppointmentBlockGroups",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/AppointmentBlockSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAppointmentBlockGroupsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all appointment block groups.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-blocks/daily-appointment-block-groups" : {
+      "post" : {
+        "operationId" : "createDailyAppointmentBlocksForGroup",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CreateAppointmentBlockGroupResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create appointment group with blocks for week days.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-blocks/daily-appointment-block-groups/validate" : {
+      "post" : {
+        "operationId" : "validateDailyAppointmentBlocksForGroup",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ValidateAppointmentBlockGroupResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create appointment group with blocks for week days.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-blocks/free-appointments" : {
+      "get" : {
+        "operationId" : "getFreeAppointments",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "appointmentType",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "earliestDate",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "physicianId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFreeAppointmentsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get free appointments for an appointment type.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-types" : {
+      "get" : {
+        "operationId" : "getAppointmentTypes",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAppointmentTypesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets all Appointment Types",
+        "tags" : [ "AppointmentType" ]
+      }
+    },
+    "/appointment-types/{id}" : {
+      "get" : {
+        "operationId" : "getOneAppointmentType",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AppointmentTypeConfig"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets one Appointment Type by ID",
+        "tags" : [ "AppointmentType" ]
+      },
+      "put" : {
+        "operationId" : "updateAppointmentType",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateAppointmentTypeRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AppointmentTypeConfig"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modifies an existing Appointment Type",
+        "tags" : [ "AppointmentType" ]
+      }
+    },
+    "/approval-requests/{approvalRequestId}" : {
+      "get" : {
+        "operationId" : "getApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/approval-requests/{approvalRequestId}/decision" : {
+      "put" : {
+        "operationId" : "decideApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/Decision"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/archiving/config" : {
+      "get" : {
+        "operationId" : "getArchivingConfiguration",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetArchivingConfigurationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get archiving configuration",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/procedures" : {
+      "get" : {
+        "operationId" : "getArchivableProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `procedureType` is submitted, only procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `closedAtDay` is set, only procedures are returned which were closed at that date\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "closedAtDay",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `defaultArchivingRelevance` is submitted, only procedures are returned which have one of the submitted default archiving relevances.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "defaultArchivingRelevance",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ArchivingRelevance"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CLOSED_AT`: Sorting by closedAt attribute\n- `PROCEDURE_TYPE`: Sorting by procedureType attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetArchivableProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetArchivableProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetArchivableProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get archivable procedures",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/procedures/bulk-update-archiving-relevance" : {
+      "post" : {
+        "operationId" : "bulkUpdateProceduresArchivingRelevance",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/BulkUpdateProceduresArchivingRelevanceRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/BulkUpdateProceduresArchivingRelevanceResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Bulk update procedures archiving relevance",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/relevant-procedures" : {
+      "get" : {
+        "operationId" : "getRelevantArchivableProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `closedAtDay` is set, only procedures are returned which were closed at that date\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "closedAtDay",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `exported` is true, only procedures are returned which have already been exported.\n- If `exported` is false, only procedures are returned which have not been exported, yet.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "exported",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CLOSED_AT`: Sorting by closedAt attribute\n- `EXPORTED_AT`: Sorting by exportedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetRelevantArchivableProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetRelevantArchivableProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRelevantArchivableProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get relevant archivable procedures",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/relevant-procedures/export" : {
+      "post" : {
+        "operationId" : "exportRelevantProcedures",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ExportArchivingRelevantProceduresRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/citizen/auth/anamnesis" : {
+      "put" : {
+        "operationId" : "addAnamnesisAsCitizen",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddCitizenAnamnesisRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntryCitizen" ]
+      }
+    },
+    "/citizen/auth/appointment" : {
+      "put" : {
+        "operationId" : "updateAppointmentAsCitizen",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateCitizenAppointmentRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntryCitizen" ]
+      }
+    },
+    "/citizen/auth/free-appointments" : {
+      "get" : {
+        "operationId" : "getSelfFreeAppointmentsAsCitizen",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetCitizenFreeAppointmentsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntryCitizen" ]
+      }
+    },
+    "/citizen/auth/procedure" : {
+      "get" : {
+        "operationId" : "getSelfProcedureAsCitizen",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetCitizenProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntryCitizen" ]
+      }
+    },
+    "/citizen/public/documents/privacy-notice" : {
+      "get" : {
+        "operationId" : "getPrivacyNotice",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the privacy-notice document.",
+        "tags" : [ "SchoolEntryPublicCitizen" ]
+      }
+    },
+    "/citizen/public/documents/privacy-policy" : {
+      "get" : {
+        "operationId" : "getPrivacyPolicy",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the privacy-policy document.",
+        "tags" : [ "SchoolEntryPublicCitizen" ]
+      }
+    },
+    "/citizen/public/opening-hours" : {
+      "get" : {
+        "operationId" : "getOpeningHours",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetOpeningHoursResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the official opening hours.",
+        "tags" : [ "SchoolEntryPublicCitizen" ]
+      }
+    },
+    "/config" : {
+      "get" : {
+        "operationId" : "getConfig",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetSchoolEntryConfigResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntryConfig" ]
+      }
+    },
+    "/country-codes" : {
+      "get" : {
+        "operationId" : "getCountryCodes",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetCountryCodesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntryCountryCodes" ]
+      }
+    },
+    "/feature-toggles" : {
+      "get" : {
+        "operationId" : "getFeatureToggles",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetSchoolEntryFeatureTogglesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntryFeatureToggles" ]
+      }
+    },
+    "/files/{fileId}" : {
+      "delete" : {
+        "operationId" : "deleteFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Soft deletes the specified file",
+        "tags" : [ "File" ]
+      },
+      "get" : {
+        "operationId" : "getFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/Image"
+                  }, {
+                    "$ref" : "#/components/schemas/Mail"
+                  }, {
+                    "$ref" : "#/components/schemas/Pdf"
+                  } ]
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Retrieves the meta data of the specified file",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/deletion-request" : {
+      "post" : {
+        "operationId" : "requestFileDeletion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateApprovalRequestRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Request deletion of a file entry",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/download" : {
+      "get" : {
+        "operationId" : "downloadFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/meta-data" : {
+      "put" : {
+        "operationId" : "updateFileMetaData",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "oneOf" : [ {
+                  "$ref" : "#/components/schemas/ImageMetaData"
+                }, {
+                  "$ref" : "#/components/schemas/MailMetaData"
+                }, {
+                  "$ref" : "#/components/schemas/PdfMetaData"
+                } ]
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/Image"
+                  }, {
+                    "$ref" : "#/components/schemas/Mail"
+                  }, {
+                    "$ref" : "#/components/schemas/Pdf"
+                  } ]
+                }
+              }
+            },
+            "description" : "Updated file"
+          }
+        },
+        "summary" : "Updates the meta data of the specified file",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/meta-data/history" : {
+      "get" : {
+        "operationId" : "getMetaDataHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetMetaDataHistoryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "File" ]
+      }
+    },
+    "/gdpr-validation-tasks" : {
+      "get" : {
+        "operationId" : "getAllGdprValidationTasks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "status",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAllValidationTasksResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all GDPR validation tasks",
+        "tags" : [ "GdprValidationTask" ]
+      },
+      "post" : {
+        "operationId" : "addGdprValidationTask",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddGdprValidationTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "Add a GDPR validation task"
+          }
+        },
+        "summary" : "Add a GDPR validation task",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/notification-banner" : {
+      "get" : {
+        "operationId" : "getGdprNotificationBanner",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprNotificationBannerResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get data for GDPR notification banner",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}" : {
+      "delete" : {
+        "operationId" : "deleteGdprValidationTaskAndDownloadPackages",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/DeleteDownloadPackagesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the GDPR validation task with gdprProcedureId and GDPR download packages with ids from request",
+        "tags" : [ "GdprValidationTask" ]
+      },
+      "get" : {
+        "operationId" : "getGdprValidationTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprValidationTaskResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get Gdpr Validation Task by Gdpr Procedure Id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures" : {
+      "get" : {
+        "operationId" : "getGdprValidationTaskDetails",
+        "parameters" : [ {
+          "description" : "The Id of the GDPR procedure.",
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprValidationTaskDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a GDPR validation task by id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}" : {
+      "delete" : {
+        "operationId" : "deleteBusinessProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "businessProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the businessProcedure with businessProcedureId for validationTask with gdprProcedureId with type right of erasure",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}/downloadPackage" : {
+      "post" : {
+        "operationId" : "addDownloadPackage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "businessProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Creates a downloadPackage for validationTask with gdprProcedureId with the data from the procedure with businessProcedureId",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/close" : {
+      "post" : {
+        "operationId" : "closeGdprValidationTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Close a GDPR validation task"
+          }
+        },
+        "summary" : "Close a GDPR validation task",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/download-packages" : {
+      "get" : {
+        "operationId" : "getGdprDownloadPackagesInfo",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprDownloadPackagesInfoResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get approved Gdpr Download Packages by Gdpr Procedure Id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}" : {
+      "get" : {
+        "operationId" : "getGdprDownloadPackage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "downloadId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get Gdpr Download Package by the gdprProcedureId and its downloadId",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/import/citizen-list" : {
+      "post" : {
+        "operationId" : "importCitizenList",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "schoolYear",
+          "required" : true,
+          "schema" : {
+            "minimum" : 1900,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  }
+                },
+                "required" : [ "file" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "object"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Upload a XLSX file to create multiple procedures.",
+        "tags" : [ "Import" ]
+      }
+    },
+    "/import/past-procedure-list/{schoolId}" : {
+      "post" : {
+        "operationId" : "importPastProcedureList",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "schoolId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "schoolYear",
+          "required" : true,
+          "schema" : {
+            "minimum" : 1900,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  }
+                },
+                "required" : [ "file" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "object"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Upload a XLSX file to create multiple past procedures.",
+        "tags" : [ "Import" ]
+      }
+    },
+    "/import/school-list/{schoolId}" : {
+      "post" : {
+        "operationId" : "importSchoolList",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "schoolId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "locationId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "schoolYear",
+          "required" : true,
+          "schema" : {
+            "minimum" : 1900,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  }
+                },
+                "required" : [ "file" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "object"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Upload a XLSX file to create multiple procedures.",
+        "tags" : [ "Import" ]
+      }
+    },
+    "/import/templates/citizen-list" : {
+      "get" : {
+        "operationId" : "getCitizenListTemplate",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the XLSX citizen list template.",
+        "tags" : [ "Import" ]
+      }
+    },
+    "/import/templates/past-procedure-list" : {
+      "get" : {
+        "operationId" : "getPastProcedureListTemplate",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the XLSX past procedures list template.",
+        "tags" : [ "Import" ]
+      }
+    },
+    "/import/templates/school-list" : {
+      "get" : {
+        "operationId" : "getSchoolListTemplate",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the XLSX school list template.",
+        "tags" : [ "Import" ]
+      }
+    },
+    "/inbox-procedures" : {
+      "get" : {
+        "description" : "Get all inbox procedures with filter, sort, and pagination options\n",
+        "operationId" : "getInboxProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `inboxProcedureType` is submitted, only inbox procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "inboxProcedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If true, inbox procedures which have no type are returned in addition to the types specified by 'inboxProcedureType'.\n- If false or not submitted, inbox procedures which have no type are not returned.\n",
+          "in" : "query",
+          "name" : "includeUntyped",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `inboxProcedureStatus` is submitted, only inbox procedures are returned which have one of the submitted statuses.\n- If not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "inboxProcedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InboxProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CREATED_AT`: Sorting by createdAt attribute\n- `MODIFIED_AT`: Sorting by modifiedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetInboxProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetInboxProceduresSortOrder"
+          }
+        }, {
+          "description" : "Number of the requested page",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        }, {
+          "description" : "Amount of requested inbox procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInboxProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get inbox procedures",
+        "tags" : [ "InboxProcedure" ]
+      },
+      "post" : {
+        "description" : "Creates an inbox procedure with an optional file upload.\n\n       Permitted file formats:\n        - Image formats: jpeg, png\n        - PDF formats: pdf/a\n        - Mail formats: eml",
+        "operationId" : "addInboxProcedure",
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "createInboxProcedureRequest" : {
+                    "$ref" : "#/components/schemas/CreateInboxProcedureRequest"
+                  },
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  }
+                },
+                "required" : [ "createInboxProcedureRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InboxProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add inbox procedure",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/inbox-procedures/{inboxProcedureId}" : {
+      "get" : {
+        "operationId" : "getInboxProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inboxProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInboxProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get inbox procedure with detailed information",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/inbox-procedures/{inboxProcedureId}/inbox-procedure-status" : {
+      "put" : {
+        "operationId" : "updateInboxProcedureStatus",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inboxProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InboxProcedureStatus"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InboxProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update status of inbox procedure",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/procedure-metrics" : {
+      "get" : {
+        "operationId" : "getProcedureMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of procedures"
+          }
+        },
+        "summary" : "Get procedure metrics for procedures created in the given time range",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures" : {
+      "get" : {
+        "description" : "GET operation for retrieving basic information of procedures for the procedure overview.\n",
+        "operationId" : "getProcedures_1",
+        "parameters" : [ {
+          "description" : "Only procedures are returned where the assigneeId of at least one task equals the `assignedToId`.\nIf not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "assignedToId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureType` is submitted, only procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CREATED_AT`: Sorting by createdAt attribute\n- `MODIFIED_AT`: Sorting by modifiedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/check-file-state-usage" : {
+      "post" : {
+        "operationId" : "checkFileStateUsage",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CheckFileStateUsageRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CheckFileStateUsageResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Identify which file state IDs are still used by active procedures.",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/recent" : {
+      "get" : {
+        "operationId" : "getRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "userId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/recent/self" : {
+      "get" : {
+        "operationId" : "getSelfRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the current users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for the current user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/search" : {
+      "get" : {
+        "operationId" : "searchProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "query",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}" : {
+      "get" : {
+        "operationId" : "getDetailedProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetDetailedProcedureResponse"
+                }
+              }
+            },
+            "description" : "a single procedure with details"
+          }
+        },
+        "summary" : "Get a single procedure with details",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}/approval-requests" : {
+      "get" : {
+        "operationId" : "getApprovalRequests",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureApprovalRequestsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all approval requests related to this procedure",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}/files" : {
+      "get" : {
+        "description" : "This returns all relevant (highest version per keydocument type and non-deleted) files sorted by descending creation date.\nThat is:\n * if an progress entry has a keydocument type set, then its files are only returned if it also has the highest keydocument version of the respective key document type.\n * if an progress entry does not have a keydocument type, then its files are always returned.\n",
+        "operationId" : "getProcedureFileDetails",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureFileDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get relevant procedure files",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries" : {
+      "get" : {
+        "operationId" : "getProgressEntries",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Filter on progressEntryType",
+          "in" : "query",
+          "name" : "progressEntryType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        }, {
+          "description" : "Filter on child class of progressEntry",
+          "in" : "query",
+          "name" : "progressEntryClass",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProgressEntryClass"
+            }
+          }
+        }, {
+          "description" : "If `initiatedBy` is set with a `userId` then the following is returned:\n* Only progressEntries with `createdBy`=`userId` in case `ManualProgressEntry` or `ProcessedInboxProgressEntry`\n* Only progressEntries with `triggeredBy`=`userId` in case `SystemProgressEntry`\n",
+          "in" : "query",
+          "name" : "initiatedBy",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "description" : "Filter on triggerType.\nIf this is set, only SystemProgressEntries are returned since only SystemProgressEntries have this attribute.\n",
+          "in" : "query",
+          "name" : "triggerType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TriggerType"
+            }
+          }
+        }, {
+          "description" : "Sorting on either modifiedAt or createdAt ",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProgressEntrySortBy"
+          }
+        }, {
+          "description" : "Sorting order. Possible options  \"ASC\" for ascending and \"DESC\" for descending.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProgressEntrySortOrder"
+          }
+        }, {
+          "description" : "Maximum number of elements to return",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Index of page to be returned",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProgressEntriesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get list of procedure's progress entries",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "post" : {
+        "description" : "Creates a manual progress entry with an optional file upload.\n\n       Permitted file formats:\n        - Image formats: jpeg, png\n        - PDF formats: pdf/a\n        - Mail formats: eml",
+        "operationId" : "addProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "createManualProgressEntryRequest" : {
+                    "$ref" : "#/components/schemas/CreateManualProgressEntryRequest"
+                  },
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  }
+                },
+                "required" : [ "createManualProgressEntryRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ManualProgressEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}" : {
+      "delete" : {
+        "operationId" : "removeProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Remove a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "get" : {
+        "operationId" : "getProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProgressEntryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a progress entry",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "patch" : {
+        "operationId" : "patchProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchManualProgressEntryRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ManualProgressEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modify a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}/deletion-request" : {
+      "post" : {
+        "operationId" : "requestProgressEntryDeletion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateApprovalRequestRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Request deletion of a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}/history" : {
+      "get" : {
+        "operationId" : "getManualProgressEntryHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetManualProgressEntryHistoryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the history of a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/school-entries" : {
+      "get" : {
+        "operationId" : "getProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureTypeFilter",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SchoolEntryProcedureType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "schoolIdFilter",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "schoolYearFilter",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1900,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "dayOfAppointmentFilter",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "in" : "query",
+          "name" : "hasAppointmentFilter",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "in" : "query",
+          "name" : "labelsFilter",
+          "required" : false,
+          "schema" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "isInvitationSentFilter",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SchoolEntryProcedureSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "searchFirstName",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "searchLastName",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "searchDateOfBirth",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetSchoolEntryProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all school entry procedures. Filter results by type. Sort and page the results by id.",
+        "tags" : [ "SchoolEntry" ]
+      },
+      "post" : {
+        "operationId" : "createProcedure",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateProcedureRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CreateProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a school entry procedure.",
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/appointments" : {
+      "post" : {
+        "operationId" : "createAppointmentsInBulk",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateAppointmentsBulkRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CreateAppointmentsBulkResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/by-person-id" : {
+      "get" : {
+        "operationId" : "getProceduresByPersonQuery",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "personId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresWithDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/download/invitations" : {
+      "post" : {
+        "operationId" : "downloadInvitations",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/DownloadInvitationsBulkRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/waiting-room-procedures" : {
+      "get" : {
+        "operationId" : "getWaitingRoomProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/WaitingRoomSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetWaitingRoomProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/{procedureId}" : {
+      "get" : {
+        "operationId" : "getProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ProcedureDetails"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get school entry procedure by id.",
+        "tags" : [ "SchoolEntry" ]
+      },
+      "put" : {
+        "operationId" : "updateProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateProcedureRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ProcedureDetails"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/{procedureId}/anamnesis" : {
+      "get" : {
+        "operationId" : "getAnamnesis",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Anamnesis"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get anamnesis for a procedure.",
+        "tags" : [ "SchoolEntry" ]
+      },
+      "put" : {
+        "operationId" : "updateAnamnesis",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/Anamnesis"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Anamnesis"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update anamnesis for a procedure.",
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/{procedureId}/child" : {
+      "put" : {
+        "operationId" : "updateChildData",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdatePersonRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ProcedureDetails"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/{procedureId}/close-procedure" : {
+      "post" : {
+        "operationId" : "closeProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CloseProcedureRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ProcedureDetails"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/{procedureId}/custodian" : {
+      "put" : {
+        "operationId" : "addCustodian",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddCustodianRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ProcedureDetails"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/{procedureId}/custodian/{custodianCentralFileStateId}" : {
+      "delete" : {
+        "operationId" : "removeCustodian",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "custodianCentralFileStateId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/RemoveCustodianRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ProcedureDetails"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntry" ]
+      },
+      "put" : {
+        "operationId" : "updateCustodian",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "custodianCentralFileStateId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdatePersonRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ProcedureDetails"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/{procedureId}/delete-procedure" : {
+      "delete" : {
+        "operationId" : "deleteProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/DeleteProcedureRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/{procedureId}/development-screening-result" : {
+      "get" : {
+        "operationId" : "getDevelopmentScreeningResult",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetDevelopmentScreeningResult"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get development screening result for a procedure.",
+        "tags" : [ "SchoolEntry" ]
+      },
+      "put" : {
+        "operationId" : "updateDevelopmentScreeningResult",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/DevelopmentScreeningResult"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetDevelopmentScreeningResult"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update development screening result for a procedure.",
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/{procedureId}/eye-examination-result" : {
+      "get" : {
+        "operationId" : "getEyeExaminationResult",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/EyeExaminationResult"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get eye examination for a procedure.",
+        "tags" : [ "SchoolEntry" ]
+      },
+      "put" : {
+        "operationId" : "updateEyeExaminationResult",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/EyeExaminationResult"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/EyeExaminationResult"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update eye examination for a procedure.",
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/{procedureId}/free-appointments" : {
+      "get" : {
+        "operationId" : "getFreeAppointmentsForProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SchoolEntryProcedureType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "labelIds",
+          "required" : false,
+          "schema" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "schoolId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "locationId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFreeAppointmentsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get free appointments for a procedure. Free appointments are determined based on the ProcedureType and labels.",
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/{procedureId}/hearing-test-result" : {
+      "get" : {
+        "operationId" : "getHearingTestResult",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/HearingTestResult"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get hearing test for a procedure.",
+        "tags" : [ "SchoolEntry" ]
+      },
+      "put" : {
+        "operationId" : "updateHearingTestResult",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/HearingTestResult"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/HearingTestResult"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update hearing test for a procedure.",
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/{procedureId}/medical-report" : {
+      "post" : {
+        "operationId" : "createMedicalReport",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateMedicalReportRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/{procedureId}/reopen-procedure" : {
+      "post" : {
+        "operationId" : "reopenProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ReopenProcedureRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ProcedureDetails"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/{procedureId}/school-info-letter" : {
+      "post" : {
+        "operationId" : "createSchoolInfoLetter",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateSchoolInfoLetterRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/{procedureId}/sopess-examination-result" : {
+      "get" : {
+        "operationId" : "getSopessExaminationResult",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SopessExaminationResult"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntry" ]
+      },
+      "put" : {
+        "operationId" : "updateSopessExaminationResult",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SopessExaminationResult"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SopessExaminationResult"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/{procedureId}/sync-person" : {
+      "put" : {
+        "operationId" : "syncPersonData",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SyncPersonRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ProcedureDetails"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/{procedureId}/vaccination-status" : {
+      "get" : {
+        "operationId" : "getVaccinationStatus",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/VaccinationStatus"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get vaccination status for a procedure.",
+        "tags" : [ "SchoolEntry" ]
+      },
+      "put" : {
+        "operationId" : "updateVaccinationStatus",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/VaccinationStatus"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/VaccinationStatus"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update vaccination status for a procedure.",
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/{procedureId}/validate-completeness" : {
+      "get" : {
+        "operationId" : "validateCompleteness",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ValidateRequiredProcedureDataResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entries/{procedureId}/waiting-room" : {
+      "put" : {
+        "operationId" : "updateWaitingRoomDetails",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/WaitingRoom"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/WaitingRoom"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update waiting room details for a procedure.",
+        "tags" : [ "SchoolEntry" ]
+      }
+    },
+    "/school-entry-labels" : {
+      "get" : {
+        "operationId" : "getLabels",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetSchoolEntryLabelsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Label" ]
+      },
+      "post" : {
+        "operationId" : "createLabel",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateLabelRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SchoolEntryLabel"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Label" ]
+      }
+    },
+    "/school-entry-labels/{id}" : {
+      "get" : {
+        "operationId" : "getLabel",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SchoolEntryLabel"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Label" ]
+      },
+      "put" : {
+        "operationId" : "updateLabel",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateLabelRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SchoolEntryLabel"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Label" ]
+      }
+    },
+    "/statistics/procedure-ids" : {
+      "post" : {
+        "operationId" : "getProcedureIds",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetProcedureIdsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureIdsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get procedure ids for procedure references",
+        "tags" : [ "StatisticsProcedureReference" ]
+      }
+    },
+    "/task-metrics" : {
+      "get" : {
+        "operationId" : "getTaskMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTaskMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of a specific procedure type"
+          }
+        },
+        "summary" : "Get tasks metrics for a procedure type of a business module for procedures created in the given time range",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks" : {
+      "get" : {
+        "operationId" : "getTasks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "assigneeId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "assignedById",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "taskTypes",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "taskStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortBy"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortOrder"
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TaskResponse"
+                }
+              }
+            },
+            "description" : "tasks"
+          }
+        },
+        "summary" : "Get tasks",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/dashboard" : {
+      "get" : {
+        "operationId" : "getTasksForDashboard",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TaskResponse"
+                }
+              }
+            },
+            "description" : "tasks"
+          }
+        },
+        "summary" : "Get tasks for the dashboard",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/team-view" : {
+      "get" : {
+        "description" : "Returns all _open_ tasks per module group member.",
+        "operationId" : "getTasksByAssignee",
+        "parameters" : [ {
+          "description" : "If provided, `assignee` must be member of the module group.\nIf not provided, all tasks for all members of the module group are returned.\n",
+          "in" : "query",
+          "name" : "assigneeId",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTaskByUserResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/{taskId}/assignment" : {
+      "put" : {
+        "operationId" : "assignTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "taskId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AssignTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Task"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/{taskId}/self-assignment" : {
+      "put" : {
+        "operationId" : "selfAssignTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "taskId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SelfAssignTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Task"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/test-helper/archiving-job" : {
+      "post" : {
+        "operationId" : "runArchivingJob",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/audit-log-storage" : {
+      "delete" : {
+        "operationId" : "clearAuditLogStorageDirectory",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/direct-procedure-type-assignment-on-import" : {
+      "post" : {
+        "operationId" : "enableDirectProcedureTypeAssignmentOnImport",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/enabled-new-features/{featureToDisable}" : {
+      "delete" : {
+        "operationId" : "disableNewFeature",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "featureToDisable",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/SchoolEntryFeature"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/enabled-new-features/{featureToEnable}" : {
+      "post" : {
+        "operationId" : "enableNewFeature",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "featureToEnable",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/SchoolEntryFeature"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/location-selection-mode/{newLocationSelectionMode}" : {
+      "post" : {
+        "operationId" : "updateLocationSelectionMode",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "newLocationSelectionMode",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/LocationSelectionMode"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population/appointment-block-groups" : {
+      "post" : {
+        "operationId" : "populateAppointmentBlockGroups",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PopulationRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SchoolEntryAppointmentBlockPopulationResult"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population/procedures" : {
+      "post" : {
+        "operationId" : "populateProcedures",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PopulationRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SchoolEntryProcedurePopulationResult"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/school-entries/closed" : {
+      "get" : {
+        "operationId" : "getIdsOfClosedProcedures",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetClosedProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/school-entries/{procedureId}/citizen-user-id" : {
+      "delete" : {
+        "operationId" : "clearCitizenUserId",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      },
+      "get" : {
+        "operationId" : "getCitizenUserId",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "uuid"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/value-evaluation/{procedureId}/percentiles" : {
+      "get" : {
+        "description" : "To calculate the percentiles, in addition to the data provided, the child's age and gender are also required.",
+        "operationId" : "getPercentiles",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Measured height in m.",
+          "in" : "query",
+          "name" : "height",
+          "required" : false,
+          "schema" : {
+            "type" : "number",
+            "description" : "Measured height in m.",
+            "format" : "double"
+          }
+        }, {
+          "description" : "Measured weight in kg.",
+          "in" : "query",
+          "name" : "weight",
+          "required" : false,
+          "schema" : {
+            "type" : "number",
+            "description" : "Measured weight in kg.",
+            "format" : "double"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Percentiles"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get calculated percentile values",
+        "tags" : [ "ValueEvaluator" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "AbstractFile" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFileReference"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "createdAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "fileName" : {
+              "type" : "string"
+            },
+            "fileSizeBytes" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "fileType" : {
+              "$ref" : "#/components/schemas/FileType"
+            },
+            "locked" : {
+              "type" : "boolean"
+            },
+            "modifiedAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/ApprovalRequestEntity"
+        } ]
+      },
+      "AbstractFileReference" : {
+        "required" : [ "@type", "deletable", "deleted", "fileId" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "deletable" : {
+            "type" : "boolean"
+          },
+          "deleted" : {
+            "type" : "boolean"
+          },
+          "fileId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "AddCitizenAnamnesisRequest" : {
+        "required" : [ "anamnesis" ],
+        "type" : "object",
+        "properties" : {
+          "anamnesis" : {
+            "$ref" : "#/components/schemas/CitizenAnamnesis"
+          }
+        },
+        "description" : "Add an anamnesis of the child completed by the custodians."
+      },
+      "AddCustodianRequest" : {
+        "required" : [ "custodian", "procedureVersion" ],
+        "type" : "object",
+        "properties" : {
+          "custodian" : {
+            "$ref" : "#/components/schemas/CreatePerson"
+          },
+          "procedureVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "AddGdprValidationTaskRequest" : {
+        "required" : [ "gdprProcedureId", "startedAt", "type" ],
+        "type" : "object",
+        "properties" : {
+          "gdprProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "startedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }
+      },
+      "AdditionalChildInfo" : {
+        "type" : "object",
+        "properties" : {
+          "numberOfSiblings" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "responsiblePhysician" : {
+            "type" : "string"
+          },
+          "siblingsBirthYears" : {
+            "type" : "array",
+            "items" : {
+              "type" : "integer",
+              "format" : "int32"
+            }
+          }
+        }
+      },
+      "Address" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "Anamnesis" : {
+        "required" : [ "additionalChildInfo", "checkUps", "daycareAndSchoolInfo", "developmentInfo", "familyHistoryInfo", "illnessAndAccidentInfo", "interestsAndSportsInfo", "migrationBackground", "promotionBeforeSchoolEntry", "promotionTherapyAndAidInfo", "version" ],
+        "type" : "object",
+        "properties" : {
+          "additionalChildInfo" : {
+            "$ref" : "#/components/schemas/AdditionalChildInfo"
+          },
+          "checkUps" : {
+            "$ref" : "#/components/schemas/CheckUps"
+          },
+          "childLanguageScreening" : {
+            "type" : "boolean",
+            "description" : "Boolean that indicates, if the child participated in the KiSS language screening."
+          },
+          "daycareAndSchoolInfo" : {
+            "$ref" : "#/components/schemas/DaycareAndSchoolInfo"
+          },
+          "developmentInfo" : {
+            "$ref" : "#/components/schemas/DevelopmentInfo"
+          },
+          "familyHistoryInfo" : {
+            "$ref" : "#/components/schemas/FamilyHistoryInfo"
+          },
+          "illnessAndAccidentInfo" : {
+            "$ref" : "#/components/schemas/IllnessAndAccidentInfo"
+          },
+          "interestsAndSportsInfo" : {
+            "$ref" : "#/components/schemas/InterestsAndSportsInfo"
+          },
+          "migrationBackground" : {
+            "$ref" : "#/components/schemas/MigrationBackground"
+          },
+          "personalConspicuities" : {
+            "type" : "boolean"
+          },
+          "preliminaryCourse" : {
+            "type" : "boolean",
+            "description" : "Boolean that indicates, if the child participated in a preliminary course."
+          },
+          "promotionBeforeSchoolEntry" : {
+            "$ref" : "#/components/schemas/PromotionBeforeSchoolEntry"
+          },
+          "promotionTherapyAndAidInfo" : {
+            "$ref" : "#/components/schemas/PromotionTherapyAndAidInfo"
+          },
+          "version" : {
+            "type" : "integer",
+            "description" : "Version of the entity. Each time the entity is changed, it is incremented by one.",
+            "format" : "int64"
+          }
+        }
+      },
+      "Appointment" : {
+        "required" : [ "end", "start" ],
+        "type" : "object",
+        "properties" : {
+          "end" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "start" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        },
+        "description" : "Appointment of a procedure."
+      },
+      "AppointmentAddress" : {
+        "required" : [ "address", "name" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "$ref" : "#/components/schemas/DomesticAddress"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "AppointmentBlockSortKey" : {
+        "type" : "string",
+        "enum" : [ "START", "END" ]
+      },
+      "AppointmentLocation" : {
+        "required" : [ "id", "name" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "AppointmentType" : {
+        "type" : "string",
+        "enum" : [ "CONSULTATION", "VACCINATION", "REGULAR_EXAMINATION", "CAN_CHILD", "ENTRY_LEVEL", "SPECIAL_NEEDS", "PROOF_SUBMISSION", "HIV_STI_CONSULTATION", "SEX_WORK", "RESULTS_REVIEW", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "AppointmentTypeConfig" : {
+        "required" : [ "appointmentTypeDto", "id", "standardDurationInMinutes" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentTypeDto" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "standardDurationInMinutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "ApprovalRequest" : {
+        "required" : [ "approvalRequestId", "createdAt", "createdBy", "operation", "reason", "status" ],
+        "type" : "object",
+        "properties" : {
+          "approvalRequestId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decidedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "decidedBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decision" : {
+            "$ref" : "#/components/schemas/Decision"
+          },
+          "entity" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/ManualProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "operation" : {
+            "$ref" : "#/components/schemas/Operation"
+          },
+          "reason" : {
+            "type" : "string"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ApprovalRequestStatus"
+          }
+        }
+      },
+      "ApprovalRequestEntity" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ApprovalRequestStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "ArchivingDetails" : {
+        "required" : [ "archivingPeriodYears", "archivingRelevance" ],
+        "type" : "object",
+        "properties" : {
+          "archivingPeriodYears" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          }
+        }
+      },
+      "ArchivingRelevance" : {
+        "type" : "string",
+        "enum" : [ "DEFAULT", "RELEVANT", "IRRELEVANT" ]
+      },
+      "ArchivingRelevanceSettings" : {
+        "required" : [ "archivingRelevance", "defaultArchivingRelevance" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "defaultArchivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          }
+        }
+      },
+      "Articulation" : {
+        "type" : "object",
+        "properties" : {
+          "formationChPoints" : {
+            "$ref" : "#/components/schemas/ArticulationValue"
+          },
+          "formationSchPoints" : {
+            "$ref" : "#/components/schemas/ArticulationValue"
+          },
+          "formationsTrDrKrGrPoints" : {
+            "$ref" : "#/components/schemas/ArticulationValue"
+          },
+          "letterBPoints" : {
+            "$ref" : "#/components/schemas/ArticulationValue"
+          },
+          "letterFAndFormationPfPoints" : {
+            "$ref" : "#/components/schemas/ArticulationValue"
+          },
+          "letterRPoints" : {
+            "$ref" : "#/components/schemas/ArticulationValue"
+          },
+          "lettersGAndKPoints" : {
+            "$ref" : "#/components/schemas/ArticulationValue"
+          },
+          "lettersLAndNPoints" : {
+            "$ref" : "#/components/schemas/ArticulationValue"
+          },
+          "lettersSAndZPoints" : {
+            "$ref" : "#/components/schemas/ArticulationValue"
+          },
+          "lettersTAndDPoints" : {
+            "$ref" : "#/components/schemas/ArticulationValue"
+          }
+        }
+      },
+      "ArticulationValue" : {
+        "type" : "string",
+        "enum" : [ "INCONSPICUOUS", "CONSPICUOUS", "UNKNOWN" ]
+      },
+      "AssignTaskRequest" : {
+        "required" : [ "assignee", "taskVersion" ],
+        "type" : "object",
+        "properties" : {
+          "assignee" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "taskVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "BooleanWithUnknown" : {
+        "type" : "string",
+        "enum" : [ "TRUE", "FALSE", "UNKNOWN" ]
+      },
+      "BulkUpdateProceduresArchivingRelevanceRequest" : {
+        "required" : [ "archivingRelevance", "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "BulkUpdateProceduresArchivingRelevanceResponse" : {
+        "required" : [ "archivingRelevance", "failedProcedures", "updatedProcedures" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "failedProcedures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "updatedProcedures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "BusinessModule" : {
+        "type" : "string",
+        "enum" : [ "INSPECTION", "SCHOOL_ENTRY", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY", "DENTAL", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "BusinessProcedureInclusionStatus" : {
+        "type" : "string",
+        "enum" : [ "INCLUDED", "UNDECIDED" ]
+      },
+      "BusinessProcedureWithInclusionStatus" : {
+        "required" : [ "businessProcedure", "inclusionStatus" ],
+        "type" : "object",
+        "properties" : {
+          "businessProcedure" : {
+            "$ref" : "#/components/schemas/Procedure"
+          },
+          "inclusionStatus" : {
+            "$ref" : "#/components/schemas/BusinessProcedureInclusionStatus"
+          }
+        }
+      },
+      "CheckFileStateUsageRequest" : {
+        "required" : [ "fileStatesIds" ],
+        "type" : "object",
+        "properties" : {
+          "fileStatesIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "CheckFileStateUsageResponse" : {
+        "required" : [ "inUse" ],
+        "type" : "object",
+        "properties" : {
+          "inUse" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "CheckUps" : {
+        "type" : "object",
+        "properties" : {
+          "u2" : {
+            "$ref" : "#/components/schemas/BooleanWithUnknown"
+          },
+          "u3" : {
+            "$ref" : "#/components/schemas/BooleanWithUnknown"
+          },
+          "u4" : {
+            "$ref" : "#/components/schemas/BooleanWithUnknown"
+          },
+          "u5" : {
+            "$ref" : "#/components/schemas/BooleanWithUnknown"
+          },
+          "u6" : {
+            "$ref" : "#/components/schemas/BooleanWithUnknown"
+          },
+          "u7" : {
+            "$ref" : "#/components/schemas/BooleanWithUnknown"
+          },
+          "u7a" : {
+            "$ref" : "#/components/schemas/BooleanWithUnknown"
+          },
+          "u8" : {
+            "$ref" : "#/components/schemas/BooleanWithUnknown"
+          },
+          "u9" : {
+            "$ref" : "#/components/schemas/BooleanWithUnknown"
+          }
+        }
+      },
+      "Child" : {
+        "required" : [ "dateOfBirth", "firstName", "gender", "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "Date of birth of the person.",
+            "format" : "date",
+            "example" : "2024-02-01"
+          },
+          "firstName" : {
+            "type" : "string",
+            "description" : "First name of the person.",
+            "example" : "Hermione"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "type" : "string",
+            "description" : "Last name of the person.",
+            "example" : "Granger"
+          }
+        },
+        "description" : "Child representation. In the context of the school entry examination, the child represents the patient."
+      },
+      "CitizenAdditionalChildInfo" : {
+        "type" : "object",
+        "properties" : {
+          "responsiblePhysician" : {
+            "type" : "string"
+          },
+          "siblingsBirthYears" : {
+            "type" : "array",
+            "items" : {
+              "type" : "integer",
+              "format" : "int32"
+            }
+          }
+        }
+      },
+      "CitizenAnamnesis" : {
+        "required" : [ "additionalChildInfo", "daycareAndSchoolInfo", "developmentInfo", "familyHistoryInfo", "illnessAndAccidentInfo", "interestsAndSportsInfo", "migrationBackground", "promotionBeforeSchoolEntry", "promotionTherapyAndAidInfo" ],
+        "type" : "object",
+        "properties" : {
+          "additionalChildInfo" : {
+            "$ref" : "#/components/schemas/CitizenAdditionalChildInfo"
+          },
+          "childLanguageScreening" : {
+            "type" : "boolean",
+            "description" : "Boolean that indicates, if the child participated in the KiSS language screening."
+          },
+          "daycareAndSchoolInfo" : {
+            "$ref" : "#/components/schemas/DaycareAndSchoolInfo"
+          },
+          "developmentInfo" : {
+            "$ref" : "#/components/schemas/DevelopmentInfo"
+          },
+          "familyHistoryInfo" : {
+            "$ref" : "#/components/schemas/FamilyHistoryInfo"
+          },
+          "illnessAndAccidentInfo" : {
+            "$ref" : "#/components/schemas/IllnessAndAccidentInfo"
+          },
+          "interestsAndSportsInfo" : {
+            "$ref" : "#/components/schemas/InterestsAndSportsInfo"
+          },
+          "migrationBackground" : {
+            "$ref" : "#/components/schemas/CitizenMigrationBackground"
+          },
+          "personalConspicuities" : {
+            "type" : "boolean"
+          },
+          "preliminaryCourse" : {
+            "type" : "boolean",
+            "description" : "Boolean that indicates, if the child participated in a preliminary course."
+          },
+          "promotionBeforeSchoolEntry" : {
+            "$ref" : "#/components/schemas/PromotionBeforeSchoolEntry"
+          },
+          "promotionTherapyAndAidInfo" : {
+            "$ref" : "#/components/schemas/PromotionTherapyAndAidInfo"
+          }
+        }
+      },
+      "CitizenChild" : {
+        "required" : [ "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "lastName" : {
+            "type" : "string"
+          }
+        },
+        "description" : "Get procedure information of child."
+      },
+      "CitizenMigrationBackground" : {
+        "type" : "object",
+        "properties" : {
+          "countryOfBirthChild" : {
+            "$ref" : "#/components/schemas/SchoolEntryCountryCode"
+          },
+          "countryOfBirthFirstParent" : {
+            "$ref" : "#/components/schemas/SchoolEntryCountryCode"
+          },
+          "countryOfBirthSecondParent" : {
+            "$ref" : "#/components/schemas/SchoolEntryCountryCode"
+          },
+          "inGermanySince" : {
+            "type" : "string",
+            "description" : "Date from which the child lives in Germany",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "nationalityChild" : {
+            "$ref" : "#/components/schemas/SchoolEntryCountryCode"
+          },
+          "nationalityFirstParent" : {
+            "$ref" : "#/components/schemas/SchoolEntryCountryCode"
+          },
+          "nationalitySecondParent" : {
+            "$ref" : "#/components/schemas/SchoolEntryCountryCode"
+          }
+        }
+      },
+      "CloseProcedureRequest" : {
+        "required" : [ "version" ],
+        "type" : "object",
+        "properties" : {
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ContactDetails" : {
+        "required" : [ "contactType", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "$ref" : "#/components/schemas/InboxProcedureAddress"
+          },
+          "contactType" : {
+            "$ref" : "#/components/schemas/ContactType"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "emailAddress" : {
+            "type" : "string"
+          },
+          "facilityName" : {
+            "type" : "string"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "lastName" : {
+            "type" : "string"
+          },
+          "phoneNumber" : {
+            "type" : "string"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "$ref" : "#/components/schemas/Title"
+          }
+        }
+      },
+      "ContactType" : {
+        "type" : "string",
+        "enum" : [ "PRIVATE_PERSON", "FACILITY" ]
+      },
+      "CountryCode" : {
+        "type" : "string",
+        "description" : "List of country codes in ISO 3166-1 alpha-2 format. With custom extensions for stateless, non-standard countries, and unknown countries.",
+        "enum" : [ "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW", "XK", "UNKNOWN", "STATELESS" ]
+      },
+      "CreateAppointmentBlockGroupResponse" : {
+        "required" : [ "appointmentBlockIds", "id" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlockIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the AppointmentBlockGroup.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          }
+        }
+      },
+      "CreateAppointmentsBulkRequest" : {
+        "required" : [ "procedureIds" ],
+        "type" : "object",
+        "properties" : {
+          "procedureIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "CreateAppointmentsBulkResponse" : {
+        "required" : [ "numCreated", "numError", "numUnmodified" ],
+        "type" : "object",
+        "properties" : {
+          "numCreated" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "numError" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "numUnmodified" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "CreateApprovalRequestRequest" : {
+        "required" : [ "reason" ],
+        "type" : "object",
+        "properties" : {
+          "reason" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateDailyAppointmentBlock" : {
+        "required" : [ "daysOfWeek", "end", "start" ],
+        "type" : "object",
+        "properties" : {
+          "daysOfWeek" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DayOfWeek"
+            }
+          },
+          "end" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block ends.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:45:00.123456+01:00"
+          },
+          "start" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block starts.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:00:00.123456+01:00"
+          }
+        }
+      },
+      "CreateDailyAppointmentBlockGroupRequest" : {
+        "required" : [ "appointmentBlocks", "parallelExaminations", "type" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlocks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CreateDailyAppointmentBlock"
+            }
+          },
+          "consultants" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "locationId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "mfas" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "parallelExaminations" : {
+            "maximum" : 10,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "physicians" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }
+      },
+      "CreateInboxProcedureRequest" : {
+        "required" : [ "contactDetails", "inboxProgressEntry" ],
+        "type" : "object",
+        "properties" : {
+          "contactDetails" : {
+            "$ref" : "#/components/schemas/ContactDetails"
+          },
+          "inboxProcedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "inboxProgressEntry" : {
+            "$ref" : "#/components/schemas/CreateInboxProgressEntry"
+          }
+        }
+      },
+      "CreateInboxProgressEntry" : {
+        "required" : [ "inboxProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProgressEntryType" : {
+            "$ref" : "#/components/schemas/InboxProgressEntryType"
+          },
+          "messageText" : {
+            "type" : "string"
+          },
+          "subject" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateLabelRequest" : {
+        "required" : [ "name" ],
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          },
+          "name" : {
+            "maxLength" : 255,
+            "minLength" : 0,
+            "type" : "string"
+          }
+        }
+      },
+      "CreateManualProgressEntryRequest" : {
+        "required" : [ "manualProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "keyDocumentType" : {
+            "type" : "string"
+          },
+          "manualProgressEntryType" : {
+            "$ref" : "#/components/schemas/ManualProgressEntryType"
+          },
+          "note" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateMedicalReportRequest" : {
+        "required" : [ "isVisio", "remark" ],
+        "type" : "object",
+        "properties" : {
+          "isVisio" : {
+            "type" : "boolean"
+          },
+          "remark" : {
+            "maxLength" : 600,
+            "minLength" : 1,
+            "type" : "string"
+          }
+        }
+      },
+      "CreatePerson" : {
+        "required" : [ "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "items" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "referenceId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string"
+          }
+        }
+      },
+      "CreateProcedureRequest" : {
+        "required" : [ "child", "type" ],
+        "type" : "object",
+        "properties" : {
+          "child" : {
+            "$ref" : "#/components/schemas/CreatePerson"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/SchoolEntryProcedureType"
+          }
+        }
+      },
+      "CreateProcedureResponse" : {
+        "required" : [ "procedureId" ],
+        "type" : "object",
+        "properties" : {
+          "procedureId" : {
+            "type" : "string",
+            "description" : "Id of the Procedure.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          }
+        }
+      },
+      "CreateSchoolInfoLetterRequest" : {
+        "required" : [ "consultationWithCustodianRecommended", "meetingBetweenYouthHealthServicesAndSchoolManagementRecommended", "referredToFurtherConsultationFromSchool" ],
+        "type" : "object",
+        "properties" : {
+          "consultationWithCustodianRecommended" : {
+            "type" : "boolean"
+          },
+          "meetingBetweenYouthHealthServicesAndSchoolManagementRecommended" : {
+            "type" : "boolean"
+          },
+          "note" : {
+            "type" : "string"
+          },
+          "parentsWishNote" : {
+            "type" : "string"
+          },
+          "referredToFurtherConsultationFromSchool" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "DataOrigin" : {
+        "type" : "string",
+        "description" : "A list of possible origins of Persons and Facility in the Central Files. EDIT will only be set automatically on changes. EXTERNAL is for entries that come, e.g., from the citizen portal. IMPORT is reserved for automatic imports. MANUAL shall be set for every creation or connection done by an employee.",
+        "enum" : [ "MANUAL", "EXTERNAL", "IMPORT", "EDIT" ]
+      },
+      "DayOfWeek" : {
+        "type" : "string",
+        "enum" : [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ]
+      },
+      "DaycareAndSchoolInfo" : {
+        "type" : "object",
+        "properties" : {
+          "daycareName" : {
+            "type" : "string"
+          },
+          "inDaycareSince" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "schoolName" : {
+            "type" : "string"
+          },
+          "wasInDaycare" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "DecibelValue" : {
+        "type" : "string",
+        "description" : "Decibel value that was audible for the respective ear.",
+        "example" : "{\"250\":\"null\",\"500\":\"null\",\"1000\":\"30\",\"2000\":\"40\",\"4000\":\"50\",\"6000\":\"60\",\"8000\":\"60\"}",
+        "enum" : [ "20", "30", "40", "50", "60" ]
+      },
+      "Decision" : {
+        "type" : "string",
+        "enum" : [ "GRANTED", "DENIED" ]
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "DeleteDownloadPackagesRequest" : {
+        "required" : [ "downloadIds" ],
+        "type" : "object",
+        "properties" : {
+          "downloadIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "DeleteProcedureRequest" : {
+        "required" : [ "version" ],
+        "type" : "object",
+        "properties" : {
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "DetailedFacility" : {
+        "required" : [ "facilityFileState", "facilityType" ],
+        "type" : "object",
+        "properties" : {
+          "facilityFileState" : {
+            "$ref" : "#/components/schemas/GetFacilityFileStateResponse"
+          },
+          "facilityType" : {
+            "$ref" : "#/components/schemas/FacilityType"
+          }
+        }
+      },
+      "DetailedPerson" : {
+        "required" : [ "person", "personType" ],
+        "type" : "object",
+        "properties" : {
+          "person" : {
+            "$ref" : "#/components/schemas/GetPersonFileStateResponse"
+          },
+          "personType" : {
+            "$ref" : "#/components/schemas/PersonType"
+          }
+        }
+      },
+      "DetailedTask" : {
+        "required" : [ "task" ],
+        "type" : "object",
+        "properties" : {
+          "assignedByName" : {
+            "type" : "string"
+          },
+          "assigneeName" : {
+            "type" : "string"
+          },
+          "task" : {
+            "$ref" : "#/components/schemas/Task"
+          }
+        }
+      },
+      "DevelopmentInfo" : {
+        "type" : "object",
+        "properties" : {
+          "birthWeight" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "developmentConspicuities" : {
+            "type" : "boolean"
+          },
+          "gestationalAge" : {
+            "type" : "boolean"
+          },
+          "infancyConspicuities" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "DevelopmentScreeningResult" : {
+        "required" : [ "handicap", "measurements", "physicalExamination", "psychoSocialRisk", "socioEducationalPerformance", "version" ],
+        "type" : "object",
+        "properties" : {
+          "extraEffort" : {
+            "type" : "boolean"
+          },
+          "handicap" : {
+            "$ref" : "#/components/schemas/Handicap"
+          },
+          "measurements" : {
+            "$ref" : "#/components/schemas/Measurements"
+          },
+          "physicalExamination" : {
+            "$ref" : "#/components/schemas/PhysicalExamination"
+          },
+          "psychoSocialRisk" : {
+            "$ref" : "#/components/schemas/PsychoSocialRisk"
+          },
+          "schoolFeedback" : {
+            "$ref" : "#/components/schemas/SchoolFeedback"
+          },
+          "schoolRecommendation" : {
+            "$ref" : "#/components/schemas/SchoolRecommendation"
+          },
+          "socioEducationalPerformance" : {
+            "$ref" : "#/components/schemas/SocioEducationalPerformance"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "DisabilityType" : {
+        "type" : "string",
+        "description" : "Type of the disability. This field can be used to indicate whether the disability is physical, mental, emotional or has multiple manifestations.",
+        "enum" : [ "PHYSICAL", "MENTAL", "EMOTIONAL", "MULTIPLE" ]
+      },
+      "DoctorLetterValue" : {
+        "type" : "string",
+        "description" : "The child's family doctor comments on the findings of the health department regarding the examination. Only relevant if examinationResultValue == DOCTOR_LETTER.",
+        "example" : "CONFIRMED",
+        "enum" : [ "NO_REPLY", "CONFIRMED", "PARTIALLY_CONFIRMED", "NOT_CONFIRMED" ]
+      },
+      "DomesticAddress" : {
+        "required" : [ "city", "country", "postalCode", "street" ],
+        "type" : "object",
+        "description" : "A usual domestic address.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "addressAddition" : {
+              "maxLength" : 100,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "A descriptive addition to the address.",
+              "example" : "2.OG links"
+            },
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "houseNumber" : {
+              "maxLength" : 11,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The house number of the address, including extensions.",
+              "example" : "1a"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "street" : {
+              "maxLength" : 55,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the street of the address, without the house number.",
+              "example" : "Beispielweg"
+            }
+          }
+        } ]
+      },
+      "DownloadInvitationsBulkRequest" : {
+        "required" : [ "procedureIds" ],
+        "type" : "object",
+        "properties" : {
+          "procedureIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "EvaluationArticulationValue" : {
+        "type" : "string",
+        "enum" : [ "CONSPICUOUS", "INCONSPICUOUS" ]
+      },
+      "EvaluationExamination" : {
+        "type" : "object",
+        "properties" : {
+          "doctorLetterValue" : {
+            "$ref" : "#/components/schemas/DoctorLetterValue"
+          },
+          "examinationResultValue" : {
+            "$ref" : "#/components/schemas/SopessExaminationResultValue"
+          }
+        }
+      },
+      "EvaluationExaminationValue" : {
+        "type" : "string",
+        "enum" : [ "CONSPICUOUS", "BORDERLINE", "INCONSPICUOUS", "UNKNOWN" ]
+      },
+      "ExaminationResult" : {
+        "type" : "object",
+        "properties" : {
+          "doctorLetterValue" : {
+            "$ref" : "#/components/schemas/DoctorLetterValue"
+          },
+          "examinationResultValue" : {
+            "$ref" : "#/components/schemas/ExaminationResultValue"
+          }
+        }
+      },
+      "ExaminationResultValue" : {
+        "type" : "string",
+        "description" : "Result of the examination.",
+        "example" : "DOCTOR_LETTER",
+        "enum" : [ "OK", "KNOWN", "DOCTOR_LETTER", "UNKNOWN" ]
+      },
+      "ExaminationWithDiagnosis" : {
+        "required" : [ "examinationResult" ],
+        "type" : "object",
+        "properties" : {
+          "examinationResult" : {
+            "$ref" : "#/components/schemas/ExaminationResult"
+          },
+          "icd10Codes" : {
+            "type" : "array",
+            "description" : "List of ICD-10 codes to document the examination result.",
+            "example" : [ "A00", "C00" ],
+            "items" : {
+              "type" : "string",
+              "description" : "List of ICD-10 codes to document the examination result.",
+              "example" : "[\"A00\",\"C00\"]"
+            }
+          }
+        },
+        "description" : "Diagnosis related to ear, nose, and throat."
+      },
+      "ExportArchivingRelevantProceduresRequest" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "EyeExaminationResult" : {
+        "required" : [ "amblyopia", "astigmatism", "colorVisionDisorder", "eyeExamination", "hyperopia", "ishiharaExamination", "langExamination", "leftEye", "myopia", "otherDiagnosis", "rightEye", "strabismus", "version" ],
+        "type" : "object",
+        "properties" : {
+          "amblyopia" : {
+            "type" : "boolean",
+            "description" : "Can be set to true if doctorLetterValue of the eyeExamination is CONFIRMED OR PARTIALLY_CONFIRMED.\n If true, the doctor determined an amblyopia during the examination."
+          },
+          "astigmatism" : {
+            "type" : "boolean",
+            "description" : "Can be set to true if doctorLetterValue of the eyeExamination is CONFIRMED OR PARTIALLY_CONFIRMED.\n If true, the doctor determined astigmatism during the examination."
+          },
+          "colorVisionDisorder" : {
+            "type" : "boolean",
+            "description" : "Can be set to true if doctorLetterValue of the eyeExamination is CONFIRMED OR PARTIALLY_CONFIRMED.\n If true, the doctor determined color vision disorder during the examination."
+          },
+          "eyeExamination" : {
+            "$ref" : "#/components/schemas/ExaminationResult"
+          },
+          "hyperopia" : {
+            "type" : "boolean",
+            "description" : "Can be set to true if doctorLetterValue of the eyeExamination is CONFIRMED OR PARTIALLY_CONFIRMED.\n If true, the doctor determined hyperopia during the examination."
+          },
+          "ishiharaExamination" : {
+            "$ref" : "#/components/schemas/ExaminationResult"
+          },
+          "langExamination" : {
+            "$ref" : "#/components/schemas/ExaminationResult"
+          },
+          "leftEye" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/PercentageValue"
+            },
+            "description" : "Examination results for the left eye. Expected keys: EyeExaminationType values",
+            "example" : {
+              "DISTANCE" : "PERCENTAGE_50",
+              "DISTANCE_PLUS_15DPT" : "PERCENTAGE_70",
+              "DISTANCE_WITH_GLASSES" : "PERCENTAGE_100"
+            }
+          },
+          "myopia" : {
+            "type" : "boolean",
+            "description" : "Can be set to true if doctorLetterValue of the eyeExamination is CONFIRMED OR PARTIALLY_CONFIRMED.\n If true, the doctor determined myopia during the examination."
+          },
+          "note" : {
+            "type" : "string"
+          },
+          "otherDiagnosis" : {
+            "type" : "boolean",
+            "description" : "Can be set to true if doctorLetterValue of the eyeExamination is CONFIRMED OR PARTIALLY_CONFIRMED.\n If true, the doctor determined another diagnosis during the examination."
+          },
+          "rightEye" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/PercentageValue"
+            },
+            "description" : "Examination results for the right eye. Expected keys: EyeExaminationType values",
+            "example" : {
+              "DISTANCE" : "PERCENTAGE_50",
+              "DISTANCE_PLUS_15DPT" : "PERCENTAGE_70",
+              "DISTANCE_WITH_GLASSES" : "PERCENTAGE_100"
+            }
+          },
+          "strabismus" : {
+            "type" : "boolean",
+            "description" : "Can be set to true if doctorLetterValue of the eyeExamination is CONFIRMED OR PARTIALLY_CONFIRMED.\n If true, the doctor determined strabismus during the examination."
+          },
+          "version" : {
+            "type" : "integer",
+            "description" : "Version of the entity. Each time the entity is changed, it is incremented by one.",
+            "format" : "int64"
+          }
+        }
+      },
+      "EyeExaminationType" : {
+        "type" : "string",
+        "description" : "Different conditions to which the child's vision is examined.",
+        "enum" : [ "DISTANCE", "DISTANCE_PLUS_15DPT", "DISTANCE_WITH_GLASSES" ]
+      },
+      "FacilityContactPerson" : {
+        "required" : [ "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "emailAddress" : {
+            "maxLength" : 254,
+            "minLength" : 6,
+            "type" : "string",
+            "description" : "The email addresses of the Contact Person.",
+            "example" : "mail1@address.de"
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Contact Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Contact Person.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "maxLength" : 23,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The phone number of the Contact Person.",
+            "example" : "+491234567890"
+          },
+          "role" : {
+            "maxLength" : 255,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The role of the Contact Person in the Facility.",
+            "example" : "CEO"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of the Contact Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "FacilityType" : {
+        "type" : "string",
+        "enum" : [ "SCHOOL", "INSPECTION", "DAYCARE", "HOSPITAL", "MEDICAL_PRACTICE", "REFUGEE_ACCOMMODATION", "OTHER" ]
+      },
+      "FamilyHistoryInfo" : {
+        "type" : "object",
+        "properties" : {
+          "chronicIllnessOrDisabilityInFamily" : {
+            "type" : "string"
+          },
+          "spectaclesInFamily" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "FamilyLanguageValue" : {
+        "type" : "string",
+        "enum" : [ "GERMAN", "TURKISH", "KURDISH", "RUSSIAN", "POLISH", "ARABIC", "FARSI_DARI", "SERBO_CROATIAN", "ROMAN", "BULGARIAN", "PASHTU", "TIGRINIA", "BERBERIAN", "AMHARIAN", "ARAMEAN", "ITALIAN", "SPANISH", "GREEK", "PORTUGUESE", "ENGLISH", "FRENCH", "URDU", "OTHER_EUROPEAN_LANGUAGES", "OTHER_ASIAN_LANGUAGES", "OTHER_AFRICAN_LANGUAGES", "OTHER_LANGUAGES", "UNKNOWN" ]
+      },
+      "FileMetaData" : {
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          }
+        }
+      },
+      "FileType" : {
+        "type" : "string",
+        "enum" : [ "JPEG", "PNG", "PDF", "EML" ]
+      },
+      "GdprDownloadPackageInfo" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GdprFacility" : {
+        "required" : [ "address", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "dataTransmitterPseudonymId" : {
+              "type" : "string",
+              "description" : "The 'DatenübermittlerPseudonymId' of the MUK user",
+              "example" : "du-986b2b54ab89cf4ed674ad8c3126b966b54d4872"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Facility.",
+              "example" : "mail@address.de"
+            },
+            "name" : {
+              "maxLength" : 300,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the Facility.",
+              "example" : "123 Example Facility"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The phone number of the Facility.",
+              "example" : "+491234567890"
+            }
+          }
+        } ]
+      },
+      "GdprIdentificationData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "GdprPerson" : {
+        "required" : [ "address", "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "bpk2" : {
+              "type" : "string",
+              "description" : "The bpk2 of the BundId user",
+              "example" : "VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0"
+            },
+            "dateOfBirth" : {
+              "type" : "string",
+              "description" : "The date of birth of the Person.",
+              "format" : "date",
+              "example" : "2000-01-01"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Person.",
+              "example" : "mail@address.de"
+            },
+            "firstName" : {
+              "maxLength" : 80,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The given name(s) of the Person.",
+              "example" : "John"
+            },
+            "lastName" : {
+              "maxLength" : 120,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The last name of the Person.",
+              "example" : "Doe"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 0,
+              "type" : "string",
+              "description" : "The phone number of the Person.",
+              "example" : "+491234567890"
+            },
+            "salutation" : {
+              "$ref" : "#/components/schemas/Salutation"
+            },
+            "title" : {
+              "maxLength" : 119,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The academic title of the Person.",
+              "example" : "Prof. Dr."
+            }
+          }
+        } ]
+      },
+      "GdprProcedureType" : {
+        "type" : "string",
+        "description" : "A list of types of GDPR procedures.",
+        "enum" : [ "RIGHT_OF_ACCESS", "RIGHT_TO_ERASURE" ]
+      },
+      "GdprValidationTask" : {
+        "required" : [ "dueDate", "gdprProcedureId", "identificationData", "status", "type" ],
+        "type" : "object",
+        "properties" : {
+          "dueDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "gdprProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "identificationData" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GdprFacility"
+            }, {
+              "$ref" : "#/components/schemas/GdprPerson"
+            } ]
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }
+      },
+      "GdprValidationTaskSortKey" : {
+        "type" : "string",
+        "enum" : [ "CREATED_AT" ]
+      },
+      "GdprValidationTaskStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "Gender" : {
+        "type" : "string",
+        "description" : "The list of genders as specified in the German Personenstandsgesetz.",
+        "enum" : [ "NOT_SPECIFIED", "DIVERSE", "FEMALE", "MALE" ]
+      },
+      "GenericFileReference" : {
+        "required" : [ "@type", "deletable", "deleted", "fileId" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFileReference"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "GermanKnowledgeValue" : {
+        "type" : "string",
+        "enum" : [ "NO_GERMAN", "BAD", "FLUID_WITH_MAJOR_ERRORS", "FLUID_WITH_MINOR_ERRORS", "FAULTLESS", "UNKNOWN" ]
+      },
+      "GetAllValidationTasksResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GdprValidationTask"
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetAppointmentBlock" : {
+        "required" : [ "end", "id", "numberOfBookedAppointments", "numberOfFreeAppointments", "start" ],
+        "type" : "object",
+        "properties" : {
+          "end" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block ends.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:45:00.123456+01:00"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the AppointmentBlock.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "numberOfBookedAppointments" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "numberOfFreeAppointments" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "start" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block starts.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:00:00.123456+01:00"
+          }
+        },
+        "description" : "A planned appointment block. Appointment blocks offer a set of bookable appointments at different times within the timeframe of the appointment block."
+      },
+      "GetAppointmentBlockGroup" : {
+        "required" : [ "appointmentBlocks", "id", "parallelExaminations", "type" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlocks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GetAppointmentBlock"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the AppointmentBlockGroup.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "location" : {
+            "$ref" : "#/components/schemas/AppointmentLocation"
+          },
+          "parallelExaminations" : {
+            "maximum" : 10,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }
+      },
+      "GetAppointmentBlockGroupsResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GetAppointmentBlockGroup"
+            }
+          },
+          "totalNumberOfElements" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetAppointmentTypesResponse" : {
+        "required" : [ "appointmentTypeConfigDtos" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentTypeConfigDtos" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AppointmentTypeConfig"
+            }
+          }
+        }
+      },
+      "GetArchivableProceduresResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetArchivableProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CLOSED_AT",
+        "enum" : [ "CLOSED_AT", "PROCEDURE_TYPE" ]
+      },
+      "GetArchivableProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetArchivingConfigurationResponse" : {
+        "required" : [ "archivingDetails", "gracePeriodMonths" ],
+        "type" : "object",
+        "properties" : {
+          "archivingDetails" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/ArchivingDetails"
+            }
+          },
+          "gracePeriodMonths" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetCitizenFreeAppointmentsResponse" : {
+        "required" : [ "freeAppointments" ],
+        "type" : "object",
+        "properties" : {
+          "freeAppointments" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Appointment"
+            }
+          }
+        },
+        "description" : "Fetch all free appointments in the configured period."
+      },
+      "GetCitizenProcedureResponse" : {
+        "required" : [ "allowCitizenAnamnesis", "appointmentAddress", "appointmentChangesByCitizenLeft", "appointmentEnd", "appointmentStart", "child", "isClosedProcedure" ],
+        "type" : "object",
+        "properties" : {
+          "allowCitizenAnamnesis" : {
+            "type" : "boolean"
+          },
+          "appointmentAddress" : {
+            "$ref" : "#/components/schemas/AppointmentAddress"
+          },
+          "appointmentChangesByCitizenLeft" : {
+            "maximum" : 2,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "appointmentEnd" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "appointmentStart" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "child" : {
+            "$ref" : "#/components/schemas/CitizenChild"
+          },
+          "isClosedProcedure" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "GetClosedProceduresResponse" : {
+        "required" : [ "procedureIds" ],
+        "type" : "object",
+        "properties" : {
+          "procedureIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetCountryCodesResponse" : {
+        "required" : [ "countryCodes" ],
+        "type" : "object",
+        "properties" : {
+          "countryCodes" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "integer",
+              "format" : "int32"
+            }
+          }
+        },
+        "description" : "Possible countries and their group. Expected keys: SchoolEntryCountryCode"
+      },
+      "GetDetailedProcedureResponse" : {
+        "required" : [ "facilities", "persons", "procedure", "tasks" ],
+        "type" : "object",
+        "properties" : {
+          "facilities" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedFacility"
+            }
+          },
+          "persons" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedPerson"
+            }
+          },
+          "procedure" : {
+            "$ref" : "#/components/schemas/Procedure"
+          },
+          "tasks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedTask"
+            }
+          }
+        }
+      },
+      "GetDevelopmentScreeningResult" : {
+        "required" : [ "handicap", "measurements", "percentiles", "physicalExamination", "psychoSocialRisk", "socioEducationalPerformance", "version" ],
+        "type" : "object",
+        "properties" : {
+          "extraEffort" : {
+            "type" : "boolean",
+            "description" : "If true, then the examination of the child represented an additional effort."
+          },
+          "handicap" : {
+            "$ref" : "#/components/schemas/Handicap"
+          },
+          "measurements" : {
+            "$ref" : "#/components/schemas/Measurements"
+          },
+          "percentiles" : {
+            "$ref" : "#/components/schemas/Percentiles"
+          },
+          "physicalExamination" : {
+            "$ref" : "#/components/schemas/PhysicalExamination"
+          },
+          "psychoSocialRisk" : {
+            "$ref" : "#/components/schemas/PsychoSocialRisk"
+          },
+          "schoolFeedback" : {
+            "$ref" : "#/components/schemas/SchoolFeedback"
+          },
+          "schoolRecommendation" : {
+            "$ref" : "#/components/schemas/SchoolRecommendation"
+          },
+          "socioEducationalPerformance" : {
+            "$ref" : "#/components/schemas/SocioEducationalPerformance"
+          },
+          "version" : {
+            "type" : "integer",
+            "description" : "Version of the entity. Each time the entity is changed, it is incremented by one.",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetFacilityFileStateResponse" : {
+        "required" : [ "contactPersons", "dataOrigin", "emailAddresses", "id", "name", "phoneNumbers", "referenceVersion" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Facility.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referenceFacility it is connected to.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          }
+        }
+      },
+      "GetFreeAppointmentsResponse" : {
+        "required" : [ "appointments" ],
+        "type" : "object",
+        "properties" : {
+          "appointments" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Appointment"
+            }
+          }
+        }
+      },
+      "GetGdprDownloadPackagesInfoResponse" : {
+        "required" : [ "downloadPackages" ],
+        "type" : "object",
+        "properties" : {
+          "downloadPackages" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GdprDownloadPackageInfo"
+            }
+          }
+        }
+      },
+      "GetGdprNotificationBannerResponse" : {
+        "required" : [ "openValidationTasksCount" ],
+        "type" : "object",
+        "properties" : {
+          "earliestDueDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "openValidationTasksCount" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetGdprValidationTaskDetailsResponse" : {
+        "required" : [ "proceduresWithStatus", "validationTask" ],
+        "type" : "object",
+        "properties" : {
+          "proceduresWithStatus" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessProcedureWithInclusionStatus"
+            }
+          },
+          "validationTask" : {
+            "$ref" : "#/components/schemas/GdprValidationTask"
+          }
+        }
+      },
+      "GetGdprValidationTaskResponse" : {
+        "required" : [ "status" ],
+        "type" : "object",
+        "properties" : {
+          "status" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          }
+        }
+      },
+      "GetInboxProcedureResponse" : {
+        "required" : [ "inboxProcedure", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProcedure" : {
+            "$ref" : "#/components/schemas/InboxProcedure"
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetInboxProceduresResponse" : {
+        "required" : [ "inboxProcedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProcedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InboxProcedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetInboxProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "CREATED_AT" ]
+      },
+      "GetInboxProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetManualProgressEntryHistoryResponse" : {
+        "type" : "object",
+        "properties" : {
+          "manualProgressEntryHistory" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ManualProgressEntryHistory"
+            }
+          }
+        }
+      },
+      "GetMetaDataHistoryResponse" : {
+        "type" : "object",
+        "properties" : {
+          "metaDataHistory" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ImageMetaDataHistory"
+              }, {
+                "$ref" : "#/components/schemas/MailMetaDataHistory"
+              }, {
+                "$ref" : "#/components/schemas/PdfMetaDataHistory"
+              } ]
+            }
+          }
+        }
+      },
+      "GetOpeningHoursResponse" : {
+        "required" : [ "de", "en" ],
+        "type" : "object",
+        "properties" : {
+          "de" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "en" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        }
+      },
+      "GetPersonFileStateResponse" : {
+        "required" : [ "dataOrigin", "dateOfBirth", "emailAddresses", "firstName", "gender", "id", "lastName", "phoneNumbers", "referenceVersion", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "The date of birth of the Person.",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Person.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Person.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Person.",
+            "example" : "Doe"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name at birth of the Person.",
+            "example" : "Smith"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referencePerson it is connected to. Set to 'null' if unchecked.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Person.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The place of birth (without country) of the Person.",
+            "example" : "Berlin"
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "GetProcedureApprovalRequestsResponse" : {
+        "required" : [ "approvalRequests", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "approvalRequests" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ApprovalRequest"
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetProcedureFileDetailsResponse" : {
+        "required" : [ "fileDetails", "procedureId" ],
+        "type" : "object",
+        "properties" : {
+          "fileDetails" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProgressEntryReferenceFilePair"
+            }
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GetProcedureIdsRequest" : {
+        "required" : [ "procedureReferences" ],
+        "type" : "object",
+        "properties" : {
+          "procedureReferences" : {
+            "maxItems" : 200,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetProcedureIdsResponse" : {
+        "required" : [ "referenceToId" ],
+        "type" : "object",
+        "properties" : {
+          "referenceToId" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "GetProcedureMetricsResponse" : {
+        "required" : [ "procedureMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "procedureMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureMetric"
+            }
+          }
+        }
+      },
+      "GetProceduresResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "MODIFIED_AT", "CREATED_AT" ]
+      },
+      "GetProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetProceduresWithDetailsResponse" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureDetails"
+            }
+          }
+        }
+      },
+      "GetProgressEntriesResponse" : {
+        "required" : [ "progressEntries", "resolvedUsers", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "progressEntries" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ManualProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/ProcessedInboxProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/SystemProgressEntry"
+              } ]
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetProgressEntryResponse" : {
+        "required" : [ "progressEntry", "relatedKeyDocumentProgressEntries", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "progressEntry" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/ManualProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/ProcessedInboxProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/SystemProgressEntry"
+            } ]
+          },
+          "relatedKeyDocumentProgressEntries" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ManualProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/SystemProgressEntry"
+              } ]
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetRecentProceduresResponse" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          }
+        }
+      },
+      "GetRelevantArchivableProceduresResponse" : {
+        "required" : [ "fileSizeBytes", "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "fileSizeBytes" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetRelevantArchivableProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CLOSED_AT",
+        "enum" : [ "CLOSED_AT", "EXPORTED_AT" ]
+      },
+      "GetRelevantArchivableProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetSchoolEntryConfigResponse" : {
+        "required" : [ "isDirectProcedureTypeAssignmentOnImport", "locationSelectionMode" ],
+        "type" : "object",
+        "properties" : {
+          "isDirectProcedureTypeAssignmentOnImport" : {
+            "type" : "boolean"
+          },
+          "locationSelectionMode" : {
+            "$ref" : "#/components/schemas/LocationSelectionMode"
+          }
+        }
+      },
+      "GetSchoolEntryFeatureTogglesResponse" : {
+        "required" : [ "disabledOldFeatures", "enabledNewFeatures" ],
+        "type" : "object",
+        "properties" : {
+          "disabledOldFeatures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/SchoolEntryFeature"
+            }
+          },
+          "enabledNewFeatures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/SchoolEntryFeature"
+            }
+          }
+        }
+      },
+      "GetSchoolEntryLabelsResponse" : {
+        "required" : [ "labels" ],
+        "type" : "object",
+        "properties" : {
+          "labels" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/SchoolEntryLabel"
+            }
+          }
+        }
+      },
+      "GetSchoolEntryProceduresResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/SchoolEntryProcedure"
+            }
+          },
+          "totalNumberOfElements" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetTaskByUserResponse" : {
+        "required" : [ "resolvedUsers", "tasksByUser" ],
+        "type" : "object",
+        "properties" : {
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "tasksByUser" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/Task"
+              }
+            }
+          }
+        }
+      },
+      "GetTaskMetricsResponse" : {
+        "required" : [ "businessModule", "closedProcedureCount", "fastestProcedures", "procedureType", "slowestProcedures", "taskMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedProcedureCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "fastestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "slowestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "taskMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskMetric"
+            }
+          }
+        }
+      },
+      "GetTasksSortBy" : {
+        "type" : "string",
+        "enum" : [ "PRIORITY", "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "GetTasksSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetWaitingRoomProceduresResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/WaitingRoomProcedure"
+            }
+          },
+          "totalNumberOfElements" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "HandednessValue" : {
+        "type" : "string",
+        "enum" : [ "RIGHT", "LEFT", "UNCERTAIN", "UNKNOWN" ]
+      },
+      "Handicap" : {
+        "required" : [ "chronicDisease", "disability" ],
+        "type" : "object",
+        "properties" : {
+          "chronicDisease" : {
+            "$ref" : "#/components/schemas/HandicapWithDiagnosis"
+          },
+          "disability" : {
+            "$ref" : "#/components/schemas/HandicapWithDiagnosis"
+          },
+          "disabilityType" : {
+            "$ref" : "#/components/schemas/DisabilityType"
+          },
+          "note" : {
+            "type" : "string"
+          }
+        },
+        "description" : "Results for the assessment of the handicap."
+      },
+      "HandicapWithDiagnosis" : {
+        "type" : "object",
+        "properties" : {
+          "icd10Codes" : {
+            "type" : "array",
+            "description" : "List of ICD-10 codes to document the handicap.",
+            "example" : [ "J00", "K00" ],
+            "items" : {
+              "type" : "string",
+              "description" : "List of ICD-10 codes to document the handicap.",
+              "example" : "[\"J00\",\"K00\"]"
+            }
+          },
+          "result" : {
+            "type" : "boolean",
+            "description" : "If the value is true, there is a handicap."
+          }
+        },
+        "description" : "Diagnosis related to disability."
+      },
+      "HearingTestResult" : {
+        "required" : [ "examinationResult", "leftEar", "rightEar", "version" ],
+        "type" : "object",
+        "properties" : {
+          "examinationResult" : {
+            "$ref" : "#/components/schemas/ExaminationResult"
+          },
+          "leftEar" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/DecibelValue"
+            },
+            "description" : "Examination results of the left ear. Expected keys: HertzValue values",
+            "example" : {
+              "1000" : "40",
+              "2000" : "50",
+              "250" : "20",
+              "4000" : "60",
+              "500" : "30",
+              "6000" : null,
+              "8000" : null
+            }
+          },
+          "note" : {
+            "type" : "string",
+            "description" : "Notes recorded for the hearing test."
+          },
+          "rightEar" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/DecibelValue"
+            },
+            "description" : "Examination results of the right ear. Expected keys: HertzValue values",
+            "example" : {
+              "1000" : "30",
+              "2000" : "40",
+              "250" : "null",
+              "4000" : "50",
+              "500" : "null",
+              "6000" : "60",
+              "8000" : "60"
+            }
+          },
+          "version" : {
+            "type" : "integer",
+            "description" : "Version of the entity. Each time the entity is changed, it is incremented by one.",
+            "format" : "int64"
+          }
+        }
+      },
+      "HertzValue" : {
+        "type" : "string",
+        "description" : "Sound frequency at which the hearing test is carried out.",
+        "example" : "500",
+        "enum" : [ "250", "500", "1000", "2000", "4000", "6000", "8000" ]
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "IllnessAndAccidentInfo" : {
+        "type" : "object",
+        "properties" : {
+          "allergies" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "hospitalizationsOrOperations" : {
+            "type" : "boolean"
+          },
+          "regularMedication" : {
+            "type" : "string"
+          },
+          "severeIllnesses" : {
+            "type" : "boolean"
+          },
+          "underMedicalTreatmentFor" : {
+            "type" : "string"
+          }
+        }
+      },
+      "Image" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/ImageMetaData"
+            }
+          }
+        } ]
+      },
+      "ImageMetaData" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "ImageMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "imageMetaData" : {
+              "$ref" : "#/components/schemas/ImageMetaData"
+            }
+          }
+        } ]
+      },
+      "ImportStatistics" : {
+        "required" : [ "created", "duplicated", "failed", "mergeFailed", "merged", "total" ],
+        "type" : "object",
+        "properties" : {
+          "created" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "duplicated" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "failed" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "mergeFailed" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "merged" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "total" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "InboxProcedure" : {
+        "required" : [ "contactDetails", "createdAt", "createdBy", "inboxProcedureId", "inboxProcedureStatus", "inboxProgressEntry" ],
+        "type" : "object",
+        "properties" : {
+          "closedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "contactDetails" : {
+            "$ref" : "#/components/schemas/ContactDetails"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProcedureStatus" : {
+            "$ref" : "#/components/schemas/InboxProcedureStatus"
+          },
+          "inboxProcedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "inboxProgressEntry" : {
+            "$ref" : "#/components/schemas/InboxProgressEntry"
+          }
+        }
+      },
+      "InboxProcedureAddress" : {
+        "type" : "object",
+        "properties" : {
+          "addressAddition" : {
+            "type" : "string"
+          },
+          "city" : {
+            "type" : "string"
+          },
+          "country" : {
+            "type" : "string"
+          },
+          "houseNumber" : {
+            "type" : "string"
+          },
+          "postalCode" : {
+            "type" : "string"
+          },
+          "postboxNumber" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "street" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InboxProcedureStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "InboxProgressEntry" : {
+        "required" : [ "inboxProgressEntryId", "inboxProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "fileReference" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GenericFileReference"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "inboxProgressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProgressEntryType" : {
+            "$ref" : "#/components/schemas/InboxProgressEntryType"
+          },
+          "messageText" : {
+            "type" : "string"
+          },
+          "subject" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InboxProgressEntryType" : {
+        "type" : "string",
+        "enum" : [ "LETTER", "PHONE_CALL", "EMAIL" ]
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "InterestsAndSportsInfo" : {
+        "type" : "object",
+        "properties" : {
+          "canSwim" : {
+            "type" : "boolean"
+          },
+          "clubSport" : {
+            "type" : "string"
+          },
+          "hasSeahorseBadge" : {
+            "type" : "boolean"
+          },
+          "otherInterests" : {
+            "type" : "string"
+          }
+        }
+      },
+      "KeyDocumentAwareProgressEntry" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "keyDocumentType" : {
+            "type" : "string"
+          },
+          "keyDocumentVersion" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "KnowledgeThinkingExamination" : {
+        "required" : [ "evaluation" ],
+        "type" : "object",
+        "properties" : {
+          "countingPoints" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "evaluation" : {
+            "$ref" : "#/components/schemas/EvaluationExamination"
+          },
+          "quantityKnowledgePoints" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "Language" : {
+        "type" : "object",
+        "properties" : {
+          "familyLanguage" : {
+            "$ref" : "#/components/schemas/FamilyLanguageValue"
+          },
+          "germanKnowledgeChild" : {
+            "$ref" : "#/components/schemas/GermanKnowledgeValue"
+          },
+          "germanKnowledgePrimaryCarer" : {
+            "$ref" : "#/components/schemas/LanguageKnowledgeValue"
+          },
+          "primaryLanguage" : {
+            "$ref" : "#/components/schemas/PrimaryLanguageValue"
+          }
+        }
+      },
+      "LanguageKnowledgeValue" : {
+        "type" : "string",
+        "enum" : [ "RUDIMENTARY", "FAULTY", "FAULTLESS", "UNKNOWN" ]
+      },
+      "LocationSelectionMode" : {
+        "type" : "string",
+        "enum" : [ "NONE", "HEALTH_DEPARTMENT", "SCHOOL" ]
+      },
+      "Mail" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt", "removedInvalidAttachments" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/MailMetaData"
+            },
+            "removedInvalidAttachments" : {
+              "type" : "integer",
+              "format" : "int32"
+            }
+          }
+        } ]
+      },
+      "MailMetaData" : {
+        "required" : [ "mailFrom", "mailTo", "messageText", "sentDate", "subject" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "mailFrom" : {
+              "type" : "string"
+            },
+            "mailTo" : {
+              "type" : "string"
+            },
+            "messageText" : {
+              "type" : "string"
+            },
+            "sentDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "subject" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "MailMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "mailMetaData" : {
+              "$ref" : "#/components/schemas/MailMetaData"
+            }
+          }
+        } ]
+      },
+      "ManualProgressEntry" : {
+        "required" : [ "createdAt", "createdBy", "locked", "manualProgressEntryType", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "keyDocumentType" : {
+              "type" : "string"
+            },
+            "keyDocumentVersion" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "locked" : {
+              "type" : "boolean"
+            },
+            "manualProgressEntryType" : {
+              "$ref" : "#/components/schemas/ManualProgressEntryType"
+            },
+            "note" : {
+              "type" : "string"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/ApprovalRequestEntity"
+        }, {
+          "$ref" : "#/components/schemas/KeyDocumentAwareProgressEntry"
+        } ]
+      },
+      "ManualProgressEntryHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "properties" : {
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "manualProgressEntry" : {
+            "$ref" : "#/components/schemas/ManualProgressEntry"
+          }
+        }
+      },
+      "ManualProgressEntryType" : {
+        "type" : "string",
+        "enum" : [ "LETTER", "PHONE_CALL", "NOTE", "EMAIL", "IMAGE", "DOCUMENT" ]
+      },
+      "Measurements" : {
+        "type" : "object",
+        "properties" : {
+          "diastole" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "Diastolic blood pressure of the child in mmHg.",
+            "format" : "int32"
+          },
+          "height" : {
+            "type" : "number",
+            "description" : "Height of the child in m.",
+            "format" : "double"
+          },
+          "systole" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "Systolic blood pressure of the child in mmHg.",
+            "format" : "int32"
+          },
+          "weight" : {
+            "type" : "number",
+            "description" : "Weight of the child in kg.",
+            "format" : "double"
+          }
+        },
+        "description" : "Body measurement results of the examination."
+      },
+      "MetaData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "description" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "MetaDataHistory" : {
+        "required" : [ "@type", "changedAt" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "MigrationBackground" : {
+        "type" : "object",
+        "properties" : {
+          "countryOfBirthChild" : {
+            "$ref" : "#/components/schemas/SchoolEntryCountryCode"
+          },
+          "countryOfBirthFirstParent" : {
+            "$ref" : "#/components/schemas/SchoolEntryCountryCode"
+          },
+          "countryOfBirthSecondParent" : {
+            "$ref" : "#/components/schemas/SchoolEntryCountryCode"
+          },
+          "hasMigrationBackground" : {
+            "type" : "boolean",
+            "description" : "Boolean that indicates, if the child has migration background"
+          },
+          "inGermanySince" : {
+            "type" : "string",
+            "description" : "Date from which the child lives in Germany",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "nationalityChild" : {
+            "$ref" : "#/components/schemas/SchoolEntryCountryCode"
+          },
+          "nationalityFirstParent" : {
+            "$ref" : "#/components/schemas/SchoolEntryCountryCode"
+          },
+          "nationalitySecondParent" : {
+            "$ref" : "#/components/schemas/SchoolEntryCountryCode"
+          }
+        }
+      },
+      "Operation" : {
+        "type" : "string",
+        "enum" : [ "DELETE" ]
+      },
+      "OtherVaccination" : {
+        "required" : [ "count", "description" ],
+        "type" : "object",
+        "properties" : {
+          "count" : {
+            "maximum" : 8,
+            "minimum" : 1,
+            "type" : "integer",
+            "description" : "Number of vaccinations.",
+            "format" : "int32"
+          },
+          "description" : {
+            "type" : "string",
+            "description" : "Description/name of the additional vaccination.",
+            "example" : "COVID-19"
+          }
+        },
+        "description" : "List of additional vaccinations."
+      },
+      "PatchManualProgressEntryRequest" : {
+        "type" : "object",
+        "properties" : {
+          "manualProgressEntryType" : {
+            "$ref" : "#/components/schemas/ManualProgressEntryType"
+          },
+          "note" : {
+            "type" : "string",
+            "nullable" : true
+          }
+        }
+      },
+      "Pdf" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/PdfMetaData"
+            }
+          }
+        } ]
+      },
+      "PdfMetaData" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "PdfMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "pdfMetaData" : {
+              "$ref" : "#/components/schemas/PdfMetaData"
+            }
+          }
+        } ]
+      },
+      "PercentageValue" : {
+        "type" : "string",
+        "description" : "Percentage value of visibility",
+        "example" : "{\"DISTANCE\":\"PERCENTAGE_50\",\"DISTANCE_PLUS_15DPT\":\"PERCENTAGE_70\",\"DISTANCE_WITH_GLASSES\":\"PERCENTAGE_100\"}",
+        "enum" : [ "PERCENTAGE_LT_15", "PERCENTAGE_15", "PERCENTAGE_30", "PERCENTAGE_50", "PERCENTAGE_70", "PERCENTAGE_100" ]
+      },
+      "Percentiles" : {
+        "type" : "object",
+        "properties" : {
+          "bmi" : {
+            "type" : "number",
+            "description" : "Calculated body mass index. This value is only returned if the height and weight have been provided.",
+            "format" : "double",
+            "example" : 13.79758136514893
+          },
+          "bmiPercentile" : {
+            "type" : "number",
+            "description" : "Percentile to the calculated body mass index.",
+            "format" : "double",
+            "example" : 0.0837420790834949
+          },
+          "heightPercentile" : {
+            "type" : "number",
+            "description" : "Percentile to measured height.",
+            "format" : "double",
+            "example" : 0.516235721530589
+          },
+          "weightPercentile" : {
+            "type" : "number",
+            "description" : "Percentile to measured weight.",
+            "format" : "double",
+            "example" : 0.21338076008280304
+          }
+        },
+        "description" : "Percentiles for the body measurement results."
+      },
+      "PersonDetails" : {
+        "required" : [ "dateOfBirth", "emailAddresses", "fileStateId", "fileStateOutdated", "firstName", "gender", "lastName", "phoneNumbers", "salutation", "version" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "Date of birth of the person.",
+            "format" : "date",
+            "example" : "2024-02-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "items" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string"
+            }
+          },
+          "fileStateId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "fileStateOutdated" : {
+            "type" : "boolean"
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "First name of the person.",
+            "example" : "Hermione"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "Last name of the person.",
+            "example" : "Granger"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "PersonType" : {
+        "type" : "string",
+        "enum" : [ "PATIENT", "PARENT", "PROFESSIONAL" ]
+      },
+      "PhysicalExamination" : {
+        "required" : [ "abdomen", "earNoseThroat", "metabolism", "musculatureSkeleton", "neurology", "nutritionalCondition", "respiratoryCardiovascular", "skin" ],
+        "type" : "object",
+        "properties" : {
+          "abdomen" : {
+            "$ref" : "#/components/schemas/ExaminationWithDiagnosis"
+          },
+          "earNoseThroat" : {
+            "$ref" : "#/components/schemas/ExaminationWithDiagnosis"
+          },
+          "metabolism" : {
+            "$ref" : "#/components/schemas/ExaminationWithDiagnosis"
+          },
+          "musculatureSkeleton" : {
+            "$ref" : "#/components/schemas/ExaminationWithDiagnosis"
+          },
+          "neurology" : {
+            "$ref" : "#/components/schemas/ExaminationWithDiagnosis"
+          },
+          "note" : {
+            "type" : "string",
+            "description" : "Additional notes for the physical examination."
+          },
+          "nutritionalCondition" : {
+            "$ref" : "#/components/schemas/ExaminationWithDiagnosis"
+          },
+          "respiratoryCardiovascular" : {
+            "$ref" : "#/components/schemas/ExaminationWithDiagnosis"
+          },
+          "skin" : {
+            "$ref" : "#/components/schemas/ExaminationWithDiagnosis"
+          }
+        },
+        "description" : "Physical examination results."
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "PopulationRequest" : {
+        "required" : [ "numberOfEntitiesToPopulate" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfEntitiesToPopulate" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "PostboxAddress" : {
+        "required" : [ "city", "country", "postalCode", "postbox" ],
+        "type" : "object",
+        "description" : "An address which is a postbox.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "postbox" : {
+              "maxLength" : 21,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The number (or name) of the postbox.",
+              "example" : "123"
+            }
+          }
+        } ]
+      },
+      "PrimaryLanguageValue" : {
+        "type" : "string",
+        "enum" : [ "GERMAN", "OTHER", "UNKNOWN" ]
+      },
+      "Procedure" : {
+        "required" : [ "archivingRelevanceSettings", "businessModule", "createdAt", "modifiedAt", "procedureId", "procedureStatus", "procedureType", "summary" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevanceSettings" : {
+            "$ref" : "#/components/schemas/ArchivingRelevanceSettings"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "exportedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "procedureStatus" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "pattern" : "[a-zA-Z0-9.].+",
+            "type" : "string"
+          }
+        }
+      },
+      "ProcedureDetails" : {
+        "required" : [ "child", "createdAt", "custodians", "hasBeenClosed", "hasInformationBlock", "id", "isDeceased", "isDeletable", "isEntryLevel", "isInvitationSent", "isPastProcedure", "labels", "modifiedAt", "status", "type", "version", "waitingRoom" ],
+        "type" : "object",
+        "properties" : {
+          "appointment" : {
+            "$ref" : "#/components/schemas/Appointment"
+          },
+          "child" : {
+            "$ref" : "#/components/schemas/PersonDetails"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "custodians" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/PersonDetails"
+            }
+          },
+          "deceased" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "hasBeenClosed" : {
+            "type" : "boolean"
+          },
+          "hasInformationBlock" : {
+            "type" : "boolean"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Procedure.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "isDeceased" : {
+            "type" : "boolean"
+          },
+          "isDeletable" : {
+            "type" : "boolean"
+          },
+          "isEntryLevel" : {
+            "type" : "boolean"
+          },
+          "isInvitationSent" : {
+            "type" : "boolean"
+          },
+          "isPastProcedure" : {
+            "type" : "boolean"
+          },
+          "labels" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/SchoolEntryLabel"
+            }
+          },
+          "location" : {
+            "$ref" : "#/components/schemas/AppointmentLocation"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "school" : {
+            "$ref" : "#/components/schemas/School"
+          },
+          "schoolInfoLetterCreatedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "schoolYear" : {
+            "minimum" : 1900,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/SchoolEntryStatusType"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/SchoolEntryProcedureType"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "waitingRoom" : {
+            "$ref" : "#/components/schemas/WaitingRoom"
+          }
+        }
+      },
+      "ProcedureMetric" : {
+        "required" : [ "abortedCount", "businessModule", "closedCount", "inProgressCount", "openOrDraftCount", "procedureType", "totalCount" ],
+        "type" : "object",
+        "properties" : {
+          "abortedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "inProgressCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "openOrDraftCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "totalCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ProcedureStatus" : {
+        "type" : "string",
+        "enum" : [ "DRAFT", "OPEN", "IN_PROGRESS", "CLOSED", "ABORTED" ]
+      },
+      "ProcedureType" : {
+        "type" : "string",
+        "enum" : [ "REGULAR_EXAMINATION", "CAN_CHILD", "ENTRY_LEVEL", "DRAFT_CITIZEN_OFFICE_IMPORT", "DRAFT_SCHOOL_IMPORT", "INSPECTION", "TM_VACCINATION_CONSULTATION", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY_ENTRY", "MEDICAL_REGISTRY_CITIZEN_DRAFT", "MEDICAL_REGISTRY_EMPLOYEE_DRAFT", "DENTAL_CHILD", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "ProcedureWithDuration" : {
+        "required" : [ "createdAt", "id" ],
+        "type" : "object",
+        "properties" : {
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "duration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ProcessedInboxProgressEntry" : {
+        "required" : [ "createdAt", "createdBy", "inboxProcedureId", "inboxProgressEntryType", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "inboxProcedureId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "inboxProgressEntryType" : {
+              "$ref" : "#/components/schemas/InboxProgressEntryType"
+            },
+            "messageText" : {
+              "type" : "string"
+            },
+            "subject" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "ProgressEntry" : {
+        "required" : [ "@type", "createdAt", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "fileReference" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GenericFileReference"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "progressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ProgressEntryClass" : {
+        "type" : "string",
+        "enum" : [ "MANUAL_PROGRESS_ENTRY", "SYSTEM_PROGRESS_ENTRY", "PROCESSED_INBOX_PROGRESS_ENTRY" ]
+      },
+      "ProgressEntryReferenceFilePair" : {
+        "required" : [ "file", "progressEntryId" ],
+        "type" : "object",
+        "properties" : {
+          "file" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "progressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ProgressEntrySortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "ProgressEntrySortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "PromotionBeforeSchoolEntry" : {
+        "type" : "object",
+        "properties" : {
+          "earlySupport" : {
+            "type" : "boolean",
+            "description" : "Boolean that indicates, if the child participated in early support."
+          },
+          "ergotherapy" : {
+            "type" : "boolean",
+            "description" : "Boolean that indicates, if the child participated in occupational therapy."
+          },
+          "integrationPlace" : {
+            "type" : "boolean",
+            "description" : "Boolean that indicates, if the child has an integration place"
+          },
+          "physiotherapy" : {
+            "type" : "boolean",
+            "description" : "Boolean that indicates, if the child participated in physio therapy."
+          },
+          "speechTherapy" : {
+            "type" : "boolean",
+            "description" : "Boolean that indicates, if the child participated in speech therapy."
+          }
+        }
+      },
+      "PromotionTherapyAndAidInfo" : {
+        "type" : "object",
+        "properties" : {
+          "additionalTherapies" : {
+            "type" : "string"
+          },
+          "ergoTherapyEnd" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "ergoTherapyStart" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "hearingAid" : {
+            "type" : "string"
+          },
+          "hearingImpairment" : {
+            "type" : "boolean"
+          },
+          "physioTherapyEnd" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "physioTherapyStart" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "spectaclesSince" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "speechImpairment" : {
+            "type" : "boolean"
+          },
+          "speechTherapyEnd" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "speechTherapyStart" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "visionImpairment" : {
+            "type" : "boolean"
+          },
+          "visionSchoolSince" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }
+      },
+      "PsychoSocialRisk" : {
+        "type" : "object",
+        "properties" : {
+          "family" : {
+            "type" : "boolean",
+            "description" : "Indicates family-related issues."
+          },
+          "migration" : {
+            "type" : "boolean",
+            "description" : "Indicates migration-related issues."
+          },
+          "nonCompliance" : {
+            "type" : "boolean",
+            "description" : "Indicates non-compliance issues."
+          },
+          "otherRisk" : {
+            "type" : "boolean",
+            "description" : "Indicates other potential risks."
+          },
+          "social" : {
+            "type" : "boolean",
+            "description" : "Indicates social issues."
+          }
+        },
+        "description" : "Assessment of the psychosocial risk."
+      },
+      "RemoveCustodianRequest" : {
+        "required" : [ "procedureVersion" ],
+        "type" : "object",
+        "properties" : {
+          "procedureVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ReopenProcedureRequest" : {
+        "required" : [ "version" ],
+        "type" : "object",
+        "properties" : {
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "RequiredProcedureArea" : {
+        "type" : "string",
+        "enum" : [ "DETAILS", "HEARING_TEST", "EYE_EXAMINATION", "ANAMNESIS", "SOPESS_EXAMINATION", "DEVELOPMENT_SCREENING", "VACCINATION_STATUS" ]
+      },
+      "Salutation" : {
+        "type" : "string",
+        "description" : "A list of categories for the salutation from which specific salutation phrases can be derived. The choice of salutation is free for every citizen and not dependent on gender.",
+        "enum" : [ "NOT_SPECIFIED", "NEUTRAL", "FEMALE", "MALE" ]
+      },
+      "School" : {
+        "required" : [ "id", "name" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "SchoolEntryAppointmentBlockPopulationResult" : {
+        "required" : [ "appointmentBlockGroups", "count" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlockGroups" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CreateAppointmentBlockGroupResponse"
+            }
+          },
+          "count" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "SchoolEntryCountryCode" : {
+        "type" : "string",
+        "description" : "Country codes by alpha-3 code (ISO 3166)",
+        "example" : "DEU",
+        "enum" : [ "AFG", "EGY", "ALB", "ALG", "AND", "ANG", "AUB", "GNQ", "ARA", "ARG", "ARM", "ASE", "ASN", "ETH", "AUS", "BAM", "BAH", "BAL", "BAD", "BAR", "BEL", "BEZ", "BEN", "BHU", "BOL", "BOS", "BOT", "BRA", "BRU", "BUL", "BUF", "BUR", "CHI", "CHV", "COO", "COR", "CIV", "DAN", "DEU", "DOA", "DOM", "DSC", "ECU", "ELS", "BRI", "ERY", "EST", "FID", "FIN", "FRA", "GAB", "GAM", "GEO", "GHA", "GOL", "GRE", "GRI", "GUA", "GUI", "GUS", "GUY", "HAI", "HND", "IND", "INS", "IRQ", "IRA", "IRL", "ISL", "ISR", "ITA", "JAM", "JAP", "JEM", "JOR", "JUG", "KAM", "KAN", "CAN", "KAP", "KAS", "KAT", "KEN", "KIR", "KIB", "KOL", "KOM", "KON", "KOR", "KOS", "KRO", "KUB", "KUW", "LAO", "LSO", "LET", "LEB", "LIB", "LYB", "LIE", "LIT", "LUX", "MAD", "MAW", "MAY", "MAL", "MAI", "MLT", "MAR", "MHL", "MAU", "MAS", "MAZ", "MEX", "MIK", "MAM", "MOL", "MON", "MOG", "MNE", "MOS", "MYA", "NAM", "CHN", "NAU", "NEP", "NEU", "NIC", "NED", "NIG", "NIA", "NOK", "NOR", "OMA", "OST", "PAK", "PAL", "PAU", "PAN", "PAP", "PAR", "PER", "PHI", "POL", "POR", "RUA", "RUM", "RUS", "SAL", "SAB", "SAA", "SAN", "STL", "STP", "SAU", "SCO", "SVE", "HEL", "SEN", "SER", "SEY", "SIL", "SIM", "SIN", "SKN", "SLO", "SOM", "SON", "SPA", "CEY", "STK", "VCT", "STA", "SAR", "SAM", "SUD", "SUK", "SUR", "SWA", "SYR", "TAD", "TAI", "TAN", "THA", "TIB", "TIM", "TOG", "TRT", "CHA", "CZN", "TUN", "TUR", "TKM", "TUV", "UGA", "UKR", "UUU", "UNG", "URU", "USA", "USB", "VAN", "VAT", "VEN", "VAE", "VIE", "WRU", "SCA", "ZYP", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9" ]
+      },
+      "SchoolEntryFeature" : {
+        "type" : "string",
+        "enum" : [ "DUMMY" ]
+      },
+      "SchoolEntryLabel" : {
+        "required" : [ "hexColor", "id", "name", "readonly", "version" ],
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string",
+            "description" : "Description of the label"
+          },
+          "hexColor" : {
+            "pattern" : "^#[0-9a-zA-Z]{6}$",
+            "type" : "string",
+            "description" : "Background color of the box surrounding the label"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the label",
+            "format" : "uuid"
+          },
+          "name" : {
+            "maxLength" : 255,
+            "minLength" : 0,
+            "type" : "string",
+            "description" : "Name of the label"
+          },
+          "readonly" : {
+            "type" : "boolean",
+            "description" : "Indicates if label can be modified by users"
+          },
+          "version" : {
+            "type" : "integer",
+            "description" : "Version of the entity. Each time the entity is changed, it is incremented by one.",
+            "format" : "int64"
+          }
+        },
+        "description" : "Labels can be associated to a procedure. There are predefined labels and additional labels can be created by the users."
+      },
+      "SchoolEntryProcedure" : {
+        "required" : [ "child", "createdAt", "id", "labels", "modifiedAt", "status", "type" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentStart" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "child" : {
+            "$ref" : "#/components/schemas/Child"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Procedure.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "labels" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/SchoolEntryLabel"
+            }
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "school" : {
+            "$ref" : "#/components/schemas/School"
+          },
+          "schoolYear" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/SchoolEntryStatusType"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/SchoolEntryProcedureType"
+          }
+        }
+      },
+      "SchoolEntryProcedurePopulationResult" : {
+        "required" : [ "count", "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "count" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "procedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CreateProcedureResponse"
+            }
+          }
+        }
+      },
+      "SchoolEntryProcedureSortKey" : {
+        "type" : "string",
+        "enum" : [ "ID", "DATE_OF_BIRTH", "FIRSTNAME", "LASTNAME", "SCHOOL_YEAR", "TYPE", "APPOINTMENT_START", "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "SchoolEntryProcedureType" : {
+        "type" : "string",
+        "description" : "Type of examination of the child. The type of examination has a number of practical implications. For instance, when an examination is carried out, what is examined and how long the examination lasts.",
+        "example" : "REGULAR_EXAMINATION",
+        "enum" : [ "REGULAR_EXAMINATION", "CAN_CHILD", "ENTRY_LEVEL", "DRAFT_CITIZEN_OFFICE_IMPORT", "DRAFT_SCHOOL_IMPORT" ]
+      },
+      "SchoolEntryStatusType" : {
+        "type" : "string",
+        "enum" : [ "DRAFT", "OPEN", "IN_PROGRESS", "CLOSED", "ABORTED" ]
+      },
+      "SchoolFeedback" : {
+        "type" : "string",
+        "description" : "Feedback from the school on the school entry examination.",
+        "enum" : [ "POSITIVE", "NEGATIVE", "UNKNOWN" ]
+      },
+      "SchoolRecommendation" : {
+        "type" : "string",
+        "description" : "Recommendation for school enrolment.",
+        "enum" : [ "BACK_REGULAR", "BACK_ENTRY_LEVEL", "CONCERNS_EARLY_ENROLMENT", "ADVICE_CENTER", "NO" ]
+      },
+      "ScoredEvaluationExamination" : {
+        "required" : [ "evaluation" ],
+        "type" : "object",
+        "properties" : {
+          "evaluation" : {
+            "$ref" : "#/components/schemas/EvaluationExamination"
+          },
+          "points" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "SelfAssignTaskRequest" : {
+        "required" : [ "taskVersion" ],
+        "type" : "object",
+        "properties" : {
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "taskVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "SocioEducationalPerformance" : {
+        "type" : "object",
+        "properties" : {
+          "educationalAdvice" : {
+            "type" : "boolean",
+            "description" : "Indicates need for educational advice."
+          },
+          "infoLetter" : {
+            "type" : "boolean",
+            "description" : "Indicates that an info letter must be issued."
+          },
+          "languageAdvice" : {
+            "type" : "boolean",
+            "description" : "Indicates need for language advice."
+          },
+          "motorPromotion" : {
+            "type" : "boolean",
+            "description" : "Indicates need for motor promotion."
+          },
+          "nutritionalAdvice" : {
+            "type" : "boolean",
+            "description" : "Indicates need for nutritional advice."
+          },
+          "otherSupport" : {
+            "type" : "boolean",
+            "description" : "Indicates need for other types of support."
+          },
+          "reIntroduction" : {
+            "type" : "boolean",
+            "description" : "Indicates need for re-introduction."
+          },
+          "schoolCounselling" : {
+            "type" : "boolean",
+            "description" : "Indicates need for school counselling."
+          },
+          "socialService" : {
+            "type" : "boolean",
+            "description" : "Indicates need for social services."
+          },
+          "vaccinationAdvice" : {
+            "type" : "boolean",
+            "description" : "Indicates need for vaccination advice."
+          }
+        },
+        "description" : "Assessment of the social and educational performance"
+      },
+      "SopessExaminationResult" : {
+        "required" : [ "articulation", "auditiveProcessingResult", "fineMotorSkills", "grossMotorSkills", "knowledgeThinkingResult", "language", "psychologicalBehaviorResult", "speechResult", "version", "visualPerceptionResult" ],
+        "type" : "object",
+        "properties" : {
+          "articulation" : {
+            "$ref" : "#/components/schemas/Articulation"
+          },
+          "auditiveProcessingResult" : {
+            "$ref" : "#/components/schemas/ScoredEvaluationExamination"
+          },
+          "fineMotorSkills" : {
+            "$ref" : "#/components/schemas/ScoredEvaluationExamination"
+          },
+          "grossMotorSkills" : {
+            "$ref" : "#/components/schemas/ScoredEvaluationExamination"
+          },
+          "handedness" : {
+            "$ref" : "#/components/schemas/HandednessValue"
+          },
+          "knowledgeThinkingResult" : {
+            "$ref" : "#/components/schemas/KnowledgeThinkingExamination"
+          },
+          "language" : {
+            "$ref" : "#/components/schemas/Language"
+          },
+          "note" : {
+            "type" : "string"
+          },
+          "psychologicalBehaviorResult" : {
+            "$ref" : "#/components/schemas/ScoredEvaluationExamination"
+          },
+          "speechResult" : {
+            "$ref" : "#/components/schemas/SpeechEvaluationExamination"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "visualPerceptionResult" : {
+            "$ref" : "#/components/schemas/ScoredEvaluationExamination"
+          }
+        }
+      },
+      "SopessExaminationResultValue" : {
+        "type" : "string",
+        "enum" : [ "OK", "KNOWN", "DOCTOR_LETTER", "BORDERLINE", "UNKNOWN" ]
+      },
+      "SortDirection" : {
+        "type" : "string",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "SpeechEvaluationExamination" : {
+        "required" : [ "evaluation" ],
+        "type" : "object",
+        "properties" : {
+          "evaluation" : {
+            "$ref" : "#/components/schemas/EvaluationExamination"
+          },
+          "pluralPoints" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "prepositionPoints" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "SyncPersonRequest" : {
+        "required" : [ "fileStateId", "personVersion", "referenceVersion" ],
+        "type" : "object",
+        "properties" : {
+          "fileStateId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "personVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "SystemProgressEntry" : {
+        "required" : [ "createdAt", "modifiedAt", "progressEntryId", "systemProgressEntryType", "triggerType" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "changeDescription" : {
+              "type" : "string"
+            },
+            "keyDocumentType" : {
+              "type" : "string"
+            },
+            "keyDocumentVersion" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "previousFileStateId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "systemProgressEntryType" : {
+              "type" : "string"
+            },
+            "triggerType" : {
+              "$ref" : "#/components/schemas/TriggerType"
+            },
+            "triggeredBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/KeyDocumentAwareProgressEntry"
+        } ]
+      },
+      "Task" : {
+        "required" : [ "businessModule", "createdAt", "isOverdue", "modifiedAt", "procedureId", "summary", "taskId", "taskStatus", "taskType", "version" ],
+        "type" : "object",
+        "properties" : {
+          "assignedById" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "assigneeId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "isOverdue" : {
+            "type" : "boolean"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "taskId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "taskStatus" : {
+            "$ref" : "#/components/schemas/TaskStatus"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "TaskMetric" : {
+        "required" : [ "moreThanTwoOccurrencesCount", "noOccurrencesCount", "oneOccurrenceCount", "taskType", "twoOccurrencesCount" ],
+        "type" : "object",
+        "properties" : {
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "moreThanTwoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "noOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "oneOccurrenceCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "twoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TaskResponse" : {
+        "required" : [ "count", "tasks" ],
+        "type" : "object",
+        "properties" : {
+          "count" : {
+            "type" : "integer",
+            "description" : "total number of tasks for this query",
+            "format" : "int64"
+          },
+          "tasks" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Task"
+            }
+          }
+        }
+      },
+      "TaskStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "TaskType" : {
+        "type" : "string",
+        "enum" : [ "BOOK_APPOINTMENT", "PERFORM_SCHOOL_ENTRY_EXAMINATION", "INSPECTION_PLANNING", "INSPECTION_EXECUTION", "INSPECTION_REPORT", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      },
+      "Title" : {
+        "type" : "string",
+        "enum" : [ "DR", "PROF", "PROF_DR" ]
+      },
+      "TriggerType" : {
+        "type" : "string",
+        "enum" : [ "SYSTEM_AUTOMATIC", "EMPLOYEE", "CITIZEN" ]
+      },
+      "UpdateAppointmentTypeRequest" : {
+        "required" : [ "standardDurationInMinutes" ],
+        "type" : "object",
+        "properties" : {
+          "standardDurationInMinutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "UpdateCitizenAppointmentRequest" : {
+        "required" : [ "newAppointment" ],
+        "type" : "object",
+        "properties" : {
+          "newAppointment" : {
+            "$ref" : "#/components/schemas/Appointment"
+          }
+        },
+        "description" : "Citizen appointment update."
+      },
+      "UpdateLabelRequest" : {
+        "required" : [ "name", "version" ],
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          },
+          "name" : {
+            "maxLength" : 255,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "UpdatePersonRequest" : {
+        "required" : [ "dateOfBirth", "firstName", "lastName", "version" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "Date of birth of the person.",
+            "format" : "date",
+            "example" : "2024-02-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "items" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "First name of the person.",
+            "example" : "Hermione"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "Last name of the person.",
+            "example" : "Granger"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "UpdateProcedureRequest" : {
+        "required" : [ "isDeceased", "isInvitationSent", "labels", "procedureType", "version" ],
+        "type" : "object",
+        "properties" : {
+          "appointment" : {
+            "$ref" : "#/components/schemas/Appointment"
+          },
+          "deceased" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "isDeceased" : {
+            "type" : "boolean"
+          },
+          "isInvitationSent" : {
+            "type" : "boolean"
+          },
+          "labels" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "locationId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/SchoolEntryProcedureType"
+          },
+          "schoolId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "schoolYear" : {
+            "minimum" : 1900,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "User" : {
+        "required" : [ "enabled", "firstName", "lastName", "userId", "username" ],
+        "type" : "object",
+        "properties" : {
+          "email" : {
+            "type" : "string",
+            "description" : "The email address of a user.",
+            "example" : "example@mail.de"
+          },
+          "enabled" : {
+            "type" : "boolean",
+            "description" : "True, if the user can login",
+            "example" : false
+          },
+          "externalChatUsername" : {
+            "type" : "string",
+            "description" : "The chat username of the gematik TI-Messenger (matrix chat).",
+            "example" : "@username:server"
+          },
+          "firstName" : {
+            "type" : "string",
+            "description" : "The given name(s) of a user.",
+            "example" : "John"
+          },
+          "lastName" : {
+            "type" : "string",
+            "description" : "The last name of a user.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "type" : "string",
+            "description" : "The phone number of a user.",
+            "example" : "+491234567890"
+          },
+          "userId" : {
+            "type" : "string",
+            "description" : "The Id of the user.",
+            "format" : "uuid",
+            "example" : "UUID_3"
+          },
+          "username" : {
+            "type" : "string",
+            "description" : "The username which is displayed in the application and can be used for the login.",
+            "example" : "testuser"
+          }
+        }
+      },
+      "VaccinationSchemeValue" : {
+        "type" : "string",
+        "enum" : [ "SCHEME_2_PLUS_1", "SCHEME_3_PLUS_1", "UNKNOWN" ]
+      },
+      "VaccinationStatus" : {
+        "required" : [ "otherVaccinations", "version" ],
+        "type" : "object",
+        "properties" : {
+          "diphtheria" : {
+            "maximum" : 9,
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "Number of diphtheria vaccinations.",
+            "format" : "int32"
+          },
+          "hepatitisA" : {
+            "maximum" : 9,
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "Number of hepatitisA vaccinations.",
+            "format" : "int32"
+          },
+          "hepatitisB" : {
+            "maximum" : 9,
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "Number of hepatitisB vaccinations.",
+            "format" : "int32"
+          },
+          "hib" : {
+            "maximum" : 9,
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "Number of hib vaccinations.",
+            "format" : "int32"
+          },
+          "measlesContraIndication" : {
+            "type" : "boolean"
+          },
+          "measlesContraIndicationIsPermanent" : {
+            "type" : "boolean"
+          },
+          "measlesContraIndicationUntil" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "meningococcusB" : {
+            "maximum" : 9,
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "Number of meningococcusB vaccinations.",
+            "format" : "int32"
+          },
+          "meningococcusC" : {
+            "maximum" : 9,
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "Number of meningococcusC vaccinations.",
+            "format" : "int32"
+          },
+          "mmr" : {
+            "maximum" : 9,
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "Number of mmr vaccinations.",
+            "format" : "int32"
+          },
+          "otherVaccinations" : {
+            "type" : "array",
+            "description" : "List of additional vaccinations.",
+            "items" : {
+              "$ref" : "#/components/schemas/OtherVaccination"
+            }
+          },
+          "perkombiHbv" : {
+            "$ref" : "#/components/schemas/BooleanWithUnknown"
+          },
+          "pertussis" : {
+            "maximum" : 9,
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "Number of pertussis vaccinations.",
+            "format" : "int32"
+          },
+          "pneumococcus" : {
+            "maximum" : 9,
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "Number of pneumococcus vaccinations.",
+            "format" : "int32"
+          },
+          "polio" : {
+            "maximum" : 9,
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "Number of polio vaccinations.",
+            "format" : "int32"
+          },
+          "rota" : {
+            "maximum" : 9,
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "Number of rota vaccinations.",
+            "format" : "int32"
+          },
+          "tbe" : {
+            "maximum" : 9,
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "Number of tbe vaccinations.",
+            "format" : "int32"
+          },
+          "tetanus" : {
+            "maximum" : 9,
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "Number of tetanus vaccinations.",
+            "format" : "int32"
+          },
+          "vaccinationPassPresented" : {
+            "type" : "boolean",
+            "description" : "Boolean that indicates, if the vaccination pass was shown or not."
+          },
+          "vaccinationScheme" : {
+            "$ref" : "#/components/schemas/VaccinationSchemeValue"
+          },
+          "varicella" : {
+            "maximum" : 9,
+            "minimum" : 0,
+            "type" : "integer",
+            "description" : "Number of varicella vaccinations.",
+            "format" : "int32"
+          },
+          "version" : {
+            "type" : "integer",
+            "description" : "Version of the entity. Each time the entity is changed, it is incremented by one.",
+            "format" : "int64"
+          }
+        }
+      },
+      "ValidateAppointmentBlockGroupResponse" : {
+        "required" : [ "userIdsWithEventConflicts", "userIdsWithoutEventConflicts" ],
+        "type" : "object",
+        "properties" : {
+          "userIdsWithEventConflicts" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "userIdsWithoutEventConflicts" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "ValidateRequiredProcedureDataResponse" : {
+        "required" : [ "incompleteAreas" ],
+        "type" : "object",
+        "properties" : {
+          "incompleteAreas" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/RequiredProcedureArea"
+            }
+          }
+        }
+      },
+      "WaitingRoom" : {
+        "required" : [ "version" ],
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "maxLength" : 60,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/WaitingStatus"
+          },
+          "version" : {
+            "type" : "integer",
+            "description" : "Version of the entity. Each time the entity is changed, it is incremented by one.",
+            "format" : "int64"
+          }
+        }
+      },
+      "WaitingRoomProcedure" : {
+        "required" : [ "child", "id", "modifiedAt", "waitingRoom" ],
+        "type" : "object",
+        "properties" : {
+          "child" : {
+            "$ref" : "#/components/schemas/Child"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Procedure.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "waitingRoom" : {
+            "$ref" : "#/components/schemas/WaitingRoom"
+          }
+        }
+      },
+      "WaitingRoomSortKey" : {
+        "type" : "string",
+        "enum" : [ "ID", "DATE_OF_BIRTH", "FIRSTNAME", "LASTNAME", "STATUS", "INFO", "MODIFIED_AT" ]
+      },
+      "WaitingStatus" : {
+        "type" : "string",
+        "enum" : [ "WAITING", "WAITING_FOR_DOCTOR", "WAITING_FOR_MFA", "IN_EXAMINATION", "IN_EXAMINATION_DOCTOR", "IN_EXAMINATION_MFA", "IN_EXAMINATION_SOPASS", "EXAMINATION_FINISHED", "DONE", "CANCELLED", "NOT_APPEARED" ]
+      }
+    }
+  }
+}
diff --git a/backend/school-entry/openApi.yaml b/backend/school-entry/openApi.yaml
deleted file mode 100644
index 002372142..000000000
--- a/backend/school-entry/openApi.yaml
+++ /dev/null
@@ -1,8281 +0,0 @@
-# Copyright 2025 cronn GmbH
-# SPDX-License-Identifier: AGPL-3.0-only
-
-openapi: 3.0.1
-info:
-  description: This is the API for the school-entry module
-  title: School Entry Module API
-  version: "0.1"
-servers:
-- url: http://localhost:8082
-paths:
-  /appointment-blocks/appointment-block-groups:
-    get:
-      operationId: getAppointmentBlockGroups
-      parameters:
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/AppointmentBlockSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAppointmentBlockGroupsResponse"
-          description: OK
-      summary: Get all appointment block groups.
-      tags:
-      - AppointmentBlock
-  /appointment-blocks/daily-appointment-block-groups:
-    post:
-      operationId: createDailyAppointmentBlocksForGroup
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CreateAppointmentBlockGroupResponse"
-          description: OK
-      summary: Create appointment group with blocks for week days.
-      tags:
-      - AppointmentBlock
-  /appointment-blocks/daily-appointment-block-groups/validate:
-    post:
-      operationId: validateDailyAppointmentBlocksForGroup
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ValidateAppointmentBlockGroupResponse"
-          description: OK
-      summary: Create appointment group with blocks for week days.
-      tags:
-      - AppointmentBlock
-  /appointment-blocks/free-appointments:
-    get:
-      operationId: getFreeAppointments
-      parameters:
-      - in: query
-        name: appointmentType
-        required: true
-        schema:
-          $ref: "#/components/schemas/AppointmentType"
-      - in: query
-        name: earliestDate
-        required: false
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: physicianId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetFreeAppointmentsResponse"
-          description: OK
-      summary: Get free appointments for an appointment type.
-      tags:
-      - AppointmentBlock
-  /appointment-types:
-    get:
-      operationId: getAppointmentTypes
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAppointmentTypesResponse"
-          description: OK
-      summary: Gets all Appointment Types
-      tags:
-      - AppointmentType
-  /appointment-types/{id}:
-    get:
-      operationId: getOneAppointmentType
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AppointmentTypeConfig"
-          description: OK
-      summary: Gets one Appointment Type by ID
-      tags:
-      - AppointmentType
-    put:
-      operationId: updateAppointmentType
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateAppointmentTypeRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AppointmentTypeConfig"
-          description: OK
-      summary: Modifies an existing Appointment Type
-      tags:
-      - AppointmentType
-  /approval-requests/{approvalRequestId}:
-    get:
-      operationId: getApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      tags:
-      - ApprovalRequest
-  /approval-requests/{approvalRequestId}/decision:
-    put:
-      operationId: decideApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/Decision"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - ApprovalRequest
-  /archiving/config:
-    get:
-      operationId: getArchivingConfiguration
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetArchivingConfigurationResponse"
-          description: OK
-      summary: Get archiving configuration
-      tags:
-      - Archiving
-  /archiving/procedures:
-    get:
-      operationId: getArchivableProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `closedAtDay` is set, only procedures are returned which were closed at that date
-          - If not submitted, no filtering takes place
-        in: query
-        name: closedAtDay
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If `defaultArchivingRelevance` is submitted, only procedures are returned which have one of the submitted default archiving relevances.
-          - If not submitted, no filtering takes place
-        in: query
-        name: defaultArchivingRelevance
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ArchivingRelevance"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CLOSED_AT`: Sorting by closedAt attribute
-          - `PROCEDURE_TYPE`: Sorting by procedureType attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetArchivableProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetArchivableProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetArchivableProceduresResponse"
-          description: OK
-      summary: Get archivable procedures
-      tags:
-      - Archiving
-  /archiving/procedures/bulk-update-archiving-relevance:
-    post:
-      operationId: bulkUpdateProceduresArchivingRelevance
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/BulkUpdateProceduresArchivingRelevanceRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/BulkUpdateProceduresArchivingRelevanceResponse"
-          description: OK
-      summary: Bulk update procedures archiving relevance
-      tags:
-      - Archiving
-  /archiving/relevant-procedures:
-    get:
-      operationId: getRelevantArchivableProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `closedAtDay` is set, only procedures are returned which were closed at that date
-          - If not submitted, no filtering takes place
-        in: query
-        name: closedAtDay
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If `exported` is true, only procedures are returned which have already been exported.
-          - If `exported` is false, only procedures are returned which have not been exported, yet.
-          - If not submitted, no filtering takes place
-        in: query
-        name: exported
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          The following sorting options are available:
-          - `CLOSED_AT`: Sorting by closedAt attribute
-          - `EXPORTED_AT`: Sorting by exportedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetRelevantArchivableProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetRelevantArchivableProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRelevantArchivableProceduresResponse"
-          description: OK
-      summary: Get relevant archivable procedures
-      tags:
-      - Archiving
-  /archiving/relevant-procedures/export:
-    post:
-      operationId: exportRelevantProcedures
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ExportArchivingRelevantProceduresRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - Archiving
-  /citizen/auth/anamnesis:
-    put:
-      operationId: addAnamnesisAsCitizen
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddCitizenAnamnesisRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - SchoolEntryCitizen
-  /citizen/auth/appointment:
-    put:
-      operationId: updateAppointmentAsCitizen
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateCitizenAppointmentRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - SchoolEntryCitizen
-  /citizen/auth/free-appointments:
-    get:
-      operationId: getSelfFreeAppointmentsAsCitizen
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetCitizenFreeAppointmentsResponse"
-          description: OK
-      tags:
-      - SchoolEntryCitizen
-  /citizen/auth/procedure:
-    get:
-      operationId: getSelfProcedureAsCitizen
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetCitizenProcedureResponse"
-          description: OK
-      tags:
-      - SchoolEntryCitizen
-  /citizen/public/documents/privacy-notice:
-    get:
-      operationId: getPrivacyNotice
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get the privacy-notice document.
-      tags:
-      - SchoolEntryPublicCitizen
-  /citizen/public/documents/privacy-policy:
-    get:
-      operationId: getPrivacyPolicy
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get the privacy-policy document.
-      tags:
-      - SchoolEntryPublicCitizen
-  /citizen/public/opening-hours:
-    get:
-      operationId: getOpeningHours
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetOpeningHoursResponse"
-          description: OK
-      summary: Get the official opening hours.
-      tags:
-      - SchoolEntryPublicCitizen
-  /config:
-    get:
-      operationId: getConfig
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetSchoolEntryConfigResponse"
-          description: OK
-      tags:
-      - SchoolEntryConfig
-  /country-codes:
-    get:
-      operationId: getCountryCodes
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetCountryCodesResponse"
-          description: OK
-      tags:
-      - SchoolEntryCountryCodes
-  /feature-toggles:
-    get:
-      operationId: getFeatureToggles
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetSchoolEntryFeatureTogglesResponse"
-          description: OK
-      tags:
-      - SchoolEntryFeatureToggles
-  /files/{fileId}:
-    delete:
-      operationId: deleteFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Soft deletes the specified file
-      tags:
-      - File
-    get:
-      operationId: getFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/Image"
-                - $ref: "#/components/schemas/Mail"
-                - $ref: "#/components/schemas/Pdf"
-          description: OK
-      summary: Retrieves the meta data of the specified file
-      tags:
-      - File
-  /files/{fileId}/deletion-request:
-    post:
-      operationId: requestFileDeletion
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateApprovalRequestRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      summary: Request deletion of a file entry
-      tags:
-      - File
-  /files/{fileId}/download:
-    get:
-      operationId: downloadFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - File
-  /files/{fileId}/meta-data:
-    put:
-      operationId: updateFileMetaData
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              oneOf:
-              - $ref: "#/components/schemas/ImageMetaData"
-              - $ref: "#/components/schemas/MailMetaData"
-              - $ref: "#/components/schemas/PdfMetaData"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/Image"
-                - $ref: "#/components/schemas/Mail"
-                - $ref: "#/components/schemas/Pdf"
-          description: Updated file
-      summary: Updates the meta data of the specified file
-      tags:
-      - File
-  /files/{fileId}/meta-data/history:
-    get:
-      operationId: getMetaDataHistory
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetMetaDataHistoryResponse"
-          description: OK
-      tags:
-      - File
-  /gdpr-validation-tasks:
-    get:
-      operationId: getAllGdprValidationTasks
-      parameters:
-      - in: query
-        name: status
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprValidationTaskSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAllValidationTasksResponse"
-          description: OK
-      summary: Get all GDPR validation tasks
-      tags:
-      - GdprValidationTask
-    post:
-      operationId: addGdprValidationTask
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddGdprValidationTaskRequest"
-        required: true
-      responses:
-        "200":
-          description: Add a GDPR validation task
-      summary: Add a GDPR validation task
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/notification-banner:
-    get:
-      operationId: getGdprNotificationBanner
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprNotificationBannerResponse"
-          description: OK
-      summary: Get data for GDPR notification banner
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}:
-    delete:
-      operationId: deleteGdprValidationTaskAndDownloadPackages
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/DeleteDownloadPackagesRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Delete the GDPR validation task with gdprProcedureId and GDPR download
-        packages with ids from request
-      tags:
-      - GdprValidationTask
-    get:
-      operationId: getGdprValidationTask
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprValidationTaskResponse"
-          description: OK
-      summary: Get Gdpr Validation Task by Gdpr Procedure Id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures:
-    get:
-      operationId: getGdprValidationTaskDetails
-      parameters:
-      - description: The Id of the GDPR procedure.
-        in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprValidationTaskDetailsResponse"
-          description: OK
-      summary: Get a GDPR validation task by id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}:
-    delete:
-      operationId: deleteBusinessProcedure
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: businessProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Delete the businessProcedure with businessProcedureId for validationTask
-        with gdprProcedureId with type right of erasure
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}/downloadPackage:
-    post:
-      operationId: addDownloadPackage
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: businessProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Creates a downloadPackage for validationTask with gdprProcedureId with
-        the data from the procedure with businessProcedureId
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/close:
-    post:
-      operationId: closeGdprValidationTask
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Close a GDPR validation task
-      summary: Close a GDPR validation task
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/download-packages:
-    get:
-      operationId: getGdprDownloadPackagesInfo
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprDownloadPackagesInfoResponse"
-          description: OK
-      summary: Get approved Gdpr Download Packages by Gdpr Procedure Id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}:
-    get:
-      operationId: getGdprDownloadPackage
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: downloadId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get Gdpr Download Package by the gdprProcedureId and its downloadId
-      tags:
-      - GdprValidationTask
-  /import/citizen-list:
-    post:
-      operationId: importCitizenList
-      parameters:
-      - in: query
-        name: schoolYear
-        required: true
-        schema:
-          type: integer
-          format: int32
-          minimum: 1900
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                file:
-                  type: string
-                  format: binary
-              required:
-              - file
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: object
-          description: OK
-      summary: Upload a XLSX file to create multiple procedures.
-      tags:
-      - Import
-  /import/past-procedure-list/{schoolId}:
-    post:
-      operationId: importPastProcedureList
-      parameters:
-      - in: path
-        name: schoolId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: schoolYear
-        required: true
-        schema:
-          type: integer
-          format: int32
-          minimum: 1900
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                file:
-                  type: string
-                  format: binary
-              required:
-              - file
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: object
-          description: OK
-      summary: Upload a XLSX file to create multiple past procedures.
-      tags:
-      - Import
-  /import/school-list/{schoolId}:
-    post:
-      operationId: importSchoolList
-      parameters:
-      - in: path
-        name: schoolId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: locationId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: schoolYear
-        required: true
-        schema:
-          type: integer
-          format: int32
-          minimum: 1900
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                file:
-                  type: string
-                  format: binary
-              required:
-              - file
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: object
-          description: OK
-      summary: Upload a XLSX file to create multiple procedures.
-      tags:
-      - Import
-  /import/templates/citizen-list:
-    get:
-      operationId: getCitizenListTemplate
-      responses:
-        "200":
-          content:
-            application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get the XLSX citizen list template.
-      tags:
-      - Import
-  /import/templates/past-procedure-list:
-    get:
-      operationId: getPastProcedureListTemplate
-      responses:
-        "200":
-          content:
-            application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get the XLSX past procedures list template.
-      tags:
-      - Import
-  /import/templates/school-list:
-    get:
-      operationId: getSchoolListTemplate
-      responses:
-        "200":
-          content:
-            application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get the XLSX school list template.
-      tags:
-      - Import
-  /inbox-procedures:
-    get:
-      description: |
-        Get all inbox procedures with filter, sort, and pagination options
-      operationId: getInboxProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `inboxProcedureType` is submitted, only inbox procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place.
-        in: query
-        name: inboxProcedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If true, inbox procedures which have no type are returned in addition to the types specified by 'inboxProcedureType'.
-          - If false or not submitted, inbox procedures which have no type are not returned.
-        in: query
-        name: includeUntyped
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          Filter logic:
-          - If `inboxProcedureStatus` is submitted, only inbox procedures are returned which have one of the submitted statuses.
-          - If not submitted, no filtering takes place.
-        in: query
-        name: inboxProcedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/InboxProcedureStatus"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CREATED_AT`: Sorting by createdAt attribute
-          - `MODIFIED_AT`: Sorting by modifiedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetInboxProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetInboxProceduresSortOrder"
-      - description: Number of the requested page
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      - description: Amount of requested inbox procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 25
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInboxProceduresResponse"
-          description: OK
-      summary: Get inbox procedures
-      tags:
-      - InboxProcedure
-    post:
-      description: |-
-        Creates an inbox procedure with an optional file upload.
-
-               Permitted file formats:
-                - Image formats: jpeg, png
-                - PDF formats: pdf/a
-                - Mail formats: eml
-      operationId: addInboxProcedure
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                createInboxProcedureRequest:
-                  $ref: "#/components/schemas/CreateInboxProcedureRequest"
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-              required:
-              - createInboxProcedureRequest
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InboxProcedure"
-          description: OK
-      summary: Add inbox procedure
-      tags:
-      - InboxProcedure
-  /inbox-procedures/{inboxProcedureId}:
-    get:
-      operationId: getInboxProcedure
-      parameters:
-      - in: path
-        name: inboxProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInboxProcedureResponse"
-          description: OK
-      summary: Get inbox procedure with detailed information
-      tags:
-      - InboxProcedure
-  /inbox-procedures/{inboxProcedureId}/inbox-procedure-status:
-    put:
-      operationId: updateInboxProcedureStatus
-      parameters:
-      - in: path
-        name: inboxProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InboxProcedureStatus"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InboxProcedure"
-          description: OK
-      summary: Update status of inbox procedure
-      tags:
-      - InboxProcedure
-  /procedure-metrics:
-    get:
-      operationId: getProcedureMetrics
-      parameters:
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureMetricsResponse"
-          description: the metrics of procedures
-      summary: Get procedure metrics for procedures created in the given time range
-      tags:
-      - Procedure
-  /procedures:
-    get:
-      description: |
-        GET operation for retrieving basic information of procedures for the procedure overview.
-      operationId: getProcedures_1
-      parameters:
-      - description: |
-          Only procedures are returned where the assigneeId of at least one task equals the `assignedToId`.
-          If not submitted, no filtering takes place.
-        in: query
-        name: assignedToId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: |
-          Filter logic:
-          - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CREATED_AT`: Sorting by createdAt attribute
-          - `MODIFIED_AT`: Sorting by modifiedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for user
-      tags:
-      - Procedure
-  /procedures/check-file-state-usage:
-    post:
-      operationId: checkFileStateUsage
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CheckFileStateUsageRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CheckFileStateUsageResponse"
-          description: OK
-      summary: Identify which file state IDs are still used by active procedures.
-      tags:
-      - Procedure
-  /procedures/recent:
-    get:
-      operationId: getRecentProcedures
-      parameters:
-      - in: query
-        name: userId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRecentProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for user
-      tags:
-      - Procedure
-  /procedures/recent/self:
-    get:
-      operationId: getSelfRecentProcedures
-      parameters:
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRecentProceduresResponse"
-          description: the current users recent procedures
-      summary: Get recent procedures for the current user
-      tags:
-      - Procedure
-  /procedures/search:
-    get:
-      operationId: searchProcedures
-      parameters:
-      - in: query
-        name: query
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresResponse"
-          description: OK
-      tags:
-      - Procedure
-  /procedures/{id}:
-    get:
-      operationId: getDetailedProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetDetailedProcedureResponse"
-          description: a single procedure with details
-      summary: Get a single procedure with details
-      tags:
-      - Procedure
-  /procedures/{id}/approval-requests:
-    get:
-      operationId: getApprovalRequests
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureApprovalRequestsResponse"
-          description: OK
-      summary: Get all approval requests related to this procedure
-      tags:
-      - Procedure
-  /procedures/{id}/files:
-    get:
-      description: |
-        This returns all relevant (highest version per keydocument type and non-deleted) files sorted by descending creation date.
-        That is:
-         * if an progress entry has a keydocument type set, then its files are only returned if it also has the highest keydocument version of the respective key document type.
-         * if an progress entry does not have a keydocument type, then its files are always returned.
-      operationId: getProcedureFileDetails
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureFileDetailsResponse"
-          description: OK
-      summary: Get relevant procedure files
-      tags:
-      - Procedure
-  /procedures/{procedureId}/progress-entries:
-    get:
-      operationId: getProgressEntries
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - description: Filter on progressEntryType
-        in: query
-        name: progressEntryType
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-          uniqueItems: true
-      - description: Filter on child class of progressEntry
-        in: query
-        name: progressEntryClass
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProgressEntryClass"
-          uniqueItems: true
-      - description: |
-          If `initiatedBy` is set with a `userId` then the following is returned:
-          * Only progressEntries with `createdBy`=`userId` in case `ManualProgressEntry` or `ProcessedInboxProgressEntry`
-          * Only progressEntries with `triggeredBy`=`userId` in case `SystemProgressEntry`
-        in: query
-        name: initiatedBy
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      - description: |
-          Filter on triggerType.
-          If this is set, only SystemProgressEntries are returned since only SystemProgressEntries have this attribute.
-        in: query
-        name: triggerType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TriggerType"
-          uniqueItems: true
-      - description: 'Sorting on either modifiedAt or createdAt '
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProgressEntrySortBy"
-      - description: Sorting order. Possible options  "ASC" for ascending and "DESC"
-          for descending.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProgressEntrySortOrder"
-      - description: Maximum number of elements to return
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Index of page to be returned
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProgressEntriesResponse"
-          description: OK
-      summary: Get list of procedure's progress entries
-      tags:
-      - ProgressEntry
-    post:
-      description: |-
-        Creates a manual progress entry with an optional file upload.
-
-               Permitted file formats:
-                - Image formats: jpeg, png
-                - PDF formats: pdf/a
-                - Mail formats: eml
-      operationId: addProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                createManualProgressEntryRequest:
-                  $ref: "#/components/schemas/CreateManualProgressEntryRequest"
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-              required:
-              - createManualProgressEntryRequest
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ManualProgressEntry"
-          description: OK
-      summary: Create a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}:
-    delete:
-      operationId: removeProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Remove a manual progress entry
-      tags:
-      - ProgressEntry
-    get:
-      operationId: getProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProgressEntryResponse"
-          description: OK
-      summary: Get a progress entry
-      tags:
-      - ProgressEntry
-    patch:
-      operationId: patchProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchManualProgressEntryRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ManualProgressEntry"
-          description: OK
-      summary: Modify a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}/deletion-request:
-    post:
-      operationId: requestProgressEntryDeletion
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateApprovalRequestRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      summary: Request deletion of a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}/history:
-    get:
-      operationId: getManualProgressEntryHistory
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetManualProgressEntryHistoryResponse"
-          description: OK
-      summary: Get the history of a manual progress entry
-      tags:
-      - ProgressEntry
-  /school-entries:
-    get:
-      operationId: getProcedures
-      parameters:
-      - in: query
-        name: procedureTypeFilter
-        required: false
-        schema:
-          $ref: "#/components/schemas/SchoolEntryProcedureType"
-      - in: query
-        name: schoolIdFilter
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: schoolYearFilter
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1900
-      - in: query
-        name: dayOfAppointmentFilter
-        required: false
-        schema:
-          type: string
-          format: date
-      - in: query
-        name: hasAppointmentFilter
-        required: false
-        schema:
-          type: boolean
-      - in: query
-        name: labelsFilter
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-      - in: query
-        name: isInvitationSentFilter
-        required: false
-        schema:
-          type: boolean
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/SchoolEntryProcedureSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      - in: query
-        name: searchFirstName
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: searchLastName
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: searchDateOfBirth
-        required: false
-        schema:
-          type: string
-          format: date
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetSchoolEntryProceduresResponse"
-          description: OK
-      summary: Get all school entry procedures. Filter results by type. Sort and page
-        the results by id.
-      tags:
-      - SchoolEntry
-    post:
-      operationId: createProcedure
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateProcedureRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CreateProcedureResponse"
-          description: OK
-      summary: Create a school entry procedure.
-      tags:
-      - SchoolEntry
-  /school-entries/appointments:
-    post:
-      operationId: createAppointmentsInBulk
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateAppointmentsBulkRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CreateAppointmentsBulkResponse"
-          description: OK
-      tags:
-      - SchoolEntry
-  /school-entries/by-person-id:
-    get:
-      operationId: getProceduresByPersonQuery
-      parameters:
-      - in: query
-        name: personId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresWithDetailsResponse"
-          description: OK
-      tags:
-      - SchoolEntry
-  /school-entries/download/invitations:
-    post:
-      operationId: downloadInvitations
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/DownloadInvitationsBulkRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - SchoolEntry
-  /school-entries/waiting-room-procedures:
-    get:
-      operationId: getWaitingRoomProcedures
-      parameters:
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/WaitingRoomSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetWaitingRoomProceduresResponse"
-          description: OK
-      tags:
-      - SchoolEntry
-  /school-entries/{procedureId}:
-    get:
-      operationId: getProcedure
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ProcedureDetails"
-          description: OK
-      summary: Get school entry procedure by id.
-      tags:
-      - SchoolEntry
-    put:
-      operationId: updateProcedure
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateProcedureRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ProcedureDetails"
-          description: OK
-      tags:
-      - SchoolEntry
-  /school-entries/{procedureId}/anamnesis:
-    get:
-      operationId: getAnamnesis
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Anamnesis"
-          description: OK
-      summary: Get anamnesis for a procedure.
-      tags:
-      - SchoolEntry
-    put:
-      operationId: updateAnamnesis
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/Anamnesis"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Anamnesis"
-          description: OK
-      summary: Update anamnesis for a procedure.
-      tags:
-      - SchoolEntry
-  /school-entries/{procedureId}/child:
-    put:
-      operationId: updateChildData
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdatePersonRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ProcedureDetails"
-          description: OK
-      tags:
-      - SchoolEntry
-  /school-entries/{procedureId}/close-procedure:
-    post:
-      operationId: closeProcedure
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CloseProcedureRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ProcedureDetails"
-          description: OK
-      tags:
-      - SchoolEntry
-  /school-entries/{procedureId}/custodian:
-    put:
-      operationId: addCustodian
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddCustodianRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ProcedureDetails"
-          description: OK
-      tags:
-      - SchoolEntry
-  /school-entries/{procedureId}/custodian/{custodianCentralFileStateId}:
-    delete:
-      operationId: removeCustodian
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: custodianCentralFileStateId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/RemoveCustodianRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ProcedureDetails"
-          description: OK
-      tags:
-      - SchoolEntry
-    put:
-      operationId: updateCustodian
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: custodianCentralFileStateId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdatePersonRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ProcedureDetails"
-          description: OK
-      tags:
-      - SchoolEntry
-  /school-entries/{procedureId}/delete-procedure:
-    delete:
-      operationId: deleteProcedure
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/DeleteProcedureRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - SchoolEntry
-  /school-entries/{procedureId}/development-screening-result:
-    get:
-      operationId: getDevelopmentScreeningResult
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetDevelopmentScreeningResult"
-          description: OK
-      summary: Get development screening result for a procedure.
-      tags:
-      - SchoolEntry
-    put:
-      operationId: updateDevelopmentScreeningResult
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/DevelopmentScreeningResult"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetDevelopmentScreeningResult"
-          description: OK
-      summary: Update development screening result for a procedure.
-      tags:
-      - SchoolEntry
-  /school-entries/{procedureId}/eye-examination-result:
-    get:
-      operationId: getEyeExaminationResult
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/EyeExaminationResult"
-          description: OK
-      summary: Get eye examination for a procedure.
-      tags:
-      - SchoolEntry
-    put:
-      operationId: updateEyeExaminationResult
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/EyeExaminationResult"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/EyeExaminationResult"
-          description: OK
-      summary: Update eye examination for a procedure.
-      tags:
-      - SchoolEntry
-  /school-entries/{procedureId}/free-appointments:
-    get:
-      operationId: getFreeAppointmentsForProcedure
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          $ref: "#/components/schemas/SchoolEntryProcedureType"
-      - in: query
-        name: labelIds
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-      - in: query
-        name: schoolId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: locationId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetFreeAppointmentsResponse"
-          description: OK
-      summary: Get free appointments for a procedure. Free appointments are determined
-        based on the ProcedureType and labels.
-      tags:
-      - SchoolEntry
-  /school-entries/{procedureId}/hearing-test-result:
-    get:
-      operationId: getHearingTestResult
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/HearingTestResult"
-          description: OK
-      summary: Get hearing test for a procedure.
-      tags:
-      - SchoolEntry
-    put:
-      operationId: updateHearingTestResult
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/HearingTestResult"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/HearingTestResult"
-          description: OK
-      summary: Update hearing test for a procedure.
-      tags:
-      - SchoolEntry
-  /school-entries/{procedureId}/medical-report:
-    post:
-      operationId: createMedicalReport
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateMedicalReportRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - SchoolEntry
-  /school-entries/{procedureId}/reopen-procedure:
-    post:
-      operationId: reopenProcedure
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ReopenProcedureRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ProcedureDetails"
-          description: OK
-      tags:
-      - SchoolEntry
-  /school-entries/{procedureId}/school-info-letter:
-    post:
-      operationId: createSchoolInfoLetter
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateSchoolInfoLetterRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - SchoolEntry
-  /school-entries/{procedureId}/sopess-examination-result:
-    get:
-      operationId: getSopessExaminationResult
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/SopessExaminationResult"
-          description: OK
-      tags:
-      - SchoolEntry
-    put:
-      operationId: updateSopessExaminationResult
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SopessExaminationResult"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/SopessExaminationResult"
-          description: OK
-      tags:
-      - SchoolEntry
-  /school-entries/{procedureId}/sync-person:
-    put:
-      operationId: syncPersonData
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SyncPersonRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ProcedureDetails"
-          description: OK
-      tags:
-      - SchoolEntry
-  /school-entries/{procedureId}/vaccination-status:
-    get:
-      operationId: getVaccinationStatus
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/VaccinationStatus"
-          description: OK
-      summary: Get vaccination status for a procedure.
-      tags:
-      - SchoolEntry
-    put:
-      operationId: updateVaccinationStatus
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/VaccinationStatus"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/VaccinationStatus"
-          description: OK
-      summary: Update vaccination status for a procedure.
-      tags:
-      - SchoolEntry
-  /school-entries/{procedureId}/validate-completeness:
-    get:
-      operationId: validateCompleteness
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ValidateRequiredProcedureDataResponse"
-          description: OK
-      tags:
-      - SchoolEntry
-  /school-entries/{procedureId}/waiting-room:
-    put:
-      operationId: updateWaitingRoomDetails
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/WaitingRoom"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/WaitingRoom"
-          description: OK
-      summary: Update waiting room details for a procedure.
-      tags:
-      - SchoolEntry
-  /school-entry-labels:
-    get:
-      operationId: getLabels
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetSchoolEntryLabelsResponse"
-          description: OK
-      tags:
-      - Label
-    post:
-      operationId: createLabel
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateLabelRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/SchoolEntryLabel"
-          description: OK
-      tags:
-      - Label
-  /school-entry-labels/{id}:
-    get:
-      operationId: getLabel
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/SchoolEntryLabel"
-          description: OK
-      tags:
-      - Label
-    put:
-      operationId: updateLabel
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateLabelRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/SchoolEntryLabel"
-          description: OK
-      tags:
-      - Label
-  /statistics/procedure-ids:
-    post:
-      operationId: getProcedureIds
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GetProcedureIdsRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureIdsResponse"
-          description: OK
-      summary: Get procedure ids for procedure references
-      tags:
-      - StatisticsProcedureReference
-  /task-metrics:
-    get:
-      operationId: getTaskMetrics
-      parameters:
-      - in: query
-        name: procedureType
-        required: true
-        schema:
-          $ref: "#/components/schemas/ProcedureType"
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTaskMetricsResponse"
-          description: the metrics of a specific procedure type
-      summary: Get tasks metrics for a procedure type of a business module for procedures
-        created in the given time range
-      tags:
-      - Task
-  /tasks:
-    get:
-      operationId: getTasks
-      parameters:
-      - in: query
-        name: assigneeId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: assignedById
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      - in: query
-        name: taskTypes
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskType"
-          uniqueItems: true
-      - in: query
-        name: taskStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskStatus"
-          uniqueItems: true
-      - in: query
-        name: sortKey
-        required: true
-        schema:
-          $ref: "#/components/schemas/GetTasksSortBy"
-      - in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetTasksSortOrder"
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TaskResponse"
-          description: tasks
-      summary: Get tasks
-      tags:
-      - Task
-  /tasks/dashboard:
-    get:
-      operationId: getTasksForDashboard
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TaskResponse"
-          description: tasks
-      summary: Get tasks for the dashboard
-      tags:
-      - Task
-  /tasks/team-view:
-    get:
-      description: Returns all _open_ tasks per module group member.
-      operationId: getTasksByAssignee
-      parameters:
-      - description: |
-          If provided, `assignee` must be member of the module group.
-          If not provided, all tasks for all members of the module group are returned.
-        in: query
-        name: assigneeId
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTaskByUserResponse"
-          description: OK
-      tags:
-      - Task
-  /tasks/{taskId}/assignment:
-    put:
-      operationId: assignTask
-      parameters:
-      - in: path
-        name: taskId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AssignTaskRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Task"
-          description: OK
-      tags:
-      - Task
-  /tasks/{taskId}/self-assignment:
-    put:
-      operationId: selfAssignTask
-      parameters:
-      - in: path
-        name: taskId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SelfAssignTaskRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Task"
-          description: OK
-      tags:
-      - Task
-  /test-helper/archiving-job:
-    post:
-      operationId: runArchivingJob
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/audit-log-storage:
-    delete:
-      operationId: clearAuditLogStorageDirectory
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/direct-procedure-type-assignment-on-import:
-    post:
-      operationId: enableDirectProcedureTypeAssignmentOnImport
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/enabled-new-features/{featureToDisable}:
-    delete:
-      operationId: disableNewFeature
-      parameters:
-      - in: path
-        name: featureToDisable
-        required: true
-        schema:
-          $ref: "#/components/schemas/SchoolEntryFeature"
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/enabled-new-features/{featureToEnable}:
-    post:
-      operationId: enableNewFeature
-      parameters:
-      - in: path
-        name: featureToEnable
-        required: true
-        schema:
-          $ref: "#/components/schemas/SchoolEntryFeature"
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/location-selection-mode/{newLocationSelectionMode}:
-    post:
-      operationId: updateLocationSelectionMode
-      parameters:
-      - in: path
-        name: newLocationSelectionMode
-        required: true
-        schema:
-          $ref: "#/components/schemas/LocationSelectionMode"
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population/appointment-block-groups:
-    post:
-      operationId: populateAppointmentBlockGroups
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PopulationRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/SchoolEntryAppointmentBlockPopulationResult"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population/procedures:
-    post:
-      operationId: populateProcedures
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PopulationRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/SchoolEntryProcedurePopulationResult"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/school-entries/closed:
-    get:
-      operationId: getIdsOfClosedProcedures
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetClosedProceduresResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/school-entries/{procedureId}/citizen-user-id:
-    delete:
-      operationId: clearCitizenUserId
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-    get:
-      operationId: getCitizenUserId
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: uuid
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /value-evaluation/{procedureId}/percentiles:
-    get:
-      description: "To calculate the percentiles, in addition to the data provided,\
-        \ the child's age and gender are also required."
-      operationId: getPercentiles
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - description: Measured height in m.
-        in: query
-        name: height
-        required: false
-        schema:
-          type: number
-          format: double
-          description: Measured height in m.
-      - description: Measured weight in kg.
-        in: query
-        name: weight
-        required: false
-        schema:
-          type: number
-          format: double
-          description: Measured weight in kg.
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Percentiles"
-          description: OK
-      summary: Get calculated percentile values
-      tags:
-      - ValueEvaluator
-components:
-  schemas:
-    AbstractFile:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFileReference"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          createdAt:
-            type: string
-            format: date-time
-          createdBy:
-            type: string
-            format: uuid
-          fileName:
-            type: string
-          fileSizeBytes:
-            type: integer
-            format: int32
-          fileType:
-            $ref: "#/components/schemas/FileType"
-          locked:
-            type: boolean
-          modifiedAt:
-            type: string
-            format: date-time
-      - $ref: "#/components/schemas/ApprovalRequestEntity"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    AbstractFileReference:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        deletable:
-          type: boolean
-        deleted:
-          type: boolean
-        fileId:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - deletable
-      - deleted
-      - fileId
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    AddCitizenAnamnesisRequest:
-      type: object
-      description: Add an anamnesis of the child completed by the custodians.
-      properties:
-        anamnesis:
-          $ref: "#/components/schemas/CitizenAnamnesis"
-      required:
-      - anamnesis
-    AddCustodianRequest:
-      type: object
-      properties:
-        custodian:
-          $ref: "#/components/schemas/CreatePerson"
-        procedureVersion:
-          type: integer
-          format: int64
-      required:
-      - custodian
-      - procedureVersion
-    AddGdprValidationTaskRequest:
-      type: object
-      properties:
-        gdprProcedureId:
-          type: string
-          format: uuid
-        startedAt:
-          type: string
-          format: date-time
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - gdprProcedureId
-      - startedAt
-      - type
-    AdditionalChildInfo:
-      type: object
-      properties:
-        numberOfSiblings:
-          type: integer
-          format: int32
-        responsiblePhysician:
-          type: string
-        siblingsBirthYears:
-          type: array
-          items:
-            type: integer
-            format: int32
-    Address:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    Anamnesis:
-      type: object
-      properties:
-        additionalChildInfo:
-          $ref: "#/components/schemas/AdditionalChildInfo"
-        checkUps:
-          $ref: "#/components/schemas/CheckUps"
-        childLanguageScreening:
-          type: boolean
-          description: "Boolean that indicates, if the child participated in the KiSS\
-            \ language screening."
-        daycareAndSchoolInfo:
-          $ref: "#/components/schemas/DaycareAndSchoolInfo"
-        developmentInfo:
-          $ref: "#/components/schemas/DevelopmentInfo"
-        familyHistoryInfo:
-          $ref: "#/components/schemas/FamilyHistoryInfo"
-        illnessAndAccidentInfo:
-          $ref: "#/components/schemas/IllnessAndAccidentInfo"
-        interestsAndSportsInfo:
-          $ref: "#/components/schemas/InterestsAndSportsInfo"
-        migrationBackground:
-          $ref: "#/components/schemas/MigrationBackground"
-        personalConspicuities:
-          type: boolean
-        preliminaryCourse:
-          type: boolean
-          description: "Boolean that indicates, if the child participated in a preliminary\
-            \ course."
-        promotionBeforeSchoolEntry:
-          $ref: "#/components/schemas/PromotionBeforeSchoolEntry"
-        promotionTherapyAndAidInfo:
-          $ref: "#/components/schemas/PromotionTherapyAndAidInfo"
-        version:
-          type: integer
-          format: int64
-          description: "Version of the entity. Each time the entity is changed, it\
-            \ is incremented by one."
-      required:
-      - additionalChildInfo
-      - checkUps
-      - daycareAndSchoolInfo
-      - developmentInfo
-      - familyHistoryInfo
-      - illnessAndAccidentInfo
-      - interestsAndSportsInfo
-      - migrationBackground
-      - promotionBeforeSchoolEntry
-      - promotionTherapyAndAidInfo
-      - version
-    Appointment:
-      type: object
-      description: Appointment of a procedure.
-      properties:
-        end:
-          type: string
-          format: date-time
-        start:
-          type: string
-          format: date-time
-      required:
-      - end
-      - start
-    AppointmentAddress:
-      type: object
-      properties:
-        address:
-          $ref: "#/components/schemas/DomesticAddress"
-        name:
-          type: string
-      required:
-      - address
-      - name
-    AppointmentBlockSortKey:
-      type: string
-      enum:
-      - START
-      - END
-    AppointmentLocation:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-      required:
-      - id
-      - name
-    AppointmentType:
-      type: string
-      enum:
-      - CONSULTATION
-      - VACCINATION
-      - REGULAR_EXAMINATION
-      - CAN_CHILD
-      - ENTRY_LEVEL
-      - SPECIAL_NEEDS
-      - PROOF_SUBMISSION
-      - HIV_STI_CONSULTATION
-      - SEX_WORK
-      - RESULTS_REVIEW
-      - OFFICIAL_MEDICAL_SERVICE
-    AppointmentTypeConfig:
-      type: object
-      properties:
-        appointmentTypeDto:
-          $ref: "#/components/schemas/AppointmentType"
-        id:
-          type: string
-          format: uuid
-        standardDurationInMinutes:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - appointmentTypeDto
-      - id
-      - standardDurationInMinutes
-    ApprovalRequest:
-      type: object
-      properties:
-        approvalRequestId:
-          type: string
-          format: uuid
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-          format: uuid
-        decidedAt:
-          type: string
-          format: date-time
-        decidedBy:
-          type: string
-          format: uuid
-        decision:
-          $ref: "#/components/schemas/Decision"
-        entity:
-          oneOf:
-          - $ref: "#/components/schemas/ManualProgressEntry"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        operation:
-          $ref: "#/components/schemas/Operation"
-        reason:
-          type: string
-        status:
-          $ref: "#/components/schemas/ApprovalRequestStatus"
-      required:
-      - approvalRequestId
-      - createdAt
-      - createdBy
-      - operation
-      - reason
-      - status
-    ApprovalRequestEntity:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    ApprovalRequestStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    ArchivingDetails:
-      type: object
-      properties:
-        archivingPeriodYears:
-          type: integer
-          format: int32
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-      required:
-      - archivingPeriodYears
-      - archivingRelevance
-    ArchivingRelevance:
-      type: string
-      enum:
-      - DEFAULT
-      - RELEVANT
-      - IRRELEVANT
-    ArchivingRelevanceSettings:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        defaultArchivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-      required:
-      - archivingRelevance
-      - defaultArchivingRelevance
-    Articulation:
-      type: object
-      properties:
-        formationChPoints:
-          $ref: "#/components/schemas/ArticulationValue"
-        formationSchPoints:
-          $ref: "#/components/schemas/ArticulationValue"
-        formationsTrDrKrGrPoints:
-          $ref: "#/components/schemas/ArticulationValue"
-        letterBPoints:
-          $ref: "#/components/schemas/ArticulationValue"
-        letterFAndFormationPfPoints:
-          $ref: "#/components/schemas/ArticulationValue"
-        letterRPoints:
-          $ref: "#/components/schemas/ArticulationValue"
-        lettersGAndKPoints:
-          $ref: "#/components/schemas/ArticulationValue"
-        lettersLAndNPoints:
-          $ref: "#/components/schemas/ArticulationValue"
-        lettersSAndZPoints:
-          $ref: "#/components/schemas/ArticulationValue"
-        lettersTAndDPoints:
-          $ref: "#/components/schemas/ArticulationValue"
-    ArticulationValue:
-      type: string
-      enum:
-      - INCONSPICUOUS
-      - CONSPICUOUS
-      - UNKNOWN
-    AssignTaskRequest:
-      type: object
-      properties:
-        assignee:
-          type: string
-          format: uuid
-        dueAt:
-          type: string
-          format: date-time
-        taskVersion:
-          type: integer
-          format: int64
-      required:
-      - assignee
-      - taskVersion
-    BooleanWithUnknown:
-      type: string
-      enum:
-      - "TRUE"
-      - "FALSE"
-      - UNKNOWN
-    BulkUpdateProceduresArchivingRelevanceRequest:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        procedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 200
-          minItems: 1
-          uniqueItems: true
-      required:
-      - archivingRelevance
-      - procedures
-    BulkUpdateProceduresArchivingRelevanceResponse:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        failedProcedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-        updatedProcedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      required:
-      - archivingRelevance
-      - failedProcedures
-      - updatedProcedures
-    BusinessModule:
-      type: string
-      enum:
-      - INSPECTION
-      - SCHOOL_ENTRY
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY
-      - DENTAL
-      - OFFICIAL_MEDICAL_SERVICE
-    BusinessProcedureInclusionStatus:
-      type: string
-      enum:
-      - INCLUDED
-      - UNDECIDED
-    BusinessProcedureWithInclusionStatus:
-      type: object
-      properties:
-        businessProcedure:
-          $ref: "#/components/schemas/Procedure"
-        inclusionStatus:
-          $ref: "#/components/schemas/BusinessProcedureInclusionStatus"
-      required:
-      - businessProcedure
-      - inclusionStatus
-    CheckFileStateUsageRequest:
-      type: object
-      properties:
-        fileStatesIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-      required:
-      - fileStatesIds
-    CheckFileStateUsageResponse:
-      type: object
-      properties:
-        inUse:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - inUse
-    CheckUps:
-      type: object
-      properties:
-        u2:
-          $ref: "#/components/schemas/BooleanWithUnknown"
-        u3:
-          $ref: "#/components/schemas/BooleanWithUnknown"
-        u4:
-          $ref: "#/components/schemas/BooleanWithUnknown"
-        u5:
-          $ref: "#/components/schemas/BooleanWithUnknown"
-        u6:
-          $ref: "#/components/schemas/BooleanWithUnknown"
-        u7:
-          $ref: "#/components/schemas/BooleanWithUnknown"
-        u7a:
-          $ref: "#/components/schemas/BooleanWithUnknown"
-        u8:
-          $ref: "#/components/schemas/BooleanWithUnknown"
-        u9:
-          $ref: "#/components/schemas/BooleanWithUnknown"
-    Child:
-      type: object
-      description: "Child representation. In the context of the school entry examination,\
-        \ the child represents the patient."
-      properties:
-        dateOfBirth:
-          type: string
-          format: date
-          description: Date of birth of the person.
-          example: 2024-02-01
-        firstName:
-          type: string
-          description: First name of the person.
-          example: Hermione
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: Last name of the person.
-          example: Granger
-      required:
-      - dateOfBirth
-      - firstName
-      - gender
-      - lastName
-    CitizenAdditionalChildInfo:
-      type: object
-      properties:
-        responsiblePhysician:
-          type: string
-        siblingsBirthYears:
-          type: array
-          items:
-            type: integer
-            format: int32
-    CitizenAnamnesis:
-      type: object
-      properties:
-        additionalChildInfo:
-          $ref: "#/components/schemas/CitizenAdditionalChildInfo"
-        childLanguageScreening:
-          type: boolean
-          description: "Boolean that indicates, if the child participated in the KiSS\
-            \ language screening."
-        daycareAndSchoolInfo:
-          $ref: "#/components/schemas/DaycareAndSchoolInfo"
-        developmentInfo:
-          $ref: "#/components/schemas/DevelopmentInfo"
-        familyHistoryInfo:
-          $ref: "#/components/schemas/FamilyHistoryInfo"
-        illnessAndAccidentInfo:
-          $ref: "#/components/schemas/IllnessAndAccidentInfo"
-        interestsAndSportsInfo:
-          $ref: "#/components/schemas/InterestsAndSportsInfo"
-        migrationBackground:
-          $ref: "#/components/schemas/CitizenMigrationBackground"
-        personalConspicuities:
-          type: boolean
-        preliminaryCourse:
-          type: boolean
-          description: "Boolean that indicates, if the child participated in a preliminary\
-            \ course."
-        promotionBeforeSchoolEntry:
-          $ref: "#/components/schemas/PromotionBeforeSchoolEntry"
-        promotionTherapyAndAidInfo:
-          $ref: "#/components/schemas/PromotionTherapyAndAidInfo"
-      required:
-      - additionalChildInfo
-      - daycareAndSchoolInfo
-      - developmentInfo
-      - familyHistoryInfo
-      - illnessAndAccidentInfo
-      - interestsAndSportsInfo
-      - migrationBackground
-      - promotionBeforeSchoolEntry
-      - promotionTherapyAndAidInfo
-    CitizenChild:
-      type: object
-      description: Get procedure information of child.
-      properties:
-        dateOfBirth:
-          type: string
-          format: date
-        firstName:
-          type: string
-        lastName:
-          type: string
-      required:
-      - dateOfBirth
-      - firstName
-      - lastName
-    CitizenMigrationBackground:
-      type: object
-      properties:
-        countryOfBirthChild:
-          $ref: "#/components/schemas/SchoolEntryCountryCode"
-        countryOfBirthFirstParent:
-          $ref: "#/components/schemas/SchoolEntryCountryCode"
-        countryOfBirthSecondParent:
-          $ref: "#/components/schemas/SchoolEntryCountryCode"
-        inGermanySince:
-          type: string
-          format: date
-          description: Date from which the child lives in Germany
-          example: 2000-01-01
-        nationalityChild:
-          $ref: "#/components/schemas/SchoolEntryCountryCode"
-        nationalityFirstParent:
-          $ref: "#/components/schemas/SchoolEntryCountryCode"
-        nationalitySecondParent:
-          $ref: "#/components/schemas/SchoolEntryCountryCode"
-    CloseProcedureRequest:
-      type: object
-      properties:
-        version:
-          type: integer
-          format: int64
-      required:
-      - version
-    ContactDetails:
-      type: object
-      properties:
-        address:
-          $ref: "#/components/schemas/InboxProcedureAddress"
-        contactType:
-          $ref: "#/components/schemas/ContactType"
-        dateOfBirth:
-          type: string
-          format: date
-        emailAddress:
-          type: string
-        facilityName:
-          type: string
-        firstName:
-          type: string
-        lastName:
-          type: string
-        phoneNumber:
-          type: string
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          $ref: "#/components/schemas/Title"
-      required:
-      - contactType
-      - salutation
-    ContactType:
-      type: string
-      enum:
-      - PRIVATE_PERSON
-      - FACILITY
-    CountryCode:
-      type: string
-      description: "List of country codes in ISO 3166-1 alpha-2 format. With custom\
-        \ extensions for stateless, non-standard countries, and unknown countries."
-      enum:
-      - AD
-      - AE
-      - AF
-      - AG
-      - AI
-      - AL
-      - AM
-      - AO
-      - AQ
-      - AR
-      - AS
-      - AT
-      - AU
-      - AW
-      - AX
-      - AZ
-      - BA
-      - BB
-      - BD
-      - BE
-      - BF
-      - BG
-      - BH
-      - BI
-      - BJ
-      - BL
-      - BM
-      - BN
-      - BO
-      - BQ
-      - BR
-      - BS
-      - BT
-      - BV
-      - BW
-      - BY
-      - BZ
-      - CA
-      - CC
-      - CD
-      - CF
-      - CG
-      - CH
-      - CI
-      - CK
-      - CL
-      - CM
-      - CN
-      - CO
-      - CR
-      - CU
-      - CV
-      - CW
-      - CX
-      - CY
-      - CZ
-      - DE
-      - DJ
-      - DK
-      - DM
-      - DO
-      - DZ
-      - EC
-      - EE
-      - EG
-      - EH
-      - ER
-      - ES
-      - ET
-      - FI
-      - FJ
-      - FK
-      - FM
-      - FO
-      - FR
-      - GA
-      - GB
-      - GD
-      - GE
-      - GF
-      - GG
-      - GH
-      - GI
-      - GL
-      - GM
-      - GN
-      - GP
-      - GQ
-      - GR
-      - GS
-      - GT
-      - GU
-      - GW
-      - GY
-      - HK
-      - HM
-      - HN
-      - HR
-      - HT
-      - HU
-      - ID
-      - IE
-      - IL
-      - IM
-      - IN
-      - IO
-      - IQ
-      - IR
-      - IS
-      - IT
-      - JE
-      - JM
-      - JO
-      - JP
-      - KE
-      - KG
-      - KH
-      - KI
-      - KM
-      - KN
-      - KP
-      - KR
-      - KW
-      - KY
-      - KZ
-      - LA
-      - LB
-      - LC
-      - LI
-      - LK
-      - LR
-      - LS
-      - LT
-      - LU
-      - LV
-      - LY
-      - MA
-      - MC
-      - MD
-      - ME
-      - MF
-      - MG
-      - MH
-      - MK
-      - ML
-      - MM
-      - MN
-      - MO
-      - MP
-      - MQ
-      - MR
-      - MS
-      - MT
-      - MU
-      - MV
-      - MW
-      - MX
-      - MY
-      - MZ
-      - NA
-      - NC
-      - NE
-      - NF
-      - NG
-      - NI
-      - NL
-      - "NO"
-      - NP
-      - NR
-      - NU
-      - NZ
-      - OM
-      - PA
-      - PE
-      - PF
-      - PG
-      - PH
-      - PK
-      - PL
-      - PM
-      - PN
-      - PR
-      - PS
-      - PT
-      - PW
-      - PY
-      - QA
-      - RE
-      - RO
-      - RS
-      - RU
-      - RW
-      - SA
-      - SB
-      - SC
-      - SD
-      - SE
-      - SG
-      - SH
-      - SI
-      - SJ
-      - SK
-      - SL
-      - SM
-      - SN
-      - SO
-      - SR
-      - SS
-      - ST
-      - SV
-      - SX
-      - SY
-      - SZ
-      - TC
-      - TD
-      - TF
-      - TG
-      - TH
-      - TJ
-      - TK
-      - TL
-      - TM
-      - TN
-      - TO
-      - TR
-      - TT
-      - TV
-      - TW
-      - TZ
-      - UA
-      - UG
-      - UM
-      - US
-      - UY
-      - UZ
-      - VA
-      - VC
-      - VE
-      - VG
-      - VI
-      - VN
-      - VU
-      - WF
-      - WS
-      - YE
-      - YT
-      - ZA
-      - ZM
-      - ZW
-      - XK
-      - UNKNOWN
-      - STATELESS
-    CreateAppointmentBlockGroupResponse:
-      type: object
-      properties:
-        appointmentBlockIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-        id:
-          type: string
-          format: uuid
-          description: Id of the AppointmentBlockGroup.
-          example: a765534d-760a-417d-8639-5e2fd59246e2
-      required:
-      - appointmentBlockIds
-      - id
-    CreateAppointmentsBulkRequest:
-      type: object
-      properties:
-        procedureIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - procedureIds
-    CreateAppointmentsBulkResponse:
-      type: object
-      properties:
-        numCreated:
-          type: integer
-          format: int32
-          minimum: 0
-        numError:
-          type: integer
-          format: int32
-          minimum: 0
-        numUnmodified:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - numCreated
-      - numError
-      - numUnmodified
-    CreateApprovalRequestRequest:
-      type: object
-      properties:
-        reason:
-          type: string
-      required:
-      - reason
-    CreateDailyAppointmentBlock:
-      type: object
-      properties:
-        daysOfWeek:
-          type: array
-          items:
-            $ref: "#/components/schemas/DayOfWeek"
-        end:
-          type: string
-          format: date-time
-          description: Time at which the appointment block ends.
-          example: 2016-01-01T01:45:00.123456+01:00
-        start:
-          type: string
-          format: date-time
-          description: Time at which the appointment block starts.
-          example: 2016-01-01T01:00:00.123456+01:00
-      required:
-      - daysOfWeek
-      - end
-      - start
-    CreateDailyAppointmentBlockGroupRequest:
-      type: object
-      properties:
-        appointmentBlocks:
-          type: array
-          items:
-            $ref: "#/components/schemas/CreateDailyAppointmentBlock"
-        consultants:
-          type: array
-          items:
-            type: string
-            format: uuid
-        locationId:
-          type: string
-          format: uuid
-        mfas:
-          type: array
-          items:
-            type: string
-            format: uuid
-        parallelExaminations:
-          type: integer
-          format: int32
-          maximum: 10
-          minimum: 1
-        physicians:
-          type: array
-          items:
-            type: string
-            format: uuid
-        type:
-          $ref: "#/components/schemas/AppointmentType"
-      required:
-      - appointmentBlocks
-      - parallelExaminations
-      - type
-    CreateInboxProcedureRequest:
-      type: object
-      properties:
-        contactDetails:
-          $ref: "#/components/schemas/ContactDetails"
-        inboxProcedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        inboxProgressEntry:
-          $ref: "#/components/schemas/CreateInboxProgressEntry"
-      required:
-      - contactDetails
-      - inboxProgressEntry
-    CreateInboxProgressEntry:
-      type: object
-      properties:
-        inboxProgressEntryType:
-          $ref: "#/components/schemas/InboxProgressEntryType"
-        messageText:
-          type: string
-        subject:
-          type: string
-      required:
-      - inboxProgressEntryType
-    CreateLabelRequest:
-      type: object
-      properties:
-        description:
-          type: string
-        name:
-          type: string
-          maxLength: 255
-          minLength: 0
-      required:
-      - name
-    CreateManualProgressEntryRequest:
-      type: object
-      properties:
-        keyDocumentType:
-          type: string
-        manualProgressEntryType:
-          $ref: "#/components/schemas/ManualProgressEntryType"
-        note:
-          type: string
-      required:
-      - manualProgressEntryType
-    CreateMedicalReportRequest:
-      type: object
-      properties:
-        isVisio:
-          type: boolean
-        remark:
-          type: string
-          maxLength: 600
-          minLength: 1
-      required:
-      - isVisio
-      - remark
-    CreatePerson:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dateOfBirth:
-          type: string
-          format: date
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          items:
-            type: string
-            maxLength: 254
-            minLength: 6
-        firstName:
-          type: string
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          maxLength: 40
-          minLength: 1
-        phoneNumbers:
-          type: array
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          maxLength: 50
-          minLength: 1
-        referenceId:
-          type: string
-          format: uuid
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          maxLength: 119
-          minLength: 1
-      required:
-      - dateOfBirth
-      - firstName
-      - lastName
-    CreateProcedureRequest:
-      type: object
-      properties:
-        child:
-          $ref: "#/components/schemas/CreatePerson"
-        type:
-          $ref: "#/components/schemas/SchoolEntryProcedureType"
-      required:
-      - child
-      - type
-    CreateProcedureResponse:
-      type: object
-      properties:
-        procedureId:
-          type: string
-          format: uuid
-          description: Id of the Procedure.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-      required:
-      - procedureId
-    CreateSchoolInfoLetterRequest:
-      type: object
-      properties:
-        consultationWithCustodianRecommended:
-          type: boolean
-        meetingBetweenYouthHealthServicesAndSchoolManagementRecommended:
-          type: boolean
-        note:
-          type: string
-        parentsWishNote:
-          type: string
-        referredToFurtherConsultationFromSchool:
-          type: boolean
-      required:
-      - consultationWithCustodianRecommended
-      - meetingBetweenYouthHealthServicesAndSchoolManagementRecommended
-      - referredToFurtherConsultationFromSchool
-    DataOrigin:
-      type: string
-      description: "A list of possible origins of Persons and Facility in the Central\
-        \ Files. EDIT will only be set automatically on changes. EXTERNAL is for entries\
-        \ that come, e.g., from the citizen portal. IMPORT is reserved for automatic\
-        \ imports. MANUAL shall be set for every creation or connection done by an\
-        \ employee."
-      enum:
-      - MANUAL
-      - EXTERNAL
-      - IMPORT
-      - EDIT
-    DayOfWeek:
-      type: string
-      enum:
-      - MONDAY
-      - TUESDAY
-      - WEDNESDAY
-      - THURSDAY
-      - FRIDAY
-      - SATURDAY
-      - SUNDAY
-    DaycareAndSchoolInfo:
-      type: object
-      properties:
-        daycareName:
-          type: string
-        inDaycareSince:
-          type: string
-          format: date
-        schoolName:
-          type: string
-        wasInDaycare:
-          type: boolean
-    DecibelValue:
-      type: string
-      description: Decibel value that was audible for the respective ear.
-      enum:
-      - "20"
-      - "30"
-      - "40"
-      - "50"
-      - "60"
-      example: "{\"250\":\"null\",\"500\":\"null\",\"1000\":\"30\",\"2000\":\"40\"\
-        ,\"4000\":\"50\",\"6000\":\"60\",\"8000\":\"60\"}"
-    Decision:
-      type: string
-      enum:
-      - GRANTED
-      - DENIED
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    DeleteDownloadPackagesRequest:
-      type: object
-      properties:
-        downloadIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - downloadIds
-    DeleteProcedureRequest:
-      type: object
-      properties:
-        version:
-          type: integer
-          format: int64
-      required:
-      - version
-    DetailedFacility:
-      type: object
-      properties:
-        facilityFileState:
-          $ref: "#/components/schemas/GetFacilityFileStateResponse"
-        facilityType:
-          $ref: "#/components/schemas/FacilityType"
-      required:
-      - facilityFileState
-      - facilityType
-    DetailedPerson:
-      type: object
-      properties:
-        person:
-          $ref: "#/components/schemas/GetPersonFileStateResponse"
-        personType:
-          $ref: "#/components/schemas/PersonType"
-      required:
-      - person
-      - personType
-    DetailedTask:
-      type: object
-      properties:
-        assignedByName:
-          type: string
-        assigneeName:
-          type: string
-        task:
-          $ref: "#/components/schemas/Task"
-      required:
-      - task
-    DevelopmentInfo:
-      type: object
-      properties:
-        birthWeight:
-          type: integer
-          format: int32
-        developmentConspicuities:
-          type: boolean
-        gestationalAge:
-          type: boolean
-        infancyConspicuities:
-          type: boolean
-    DevelopmentScreeningResult:
-      type: object
-      properties:
-        extraEffort:
-          type: boolean
-        handicap:
-          $ref: "#/components/schemas/Handicap"
-        measurements:
-          $ref: "#/components/schemas/Measurements"
-        physicalExamination:
-          $ref: "#/components/schemas/PhysicalExamination"
-        psychoSocialRisk:
-          $ref: "#/components/schemas/PsychoSocialRisk"
-        schoolFeedback:
-          $ref: "#/components/schemas/SchoolFeedback"
-        schoolRecommendation:
-          $ref: "#/components/schemas/SchoolRecommendation"
-        socioEducationalPerformance:
-          $ref: "#/components/schemas/SocioEducationalPerformance"
-        version:
-          type: integer
-          format: int64
-      required:
-      - handicap
-      - measurements
-      - physicalExamination
-      - psychoSocialRisk
-      - socioEducationalPerformance
-      - version
-    DisabilityType:
-      type: string
-      description: "Type of the disability. This field can be used to indicate whether\
-        \ the disability is physical, mental, emotional or has multiple manifestations."
-      enum:
-      - PHYSICAL
-      - MENTAL
-      - EMOTIONAL
-      - MULTIPLE
-    DoctorLetterValue:
-      type: string
-      description: The child's family doctor comments on the findings of the health
-        department regarding the examination. Only relevant if examinationResultValue
-        == DOCTOR_LETTER.
-      enum:
-      - NO_REPLY
-      - CONFIRMED
-      - PARTIALLY_CONFIRMED
-      - NOT_CONFIRMED
-      example: CONFIRMED
-    DomesticAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          addressAddition:
-            type: string
-            description: A descriptive addition to the address.
-            example: 2.OG links
-            maxLength: 100
-            minLength: 1
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          houseNumber:
-            type: string
-            description: "The house number of the address, including extensions."
-            example: 1a
-            maxLength: 11
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          street:
-            type: string
-            description: "The name of the street of the address, without the house\
-              \ number."
-            example: Beispielweg
-            maxLength: 55
-            minLength: 1
-      description: A usual domestic address.
-      required:
-      - city
-      - country
-      - postalCode
-      - street
-    DownloadInvitationsBulkRequest:
-      type: object
-      properties:
-        procedureIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - procedureIds
-    EvaluationArticulationValue:
-      type: string
-      enum:
-      - CONSPICUOUS
-      - INCONSPICUOUS
-    EvaluationExamination:
-      type: object
-      properties:
-        doctorLetterValue:
-          $ref: "#/components/schemas/DoctorLetterValue"
-        examinationResultValue:
-          $ref: "#/components/schemas/SopessExaminationResultValue"
-    EvaluationExaminationValue:
-      type: string
-      enum:
-      - CONSPICUOUS
-      - BORDERLINE
-      - INCONSPICUOUS
-      - UNKNOWN
-    ExaminationResult:
-      type: object
-      properties:
-        doctorLetterValue:
-          $ref: "#/components/schemas/DoctorLetterValue"
-        examinationResultValue:
-          $ref: "#/components/schemas/ExaminationResultValue"
-    ExaminationResultValue:
-      type: string
-      description: Result of the examination.
-      enum:
-      - OK
-      - KNOWN
-      - DOCTOR_LETTER
-      - UNKNOWN
-      example: DOCTOR_LETTER
-    ExaminationWithDiagnosis:
-      type: object
-      description: "Diagnosis related to ear, nose, and throat."
-      properties:
-        examinationResult:
-          $ref: "#/components/schemas/ExaminationResult"
-        icd10Codes:
-          type: array
-          description: List of ICD-10 codes to document the examination result.
-          example:
-          - A00
-          - C00
-          items:
-            type: string
-            description: List of ICD-10 codes to document the examination result.
-            example: "[\"A00\",\"C00\"]"
-      required:
-      - examinationResult
-    ExportArchivingRelevantProceduresRequest:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-          uniqueItems: true
-      required:
-      - procedures
-    EyeExaminationResult:
-      type: object
-      properties:
-        amblyopia:
-          type: boolean
-          description: |-
-            Can be set to true if doctorLetterValue of the eyeExamination is CONFIRMED OR PARTIALLY_CONFIRMED.
-             If true, the doctor determined an amblyopia during the examination.
-        astigmatism:
-          type: boolean
-          description: |-
-            Can be set to true if doctorLetterValue of the eyeExamination is CONFIRMED OR PARTIALLY_CONFIRMED.
-             If true, the doctor determined astigmatism during the examination.
-        colorVisionDisorder:
-          type: boolean
-          description: |-
-            Can be set to true if doctorLetterValue of the eyeExamination is CONFIRMED OR PARTIALLY_CONFIRMED.
-             If true, the doctor determined color vision disorder during the examination.
-        eyeExamination:
-          $ref: "#/components/schemas/ExaminationResult"
-        hyperopia:
-          type: boolean
-          description: |-
-            Can be set to true if doctorLetterValue of the eyeExamination is CONFIRMED OR PARTIALLY_CONFIRMED.
-             If true, the doctor determined hyperopia during the examination.
-        ishiharaExamination:
-          $ref: "#/components/schemas/ExaminationResult"
-        langExamination:
-          $ref: "#/components/schemas/ExaminationResult"
-        leftEye:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/PercentageValue"
-          description: "Examination results for the left eye. Expected keys: EyeExaminationType\
-            \ values"
-          example:
-            DISTANCE: PERCENTAGE_50
-            DISTANCE_PLUS_15DPT: PERCENTAGE_70
-            DISTANCE_WITH_GLASSES: PERCENTAGE_100
-        myopia:
-          type: boolean
-          description: |-
-            Can be set to true if doctorLetterValue of the eyeExamination is CONFIRMED OR PARTIALLY_CONFIRMED.
-             If true, the doctor determined myopia during the examination.
-        note:
-          type: string
-        otherDiagnosis:
-          type: boolean
-          description: |-
-            Can be set to true if doctorLetterValue of the eyeExamination is CONFIRMED OR PARTIALLY_CONFIRMED.
-             If true, the doctor determined another diagnosis during the examination.
-        rightEye:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/PercentageValue"
-          description: "Examination results for the right eye. Expected keys: EyeExaminationType\
-            \ values"
-          example:
-            DISTANCE: PERCENTAGE_50
-            DISTANCE_PLUS_15DPT: PERCENTAGE_70
-            DISTANCE_WITH_GLASSES: PERCENTAGE_100
-        strabismus:
-          type: boolean
-          description: |-
-            Can be set to true if doctorLetterValue of the eyeExamination is CONFIRMED OR PARTIALLY_CONFIRMED.
-             If true, the doctor determined strabismus during the examination.
-        version:
-          type: integer
-          format: int64
-          description: "Version of the entity. Each time the entity is changed, it\
-            \ is incremented by one."
-      required:
-      - amblyopia
-      - astigmatism
-      - colorVisionDisorder
-      - eyeExamination
-      - hyperopia
-      - ishiharaExamination
-      - langExamination
-      - leftEye
-      - myopia
-      - otherDiagnosis
-      - rightEye
-      - strabismus
-      - version
-    EyeExaminationType:
-      type: string
-      description: Different conditions to which the child's vision is examined.
-      enum:
-      - DISTANCE
-      - DISTANCE_PLUS_15DPT
-      - DISTANCE_WITH_GLASSES
-    FacilityContactPerson:
-      type: object
-      properties:
-        emailAddress:
-          type: string
-          description: The email addresses of the Contact Person.
-          example: mail1@address.de
-          maxLength: 254
-          minLength: 6
-        firstName:
-          type: string
-          description: The given name(s) of the Contact Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: The last name of the Contact Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        phoneNumber:
-          type: string
-          description: The phone number of the Contact Person.
-          example: "+491234567890"
-          maxLength: 23
-          minLength: 1
-        role:
-          type: string
-          description: The role of the Contact Person in the Facility.
-          example: CEO
-          maxLength: 255
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of the Contact Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - lastName
-    FacilityType:
-      type: string
-      enum:
-      - SCHOOL
-      - INSPECTION
-      - DAYCARE
-      - HOSPITAL
-      - MEDICAL_PRACTICE
-      - REFUGEE_ACCOMMODATION
-      - OTHER
-    FamilyHistoryInfo:
-      type: object
-      properties:
-        chronicIllnessOrDisabilityInFamily:
-          type: string
-        spectaclesInFamily:
-          type: boolean
-    FamilyLanguageValue:
-      type: string
-      enum:
-      - GERMAN
-      - TURKISH
-      - KURDISH
-      - RUSSIAN
-      - POLISH
-      - ARABIC
-      - FARSI_DARI
-      - SERBO_CROATIAN
-      - ROMAN
-      - BULGARIAN
-      - PASHTU
-      - TIGRINIA
-      - BERBERIAN
-      - AMHARIAN
-      - ARAMEAN
-      - ITALIAN
-      - SPANISH
-      - GREEK
-      - PORTUGUESE
-      - ENGLISH
-      - FRENCH
-      - URDU
-      - OTHER_EUROPEAN_LANGUAGES
-      - OTHER_ASIAN_LANGUAGES
-      - OTHER_AFRICAN_LANGUAGES
-      - OTHER_LANGUAGES
-      - UNKNOWN
-    FileMetaData:
-      type: object
-      properties:
-        description:
-          type: string
-    FileType:
-      type: string
-      enum:
-      - JPEG
-      - PNG
-      - PDF
-      - EML
-    GdprDownloadPackageInfo:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-      required:
-      - id
-    GdprFacility:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          dataTransmitterPseudonymId:
-            type: string
-            description: The 'DatenübermittlerPseudonymId' of the MUK user
-            example: du-986b2b54ab89cf4ed674ad8c3126b966b54d4872
-          emailAddress:
-            type: string
-            description: The email addresses of the Facility.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          name:
-            type: string
-            description: The name of the Facility.
-            example: 123 Example Facility
-            maxLength: 300
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Facility.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 1
-      required:
-      - address
-      - name
-    GdprIdentificationData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    GdprPerson:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          bpk2:
-            type: string
-            description: The bpk2 of the BundId user
-            example: VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0
-          dateOfBirth:
-            type: string
-            format: date
-            description: The date of birth of the Person.
-            example: 2000-01-01
-          emailAddress:
-            type: string
-            description: The email addresses of the Person.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          firstName:
-            type: string
-            description: The given name(s) of the Person.
-            example: John
-            maxLength: 80
-            minLength: 1
-          lastName:
-            type: string
-            description: The last name of the Person.
-            example: Doe
-            maxLength: 120
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Person.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 0
-          salutation:
-            $ref: "#/components/schemas/Salutation"
-          title:
-            type: string
-            description: The academic title of the Person.
-            example: Prof. Dr.
-            maxLength: 119
-            minLength: 1
-      required:
-      - address
-      - dateOfBirth
-      - firstName
-      - lastName
-    GdprProcedureType:
-      type: string
-      description: A list of types of GDPR procedures.
-      enum:
-      - RIGHT_OF_ACCESS
-      - RIGHT_TO_ERASURE
-    GdprValidationTask:
-      type: object
-      properties:
-        dueDate:
-          type: string
-          format: date
-        gdprProcedureId:
-          type: string
-          format: uuid
-        identificationData:
-          oneOf:
-          - $ref: "#/components/schemas/GdprFacility"
-          - $ref: "#/components/schemas/GdprPerson"
-        status:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - dueDate
-      - gdprProcedureId
-      - identificationData
-      - status
-      - type
-    GdprValidationTaskSortKey:
-      type: string
-      enum:
-      - CREATED_AT
-    GdprValidationTaskStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    Gender:
-      type: string
-      description: The list of genders as specified in the German Personenstandsgesetz.
-      enum:
-      - NOT_SPECIFIED
-      - DIVERSE
-      - FEMALE
-      - MALE
-    GenericFileReference:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFileReference"
-      - type: object
-        properties:
-          '@type':
-            type: string
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - deletable
-      - deleted
-      - fileId
-    GermanKnowledgeValue:
-      type: string
-      enum:
-      - NO_GERMAN
-      - BAD
-      - FLUID_WITH_MAJOR_ERRORS
-      - FLUID_WITH_MINOR_ERRORS
-      - FAULTLESS
-      - UNKNOWN
-    GetAllValidationTasksResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/GdprValidationTask"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          minimum: 0
-      required:
-      - elements
-      - totalNumberOfElements
-    GetAppointmentBlock:
-      type: object
-      description: A planned appointment block. Appointment blocks offer a set of
-        bookable appointments at different times within the timeframe of the appointment
-        block.
-      properties:
-        end:
-          type: string
-          format: date-time
-          description: Time at which the appointment block ends.
-          example: 2016-01-01T01:45:00.123456+01:00
-        id:
-          type: string
-          format: uuid
-          description: Id of the AppointmentBlock.
-          example: a765534d-760a-417d-8639-5e2fd59246e2
-        numberOfBookedAppointments:
-          type: integer
-          format: int64
-          minimum: 0
-        numberOfFreeAppointments:
-          type: integer
-          format: int64
-          minimum: 0
-        start:
-          type: string
-          format: date-time
-          description: Time at which the appointment block starts.
-          example: 2016-01-01T01:00:00.123456+01:00
-      required:
-      - end
-      - id
-      - numberOfBookedAppointments
-      - numberOfFreeAppointments
-      - start
-    GetAppointmentBlockGroup:
-      type: object
-      properties:
-        appointmentBlocks:
-          type: array
-          items:
-            $ref: "#/components/schemas/GetAppointmentBlock"
-        id:
-          type: string
-          format: uuid
-          description: Id of the AppointmentBlockGroup.
-          example: a765534d-760a-417d-8639-5e2fd59246e2
-        location:
-          $ref: "#/components/schemas/AppointmentLocation"
-        parallelExaminations:
-          type: integer
-          format: int32
-          maximum: 10
-          minimum: 1
-        type:
-          $ref: "#/components/schemas/AppointmentType"
-      required:
-      - appointmentBlocks
-      - id
-      - parallelExaminations
-      - type
-    GetAppointmentBlockGroupsResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/GetAppointmentBlockGroup"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-      required:
-      - elements
-      - totalNumberOfElements
-    GetAppointmentTypesResponse:
-      type: object
-      properties:
-        appointmentTypeConfigDtos:
-          type: array
-          items:
-            $ref: "#/components/schemas/AppointmentTypeConfig"
-      required:
-      - appointmentTypeConfigDtos
-    GetArchivableProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetArchivableProceduresSortBy:
-      type: string
-      default: CLOSED_AT
-      enum:
-      - CLOSED_AT
-      - PROCEDURE_TYPE
-    GetArchivableProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetArchivingConfigurationResponse:
-      type: object
-      properties:
-        archivingDetails:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/ArchivingDetails"
-        gracePeriodMonths:
-          type: integer
-          format: int32
-      required:
-      - archivingDetails
-      - gracePeriodMonths
-    GetCitizenFreeAppointmentsResponse:
-      type: object
-      description: Fetch all free appointments in the configured period.
-      properties:
-        freeAppointments:
-          type: array
-          items:
-            $ref: "#/components/schemas/Appointment"
-      required:
-      - freeAppointments
-    GetCitizenProcedureResponse:
-      type: object
-      properties:
-        allowCitizenAnamnesis:
-          type: boolean
-        appointmentAddress:
-          $ref: "#/components/schemas/AppointmentAddress"
-        appointmentChangesByCitizenLeft:
-          type: integer
-          format: int32
-          maximum: 2
-          minimum: 0
-        appointmentEnd:
-          type: string
-          format: date-time
-        appointmentStart:
-          type: string
-          format: date-time
-        child:
-          $ref: "#/components/schemas/CitizenChild"
-        isClosedProcedure:
-          type: boolean
-      required:
-      - allowCitizenAnamnesis
-      - appointmentAddress
-      - appointmentChangesByCitizenLeft
-      - appointmentEnd
-      - appointmentStart
-      - child
-      - isClosedProcedure
-    GetClosedProceduresResponse:
-      type: object
-      properties:
-        procedureIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - procedureIds
-    GetCountryCodesResponse:
-      type: object
-      description: "Possible countries and their group. Expected keys: SchoolEntryCountryCode"
-      properties:
-        countryCodes:
-          type: object
-          additionalProperties:
-            type: integer
-            format: int32
-      required:
-      - countryCodes
-    GetDetailedProcedureResponse:
-      type: object
-      properties:
-        facilities:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedFacility"
-        persons:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedPerson"
-        procedure:
-          $ref: "#/components/schemas/Procedure"
-        tasks:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedTask"
-      required:
-      - facilities
-      - persons
-      - procedure
-      - tasks
-    GetDevelopmentScreeningResult:
-      type: object
-      properties:
-        extraEffort:
-          type: boolean
-          description: "If true, then the examination of the child represented an\
-            \ additional effort."
-        handicap:
-          $ref: "#/components/schemas/Handicap"
-        measurements:
-          $ref: "#/components/schemas/Measurements"
-        percentiles:
-          $ref: "#/components/schemas/Percentiles"
-        physicalExamination:
-          $ref: "#/components/schemas/PhysicalExamination"
-        psychoSocialRisk:
-          $ref: "#/components/schemas/PsychoSocialRisk"
-        schoolFeedback:
-          $ref: "#/components/schemas/SchoolFeedback"
-        schoolRecommendation:
-          $ref: "#/components/schemas/SchoolRecommendation"
-        socioEducationalPerformance:
-          $ref: "#/components/schemas/SocioEducationalPerformance"
-        version:
-          type: integer
-          format: int64
-          description: "Version of the entity. Each time the entity is changed, it\
-            \ is incremented by one."
-      required:
-      - handicap
-      - measurements
-      - percentiles
-      - physicalExamination
-      - psychoSocialRisk
-      - socioEducationalPerformance
-      - version
-    GetFacilityFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        id:
-          type: string
-          format: uuid
-          description: Id of the Facility.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referenceFacility
-            it is connected to.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-      required:
-      - contactPersons
-      - dataOrigin
-      - emailAddresses
-      - id
-      - name
-      - phoneNumbers
-      - referenceVersion
-    GetFreeAppointmentsResponse:
-      type: object
-      properties:
-        appointments:
-          type: array
-          items:
-            $ref: "#/components/schemas/Appointment"
-      required:
-      - appointments
-    GetGdprDownloadPackagesInfoResponse:
-      type: object
-      properties:
-        downloadPackages:
-          type: array
-          items:
-            $ref: "#/components/schemas/GdprDownloadPackageInfo"
-      required:
-      - downloadPackages
-    GetGdprNotificationBannerResponse:
-      type: object
-      properties:
-        earliestDueDate:
-          type: string
-          format: date
-        openValidationTasksCount:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - openValidationTasksCount
-    GetGdprValidationTaskDetailsResponse:
-      type: object
-      properties:
-        proceduresWithStatus:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessProcedureWithInclusionStatus"
-        validationTask:
-          $ref: "#/components/schemas/GdprValidationTask"
-      required:
-      - proceduresWithStatus
-      - validationTask
-    GetGdprValidationTaskResponse:
-      type: object
-      properties:
-        status:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-      required:
-      - status
-    GetInboxProcedureResponse:
-      type: object
-      properties:
-        inboxProcedure:
-          $ref: "#/components/schemas/InboxProcedure"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - inboxProcedure
-      - resolvedUsers
-    GetInboxProceduresResponse:
-      type: object
-      properties:
-        inboxProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/InboxProcedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - inboxProcedures
-      - totalElements
-      - totalPages
-    GetInboxProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - CREATED_AT
-    GetInboxProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetManualProgressEntryHistoryResponse:
-      type: object
-      properties:
-        manualProgressEntryHistory:
-          type: array
-          items:
-            $ref: "#/components/schemas/ManualProgressEntryHistory"
-    GetMetaDataHistoryResponse:
-      type: object
-      properties:
-        metaDataHistory:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ImageMetaDataHistory"
-            - $ref: "#/components/schemas/MailMetaDataHistory"
-            - $ref: "#/components/schemas/PdfMetaDataHistory"
-    GetOpeningHoursResponse:
-      type: object
-      properties:
-        de:
-          type: array
-          items:
-            type: string
-        en:
-          type: array
-          items:
-            type: string
-      required:
-      - de
-      - en
-    GetPersonFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        dateOfBirth:
-          type: string
-          format: date
-          description: The date of birth of the Person.
-          example: 2000-01-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Person.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: The given name(s) of the Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        id:
-          type: string
-          format: uuid
-          description: Id of the Person.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        lastName:
-          type: string
-          description: The last name of the Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          description: The last name at birth of the Person.
-          example: Smith
-          maxLength: 40
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referencePerson
-            it is connected to. Set to 'null' if unchecked.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Person.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          description: The place of birth (without country) of the Person.
-          example: Berlin
-          maxLength: 50
-          minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - dataOrigin
-      - dateOfBirth
-      - emailAddresses
-      - firstName
-      - gender
-      - id
-      - lastName
-      - phoneNumbers
-      - referenceVersion
-      - salutation
-    GetProcedureApprovalRequestsResponse:
-      type: object
-      properties:
-        approvalRequests:
-          type: array
-          items:
-            $ref: "#/components/schemas/ApprovalRequest"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - approvalRequests
-      - resolvedUsers
-    GetProcedureFileDetailsResponse:
-      type: object
-      properties:
-        fileDetails:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProgressEntryReferenceFilePair"
-        procedureId:
-          type: string
-          format: uuid
-      required:
-      - fileDetails
-      - procedureId
-    GetProcedureIdsRequest:
-      type: object
-      properties:
-        procedureReferences:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 200
-          minItems: 1
-      required:
-      - procedureReferences
-    GetProcedureIdsResponse:
-      type: object
-      properties:
-        referenceToId:
-          type: object
-          additionalProperties:
-            type: string
-            format: uuid
-      required:
-      - referenceToId
-    GetProcedureMetricsResponse:
-      type: object
-      properties:
-        procedureMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureMetric"
-      required:
-      - procedureMetrics
-    GetProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - MODIFIED_AT
-      - CREATED_AT
-    GetProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetProceduresWithDetailsResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureDetails"
-      required:
-      - procedures
-    GetProgressEntriesResponse:
-      type: object
-      properties:
-        progressEntries:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ManualProgressEntry"
-            - $ref: "#/components/schemas/ProcessedInboxProgressEntry"
-            - $ref: "#/components/schemas/SystemProgressEntry"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - progressEntries
-      - totalElements
-      - totalPages
-    GetProgressEntryResponse:
-      type: object
-      properties:
-        progressEntry:
-          oneOf:
-          - $ref: "#/components/schemas/ManualProgressEntry"
-          - $ref: "#/components/schemas/ProcessedInboxProgressEntry"
-          - $ref: "#/components/schemas/SystemProgressEntry"
-        relatedKeyDocumentProgressEntries:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ManualProgressEntry"
-            - $ref: "#/components/schemas/SystemProgressEntry"
-      required:
-      - progressEntry
-      - relatedKeyDocumentProgressEntries
-    GetRecentProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-      required:
-      - procedures
-    GetRelevantArchivableProceduresResponse:
-      type: object
-      properties:
-        fileSizeBytes:
-          type: integer
-          format: int32
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - fileSizeBytes
-      - procedures
-      - totalElements
-      - totalPages
-    GetRelevantArchivableProceduresSortBy:
-      type: string
-      default: CLOSED_AT
-      enum:
-      - CLOSED_AT
-      - EXPORTED_AT
-    GetRelevantArchivableProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetSchoolEntryConfigResponse:
-      type: object
-      properties:
-        isDirectProcedureTypeAssignmentOnImport:
-          type: boolean
-        locationSelectionMode:
-          $ref: "#/components/schemas/LocationSelectionMode"
-      required:
-      - isDirectProcedureTypeAssignmentOnImport
-      - locationSelectionMode
-    GetSchoolEntryFeatureTogglesResponse:
-      type: object
-      properties:
-        disabledOldFeatures:
-          type: array
-          items:
-            $ref: "#/components/schemas/SchoolEntryFeature"
-          uniqueItems: true
-        enabledNewFeatures:
-          type: array
-          items:
-            $ref: "#/components/schemas/SchoolEntryFeature"
-          uniqueItems: true
-      required:
-      - disabledOldFeatures
-      - enabledNewFeatures
-    GetSchoolEntryLabelsResponse:
-      type: object
-      properties:
-        labels:
-          type: array
-          items:
-            $ref: "#/components/schemas/SchoolEntryLabel"
-      required:
-      - labels
-    GetSchoolEntryProceduresResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/SchoolEntryProcedure"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-      required:
-      - elements
-      - totalNumberOfElements
-    GetTaskByUserResponse:
-      type: object
-      properties:
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-        tasksByUser:
-          type: object
-          additionalProperties:
-            type: array
-            items:
-              $ref: "#/components/schemas/Task"
-      required:
-      - resolvedUsers
-      - tasksByUser
-    GetTaskMetricsResponse:
-      type: object
-      properties:
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedProcedureCount:
-          type: integer
-          format: int64
-        fastestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        slowestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        taskMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskMetric"
-      required:
-      - businessModule
-      - closedProcedureCount
-      - fastestProcedures
-      - procedureType
-      - slowestProcedures
-      - taskMetrics
-    GetTasksSortBy:
-      type: string
-      enum:
-      - PRIORITY
-      - CREATED_AT
-      - MODIFIED_AT
-    GetTasksSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetWaitingRoomProceduresResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/WaitingRoomProcedure"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-      required:
-      - elements
-      - totalNumberOfElements
-    HandednessValue:
-      type: string
-      enum:
-      - RIGHT
-      - LEFT
-      - UNCERTAIN
-      - UNKNOWN
-    Handicap:
-      type: object
-      description: Results for the assessment of the handicap.
-      properties:
-        chronicDisease:
-          $ref: "#/components/schemas/HandicapWithDiagnosis"
-        disability:
-          $ref: "#/components/schemas/HandicapWithDiagnosis"
-        disabilityType:
-          $ref: "#/components/schemas/DisabilityType"
-        note:
-          type: string
-      required:
-      - chronicDisease
-      - disability
-    HandicapWithDiagnosis:
-      type: object
-      description: Diagnosis related to disability.
-      properties:
-        icd10Codes:
-          type: array
-          description: List of ICD-10 codes to document the handicap.
-          example:
-          - J00
-          - K00
-          items:
-            type: string
-            description: List of ICD-10 codes to document the handicap.
-            example: "[\"J00\",\"K00\"]"
-        result:
-          type: boolean
-          description: "If the value is true, there is a handicap."
-    HearingTestResult:
-      type: object
-      properties:
-        examinationResult:
-          $ref: "#/components/schemas/ExaminationResult"
-        leftEar:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/DecibelValue"
-          description: "Examination results of the left ear. Expected keys: HertzValue\
-            \ values"
-          example:
-            "1000": "40"
-            "2000": "50"
-            "250": "20"
-            "4000": "60"
-            "500": "30"
-            "6000": null
-            "8000": null
-        note:
-          type: string
-          description: Notes recorded for the hearing test.
-        rightEar:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/DecibelValue"
-          description: "Examination results of the right ear. Expected keys: HertzValue\
-            \ values"
-          example:
-            "1000": "30"
-            "2000": "40"
-            "250": "null"
-            "4000": "50"
-            "500": "null"
-            "6000": "60"
-            "8000": "60"
-        version:
-          type: integer
-          format: int64
-          description: "Version of the entity. Each time the entity is changed, it\
-            \ is incremented by one."
-      required:
-      - examinationResult
-      - leftEar
-      - rightEar
-      - version
-    HertzValue:
-      type: string
-      description: Sound frequency at which the hearing test is carried out.
-      enum:
-      - "250"
-      - "500"
-      - "1000"
-      - "2000"
-      - "4000"
-      - "6000"
-      - "8000"
-      example: "500"
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    IllnessAndAccidentInfo:
-      type: object
-      properties:
-        allergies:
-          type: array
-          items:
-            type: string
-        hospitalizationsOrOperations:
-          type: boolean
-        regularMedication:
-          type: string
-        severeIllnesses:
-          type: boolean
-        underMedicalTreatmentFor:
-          type: string
-    Image:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/ImageMetaData"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    ImageMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          createdDate:
-            type: string
-            format: date-time
-    ImageMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          imageMetaData:
-            $ref: "#/components/schemas/ImageMetaData"
-      required:
-      - changedAt
-    ImportStatistics:
-      type: object
-      properties:
-        created:
-          type: integer
-          format: int32
-          minimum: 0
-        duplicated:
-          type: integer
-          format: int32
-          minimum: 0
-        failed:
-          type: integer
-          format: int32
-          minimum: 0
-        mergeFailed:
-          type: integer
-          format: int32
-          minimum: 0
-        merged:
-          type: integer
-          format: int32
-          minimum: 0
-        total:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - created
-      - duplicated
-      - failed
-      - mergeFailed
-      - merged
-      - total
-    InboxProcedure:
-      type: object
-      properties:
-        closedAt:
-          type: string
-          format: date-time
-        contactDetails:
-          $ref: "#/components/schemas/ContactDetails"
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-          format: uuid
-        inboxProcedureId:
-          type: string
-          format: uuid
-        inboxProcedureStatus:
-          $ref: "#/components/schemas/InboxProcedureStatus"
-        inboxProcedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        inboxProgressEntry:
-          $ref: "#/components/schemas/InboxProgressEntry"
-      required:
-      - contactDetails
-      - createdAt
-      - createdBy
-      - inboxProcedureId
-      - inboxProcedureStatus
-      - inboxProgressEntry
-    InboxProcedureAddress:
-      type: object
-      properties:
-        addressAddition:
-          type: string
-        city:
-          type: string
-        country:
-          type: string
-        houseNumber:
-          type: string
-        postalCode:
-          type: string
-        postboxNumber:
-          type: integer
-          format: int32
-        street:
-          type: string
-    InboxProcedureStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    InboxProgressEntry:
-      type: object
-      properties:
-        fileReference:
-          oneOf:
-          - $ref: "#/components/schemas/GenericFileReference"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        inboxProgressEntryId:
-          type: string
-          format: uuid
-        inboxProgressEntryType:
-          $ref: "#/components/schemas/InboxProgressEntryType"
-        messageText:
-          type: string
-        subject:
-          type: string
-      required:
-      - inboxProgressEntryId
-      - inboxProgressEntryType
-    InboxProgressEntryType:
-      type: string
-      enum:
-      - LETTER
-      - PHONE_CALL
-      - EMAIL
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    InterestsAndSportsInfo:
-      type: object
-      properties:
-        canSwim:
-          type: boolean
-        clubSport:
-          type: string
-        hasSeahorseBadge:
-          type: boolean
-        otherInterests:
-          type: string
-    KeyDocumentAwareProgressEntry:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        keyDocumentType:
-          type: string
-        keyDocumentVersion:
-          type: integer
-          format: int32
-      required:
-      - '@type'
-    KnowledgeThinkingExamination:
-      type: object
-      properties:
-        countingPoints:
-          type: integer
-          format: int32
-        evaluation:
-          $ref: "#/components/schemas/EvaluationExamination"
-        quantityKnowledgePoints:
-          type: integer
-          format: int32
-      required:
-      - evaluation
-    Language:
-      type: object
-      properties:
-        familyLanguage:
-          $ref: "#/components/schemas/FamilyLanguageValue"
-        germanKnowledgeChild:
-          $ref: "#/components/schemas/GermanKnowledgeValue"
-        germanKnowledgePrimaryCarer:
-          $ref: "#/components/schemas/LanguageKnowledgeValue"
-        primaryLanguage:
-          $ref: "#/components/schemas/PrimaryLanguageValue"
-    LanguageKnowledgeValue:
-      type: string
-      enum:
-      - RUDIMENTARY
-      - FAULTY
-      - FAULTLESS
-      - UNKNOWN
-    LocationSelectionMode:
-      type: string
-      enum:
-      - NONE
-      - HEALTH_DEPARTMENT
-      - SCHOOL
-    Mail:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/MailMetaData"
-          removedInvalidAttachments:
-            type: integer
-            format: int32
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-      - removedInvalidAttachments
-    MailMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          mailFrom:
-            type: string
-          mailTo:
-            type: string
-          messageText:
-            type: string
-          sentDate:
-            type: string
-            format: date-time
-          subject:
-            type: string
-      required:
-      - mailFrom
-      - mailTo
-      - messageText
-      - sentDate
-      - subject
-    MailMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          mailMetaData:
-            $ref: "#/components/schemas/MailMetaData"
-      required:
-      - changedAt
-    ManualProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          createdByUserFirstName:
-            type: string
-          createdByUserLastName:
-            type: string
-          keyDocumentType:
-            type: string
-          keyDocumentVersion:
-            type: integer
-            format: int32
-          locked:
-            type: boolean
-          manualProgressEntryType:
-            $ref: "#/components/schemas/ManualProgressEntryType"
-          note:
-            type: string
-      - $ref: "#/components/schemas/ApprovalRequestEntity"
-      - $ref: "#/components/schemas/KeyDocumentAwareProgressEntry"
-      required:
-      - createdAt
-      - createdBy
-      - locked
-      - manualProgressEntryType
-      - modifiedAt
-      - progressEntryId
-    ManualProgressEntryHistory:
-      type: object
-      properties:
-        changedAt:
-          type: string
-          format: date-time
-        manualProgressEntry:
-          $ref: "#/components/schemas/ManualProgressEntry"
-      required:
-      - changedAt
-    ManualProgressEntryType:
-      type: string
-      enum:
-      - LETTER
-      - PHONE_CALL
-      - NOTE
-      - EMAIL
-      - IMAGE
-      - DOCUMENT
-    Measurements:
-      type: object
-      description: Body measurement results of the examination.
-      properties:
-        diastole:
-          type: integer
-          format: int32
-          description: Diastolic blood pressure of the child in mmHg.
-          minimum: 0
-        height:
-          type: number
-          format: double
-          description: Height of the child in m.
-        systole:
-          type: integer
-          format: int32
-          description: Systolic blood pressure of the child in mmHg.
-          minimum: 0
-        weight:
-          type: number
-          format: double
-          description: Weight of the child in kg.
-    MetaData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        description:
-          type: string
-      required:
-      - '@type'
-    MetaDataHistory:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        changedAt:
-          type: string
-          format: date-time
-      required:
-      - '@type'
-      - changedAt
-    MigrationBackground:
-      type: object
-      properties:
-        countryOfBirthChild:
-          $ref: "#/components/schemas/SchoolEntryCountryCode"
-        countryOfBirthFirstParent:
-          $ref: "#/components/schemas/SchoolEntryCountryCode"
-        countryOfBirthSecondParent:
-          $ref: "#/components/schemas/SchoolEntryCountryCode"
-        hasMigrationBackground:
-          type: boolean
-          description: "Boolean that indicates, if the child has migration background"
-        inGermanySince:
-          type: string
-          format: date
-          description: Date from which the child lives in Germany
-          example: 2000-01-01
-        nationalityChild:
-          $ref: "#/components/schemas/SchoolEntryCountryCode"
-        nationalityFirstParent:
-          $ref: "#/components/schemas/SchoolEntryCountryCode"
-        nationalitySecondParent:
-          $ref: "#/components/schemas/SchoolEntryCountryCode"
-    Operation:
-      type: string
-      enum:
-      - DELETE
-    OtherVaccination:
-      type: object
-      description: List of additional vaccinations.
-      properties:
-        count:
-          type: integer
-          format: int32
-          description: Number of vaccinations.
-          maximum: 8
-          minimum: 1
-        description:
-          type: string
-          description: Description/name of the additional vaccination.
-          example: COVID-19
-      required:
-      - count
-      - description
-    PatchManualProgressEntryRequest:
-      type: object
-      properties:
-        manualProgressEntryType:
-          $ref: "#/components/schemas/ManualProgressEntryType"
-        note:
-          type: string
-          nullable: true
-    Pdf:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/PdfMetaData"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    PdfMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          createdDate:
-            type: string
-            format: date-time
-    PdfMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          pdfMetaData:
-            $ref: "#/components/schemas/PdfMetaData"
-      required:
-      - changedAt
-    PercentageValue:
-      type: string
-      description: Percentage value of visibility
-      enum:
-      - PERCENTAGE_LT_15
-      - PERCENTAGE_15
-      - PERCENTAGE_30
-      - PERCENTAGE_50
-      - PERCENTAGE_70
-      - PERCENTAGE_100
-      example: "{\"DISTANCE\":\"PERCENTAGE_50\",\"DISTANCE_PLUS_15DPT\":\"PERCENTAGE_70\"\
-        ,\"DISTANCE_WITH_GLASSES\":\"PERCENTAGE_100\"}"
-    Percentiles:
-      type: object
-      description: Percentiles for the body measurement results.
-      properties:
-        bmi:
-          type: number
-          format: double
-          description: Calculated body mass index. This value is only returned if
-            the height and weight have been provided.
-          example: 13.79758136514893
-        bmiPercentile:
-          type: number
-          format: double
-          description: Percentile to the calculated body mass index.
-          example: 0.0837420790834949
-        heightPercentile:
-          type: number
-          format: double
-          description: Percentile to measured height.
-          example: 0.516235721530589
-        weightPercentile:
-          type: number
-          format: double
-          description: Percentile to measured weight.
-          example: 0.21338076008280304
-    PersonDetails:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dateOfBirth:
-          type: string
-          format: date
-          description: Date of birth of the person.
-          example: 2024-02-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          items:
-            type: string
-            maxLength: 254
-            minLength: 6
-        fileStateId:
-          type: string
-          format: uuid
-        fileStateOutdated:
-          type: boolean
-        firstName:
-          type: string
-          description: First name of the person.
-          example: Hermione
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: Last name of the person.
-          example: Granger
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          maxLength: 40
-          minLength: 1
-        phoneNumbers:
-          type: array
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          maxLength: 50
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          maxLength: 119
-          minLength: 1
-        version:
-          type: integer
-          format: int64
-      required:
-      - dateOfBirth
-      - emailAddresses
-      - fileStateId
-      - fileStateOutdated
-      - firstName
-      - gender
-      - lastName
-      - phoneNumbers
-      - salutation
-      - version
-    PersonType:
-      type: string
-      enum:
-      - PATIENT
-      - PARENT
-      - PROFESSIONAL
-    PhysicalExamination:
-      type: object
-      description: Physical examination results.
-      properties:
-        abdomen:
-          $ref: "#/components/schemas/ExaminationWithDiagnosis"
-        earNoseThroat:
-          $ref: "#/components/schemas/ExaminationWithDiagnosis"
-        metabolism:
-          $ref: "#/components/schemas/ExaminationWithDiagnosis"
-        musculatureSkeleton:
-          $ref: "#/components/schemas/ExaminationWithDiagnosis"
-        neurology:
-          $ref: "#/components/schemas/ExaminationWithDiagnosis"
-        note:
-          type: string
-          description: Additional notes for the physical examination.
-        nutritionalCondition:
-          $ref: "#/components/schemas/ExaminationWithDiagnosis"
-        respiratoryCardiovascular:
-          $ref: "#/components/schemas/ExaminationWithDiagnosis"
-        skin:
-          $ref: "#/components/schemas/ExaminationWithDiagnosis"
-      required:
-      - abdomen
-      - earNoseThroat
-      - metabolism
-      - musculatureSkeleton
-      - neurology
-      - nutritionalCondition
-      - respiratoryCardiovascular
-      - skin
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    PopulationRequest:
-      type: object
-      properties:
-        numberOfEntitiesToPopulate:
-          type: integer
-          format: int32
-      required:
-      - numberOfEntitiesToPopulate
-    PostboxAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          postbox:
-            type: string
-            description: The number (or name) of the postbox.
-            example: "123"
-            maxLength: 21
-            minLength: 1
-      description: An address which is a postbox.
-      required:
-      - city
-      - country
-      - postalCode
-      - postbox
-    PrimaryLanguageValue:
-      type: string
-      enum:
-      - GERMAN
-      - OTHER
-      - UNKNOWN
-    Procedure:
-      type: object
-      properties:
-        archivingRelevanceSettings:
-          $ref: "#/components/schemas/ArchivingRelevanceSettings"
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedAt:
-          type: string
-          format: date-time
-        createdAt:
-          type: string
-          format: date-time
-        exportedAt:
-          type: string
-          format: date-time
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        procedureStatus:
-          $ref: "#/components/schemas/ProcedureStatus"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-          pattern: "[a-zA-Z0-9.].+"
-      required:
-      - archivingRelevanceSettings
-      - businessModule
-      - createdAt
-      - modifiedAt
-      - procedureId
-      - procedureStatus
-      - procedureType
-      - summary
-    ProcedureDetails:
-      type: object
-      properties:
-        appointment:
-          $ref: "#/components/schemas/Appointment"
-        child:
-          $ref: "#/components/schemas/PersonDetails"
-        createdAt:
-          type: string
-          format: date-time
-        custodians:
-          type: array
-          items:
-            $ref: "#/components/schemas/PersonDetails"
-        deceased:
-          type: string
-          format: date
-        hasBeenClosed:
-          type: boolean
-        hasInformationBlock:
-          type: boolean
-        id:
-          type: string
-          format: uuid
-          description: Id of the Procedure.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        isDeceased:
-          type: boolean
-        isDeletable:
-          type: boolean
-        isEntryLevel:
-          type: boolean
-        isInvitationSent:
-          type: boolean
-        isPastProcedure:
-          type: boolean
-        labels:
-          type: array
-          items:
-            $ref: "#/components/schemas/SchoolEntryLabel"
-        location:
-          $ref: "#/components/schemas/AppointmentLocation"
-        modifiedAt:
-          type: string
-          format: date-time
-        school:
-          $ref: "#/components/schemas/School"
-        schoolInfoLetterCreatedAt:
-          type: string
-          format: date-time
-        schoolYear:
-          type: integer
-          format: int32
-          minimum: 1900
-        status:
-          $ref: "#/components/schemas/SchoolEntryStatusType"
-        type:
-          $ref: "#/components/schemas/SchoolEntryProcedureType"
-        version:
-          type: integer
-          format: int64
-        waitingRoom:
-          $ref: "#/components/schemas/WaitingRoom"
-      required:
-      - child
-      - createdAt
-      - custodians
-      - hasBeenClosed
-      - hasInformationBlock
-      - id
-      - isDeceased
-      - isDeletable
-      - isEntryLevel
-      - isInvitationSent
-      - isPastProcedure
-      - labels
-      - modifiedAt
-      - status
-      - type
-      - version
-      - waitingRoom
-    ProcedureMetric:
-      type: object
-      properties:
-        abortedCount:
-          type: integer
-          format: int64
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedCount:
-          type: integer
-          format: int64
-        inProgressCount:
-          type: integer
-          format: int64
-        openOrDraftCount:
-          type: integer
-          format: int64
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        totalCount:
-          type: integer
-          format: int64
-      required:
-      - abortedCount
-      - businessModule
-      - closedCount
-      - inProgressCount
-      - openOrDraftCount
-      - procedureType
-      - totalCount
-    ProcedureStatus:
-      type: string
-      enum:
-      - DRAFT
-      - OPEN
-      - IN_PROGRESS
-      - CLOSED
-      - ABORTED
-    ProcedureType:
-      type: string
-      enum:
-      - REGULAR_EXAMINATION
-      - CAN_CHILD
-      - ENTRY_LEVEL
-      - DRAFT_CITIZEN_OFFICE_IMPORT
-      - DRAFT_SCHOOL_IMPORT
-      - INSPECTION
-      - TM_VACCINATION_CONSULTATION
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY_ENTRY
-      - MEDICAL_REGISTRY_CITIZEN_DRAFT
-      - MEDICAL_REGISTRY_EMPLOYEE_DRAFT
-      - DENTAL_CHILD
-      - OFFICIAL_MEDICAL_SERVICE
-    ProcedureWithDuration:
-      type: object
-      properties:
-        createdAt:
-          type: string
-          format: date-time
-        duration:
-          type: string
-          description: A duration in ISO 8601
-        id:
-          type: string
-          format: uuid
-      required:
-      - createdAt
-      - id
-    ProcessedInboxProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          createdByUserFirstName:
-            type: string
-          createdByUserLastName:
-            type: string
-          inboxProcedureId:
-            type: string
-            format: uuid
-          inboxProgressEntryType:
-            $ref: "#/components/schemas/InboxProgressEntryType"
-          messageText:
-            type: string
-          subject:
-            type: string
-      required:
-      - createdAt
-      - createdBy
-      - inboxProcedureId
-      - inboxProgressEntryType
-      - modifiedAt
-      - progressEntryId
-    ProgressEntry:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        createdAt:
-          type: string
-          format: date-time
-        fileReference:
-          oneOf:
-          - $ref: "#/components/schemas/GenericFileReference"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        modifiedAt:
-          type: string
-          format: date-time
-        progressEntryId:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - createdAt
-      - modifiedAt
-      - progressEntryId
-    ProgressEntryClass:
-      type: string
-      enum:
-      - MANUAL_PROGRESS_ENTRY
-      - SYSTEM_PROGRESS_ENTRY
-      - PROCESSED_INBOX_PROGRESS_ENTRY
-    ProgressEntryReferenceFilePair:
-      type: object
-      properties:
-        file:
-          oneOf:
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        progressEntryId:
-          type: string
-          format: uuid
-      required:
-      - file
-      - progressEntryId
-    ProgressEntrySortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - CREATED_AT
-      - MODIFIED_AT
-    ProgressEntrySortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    PromotionBeforeSchoolEntry:
-      type: object
-      properties:
-        earlySupport:
-          type: boolean
-          description: "Boolean that indicates, if the child participated in early\
-            \ support."
-        ergotherapy:
-          type: boolean
-          description: "Boolean that indicates, if the child participated in occupational\
-            \ therapy."
-        integrationPlace:
-          type: boolean
-          description: "Boolean that indicates, if the child has an integration place"
-        physiotherapy:
-          type: boolean
-          description: "Boolean that indicates, if the child participated in physio\
-            \ therapy."
-        speechTherapy:
-          type: boolean
-          description: "Boolean that indicates, if the child participated in speech\
-            \ therapy."
-    PromotionTherapyAndAidInfo:
-      type: object
-      properties:
-        additionalTherapies:
-          type: string
-        ergoTherapyEnd:
-          type: string
-          format: date
-        ergoTherapyStart:
-          type: string
-          format: date
-        hearingAid:
-          type: string
-        hearingImpairment:
-          type: boolean
-        physioTherapyEnd:
-          type: string
-          format: date
-        physioTherapyStart:
-          type: string
-          format: date
-        spectaclesSince:
-          type: string
-          format: date
-        speechImpairment:
-          type: boolean
-        speechTherapyEnd:
-          type: string
-          format: date
-        speechTherapyStart:
-          type: string
-          format: date
-        visionImpairment:
-          type: boolean
-        visionSchoolSince:
-          type: string
-          format: date
-    PsychoSocialRisk:
-      type: object
-      description: Assessment of the psychosocial risk.
-      properties:
-        family:
-          type: boolean
-          description: Indicates family-related issues.
-        migration:
-          type: boolean
-          description: Indicates migration-related issues.
-        nonCompliance:
-          type: boolean
-          description: Indicates non-compliance issues.
-        otherRisk:
-          type: boolean
-          description: Indicates other potential risks.
-        social:
-          type: boolean
-          description: Indicates social issues.
-    RemoveCustodianRequest:
-      type: object
-      properties:
-        procedureVersion:
-          type: integer
-          format: int64
-      required:
-      - procedureVersion
-    ReopenProcedureRequest:
-      type: object
-      properties:
-        version:
-          type: integer
-          format: int64
-      required:
-      - version
-    RequiredProcedureData:
-      type: string
-      enum:
-      - DETAILS
-      - HEARING_TEST
-      - EYE_EXAMINATION
-      - ANAMNESIS
-      - SOPESS_EXAMINATION
-      - DEVELOPMENT_SCREENING
-      - VACCINATION_STATUS
-    Salutation:
-      type: string
-      description: A list of categories for the salutation from which specific salutation
-        phrases can be derived. The choice of salutation is free for every citizen
-        and not dependent on gender.
-      enum:
-      - NOT_SPECIFIED
-      - NEUTRAL
-      - FEMALE
-      - MALE
-    School:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-      required:
-      - id
-      - name
-    SchoolEntryAppointmentBlockPopulationResult:
-      type: object
-      properties:
-        appointmentBlockGroups:
-          type: array
-          items:
-            $ref: "#/components/schemas/CreateAppointmentBlockGroupResponse"
-        count:
-          type: integer
-          format: int64
-      required:
-      - appointmentBlockGroups
-      - count
-    SchoolEntryCountryCode:
-      type: string
-      description: Country codes by alpha-3 code (ISO 3166)
-      enum:
-      - AFG
-      - EGY
-      - ALB
-      - ALG
-      - AND
-      - ANG
-      - AUB
-      - GNQ
-      - ARA
-      - ARG
-      - ARM
-      - ASE
-      - ASN
-      - ETH
-      - AUS
-      - BAM
-      - BAH
-      - BAL
-      - BAD
-      - BAR
-      - BEL
-      - BEZ
-      - BEN
-      - BHU
-      - BOL
-      - BOS
-      - BOT
-      - BRA
-      - BRU
-      - BUL
-      - BUF
-      - BUR
-      - CHI
-      - CHV
-      - COO
-      - COR
-      - CIV
-      - DAN
-      - DEU
-      - DOA
-      - DOM
-      - DSC
-      - ECU
-      - ELS
-      - BRI
-      - ERY
-      - EST
-      - FID
-      - FIN
-      - FRA
-      - GAB
-      - GAM
-      - GEO
-      - GHA
-      - GOL
-      - GRE
-      - GRI
-      - GUA
-      - GUI
-      - GUS
-      - GUY
-      - HAI
-      - HND
-      - IND
-      - INS
-      - IRQ
-      - IRA
-      - IRL
-      - ISL
-      - ISR
-      - ITA
-      - JAM
-      - JAP
-      - JEM
-      - JOR
-      - JUG
-      - KAM
-      - KAN
-      - CAN
-      - KAP
-      - KAS
-      - KAT
-      - KEN
-      - KIR
-      - KIB
-      - KOL
-      - KOM
-      - KON
-      - KOR
-      - KOS
-      - KRO
-      - KUB
-      - KUW
-      - LAO
-      - LSO
-      - LET
-      - LEB
-      - LIB
-      - LYB
-      - LIE
-      - LIT
-      - LUX
-      - MAD
-      - MAW
-      - MAY
-      - MAL
-      - MAI
-      - MLT
-      - MAR
-      - MHL
-      - MAU
-      - MAS
-      - MAZ
-      - MEX
-      - MIK
-      - MAM
-      - MOL
-      - MON
-      - MOG
-      - MNE
-      - MOS
-      - MYA
-      - NAM
-      - CHN
-      - NAU
-      - NEP
-      - NEU
-      - NIC
-      - NED
-      - NIG
-      - NIA
-      - NOK
-      - NOR
-      - OMA
-      - OST
-      - PAK
-      - PAL
-      - PAU
-      - PAN
-      - PAP
-      - PAR
-      - PER
-      - PHI
-      - POL
-      - POR
-      - RUA
-      - RUM
-      - RUS
-      - SAL
-      - SAB
-      - SAA
-      - SAN
-      - STL
-      - STP
-      - SAU
-      - SCO
-      - SVE
-      - HEL
-      - SEN
-      - SER
-      - SEY
-      - SIL
-      - SIM
-      - SIN
-      - SKN
-      - SLO
-      - SOM
-      - SON
-      - SPA
-      - CEY
-      - STK
-      - VCT
-      - STA
-      - SAR
-      - SAM
-      - SUD
-      - SUK
-      - SUR
-      - SWA
-      - SYR
-      - TAD
-      - TAI
-      - TAN
-      - THA
-      - TIB
-      - TIM
-      - TOG
-      - TRT
-      - CHA
-      - CZN
-      - TUN
-      - TUR
-      - TKM
-      - TUV
-      - UGA
-      - UKR
-      - UUU
-      - UNG
-      - URU
-      - USA
-      - USB
-      - VAN
-      - VAT
-      - VEN
-      - VAE
-      - VIE
-      - WRU
-      - SCA
-      - ZYP
-      - G1
-      - G2
-      - G3
-      - G4
-      - G5
-      - G6
-      - G7
-      - G8
-      - G9
-      example: DEU
-    SchoolEntryFeature:
-      type: string
-      enum:
-      - DUMMY
-    SchoolEntryLabel:
-      type: object
-      description: Labels can be associated to a procedure. There are predefined labels
-        and additional labels can be created by the users.
-      properties:
-        description:
-          type: string
-          description: Description of the label
-        hexColor:
-          type: string
-          description: Background color of the box surrounding the label
-          pattern: "^#[0-9a-zA-Z]{6}$"
-        id:
-          type: string
-          format: uuid
-          description: Id of the label
-        name:
-          type: string
-          description: Name of the label
-          maxLength: 255
-          minLength: 0
-        readonly:
-          type: boolean
-          description: Indicates if label can be modified by users
-        version:
-          type: integer
-          format: int64
-          description: "Version of the entity. Each time the entity is changed, it\
-            \ is incremented by one."
-      required:
-      - hexColor
-      - id
-      - name
-      - readonly
-      - version
-    SchoolEntryProcedure:
-      type: object
-      properties:
-        appointmentStart:
-          type: string
-          format: date-time
-        child:
-          $ref: "#/components/schemas/Child"
-        createdAt:
-          type: string
-          format: date-time
-        id:
-          type: string
-          format: uuid
-          description: Id of the Procedure.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        labels:
-          type: array
-          items:
-            $ref: "#/components/schemas/SchoolEntryLabel"
-        modifiedAt:
-          type: string
-          format: date-time
-        school:
-          $ref: "#/components/schemas/School"
-        schoolYear:
-          type: integer
-          format: int32
-        status:
-          $ref: "#/components/schemas/SchoolEntryStatusType"
-        type:
-          $ref: "#/components/schemas/SchoolEntryProcedureType"
-      required:
-      - child
-      - createdAt
-      - id
-      - labels
-      - modifiedAt
-      - status
-      - type
-    SchoolEntryProcedurePopulationResult:
-      type: object
-      properties:
-        count:
-          type: integer
-          format: int64
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/CreateProcedureResponse"
-      required:
-      - count
-      - procedures
-    SchoolEntryProcedureSortKey:
-      type: string
-      enum:
-      - ID
-      - DATE_OF_BIRTH
-      - FIRSTNAME
-      - LASTNAME
-      - SCHOOL_YEAR
-      - TYPE
-      - APPOINTMENT_START
-      - CREATED_AT
-      - MODIFIED_AT
-    SchoolEntryProcedureType:
-      type: string
-      description: "Type of examination of the child. The type of examination has\
-        \ a number of practical implications. For instance, when an examination is\
-        \ carried out, what is examined and how long the examination lasts."
-      enum:
-      - REGULAR_EXAMINATION
-      - CAN_CHILD
-      - ENTRY_LEVEL
-      - DRAFT_CITIZEN_OFFICE_IMPORT
-      - DRAFT_SCHOOL_IMPORT
-      example: REGULAR_EXAMINATION
-    SchoolEntryStatusType:
-      type: string
-      enum:
-      - DRAFT
-      - OPEN
-      - IN_PROGRESS
-      - CLOSED
-      - ABORTED
-    SchoolFeedback:
-      type: string
-      description: Feedback from the school on the school entry examination.
-      enum:
-      - POSITIVE
-      - NEGATIVE
-      - UNKNOWN
-    SchoolRecommendation:
-      type: string
-      description: Recommendation for school enrolment.
-      enum:
-      - BACK_REGULAR
-      - BACK_ENTRY_LEVEL
-      - CONCERNS_EARLY_ENROLMENT
-      - ADVICE_CENTER
-      - "NO"
-    ScoredEvaluationExamination:
-      type: object
-      properties:
-        evaluation:
-          $ref: "#/components/schemas/EvaluationExamination"
-        points:
-          type: integer
-          format: int32
-      required:
-      - evaluation
-    SelfAssignTaskRequest:
-      type: object
-      properties:
-        dueAt:
-          type: string
-          format: date-time
-        taskVersion:
-          type: integer
-          format: int64
-      required:
-      - taskVersion
-    SocioEducationalPerformance:
-      type: object
-      description: Assessment of the social and educational performance
-      properties:
-        educationalAdvice:
-          type: boolean
-          description: Indicates need for educational advice.
-        infoLetter:
-          type: boolean
-          description: Indicates that an info letter must be issued.
-        languageAdvice:
-          type: boolean
-          description: Indicates need for language advice.
-        motorPromotion:
-          type: boolean
-          description: Indicates need for motor promotion.
-        nutritionalAdvice:
-          type: boolean
-          description: Indicates need for nutritional advice.
-        otherSupport:
-          type: boolean
-          description: Indicates need for other types of support.
-        reIntroduction:
-          type: boolean
-          description: Indicates need for re-introduction.
-        schoolCounselling:
-          type: boolean
-          description: Indicates need for school counselling.
-        socialService:
-          type: boolean
-          description: Indicates need for social services.
-        vaccinationAdvice:
-          type: boolean
-          description: Indicates need for vaccination advice.
-    SopessExaminationResult:
-      type: object
-      properties:
-        articulation:
-          $ref: "#/components/schemas/Articulation"
-        auditiveProcessingResult:
-          $ref: "#/components/schemas/ScoredEvaluationExamination"
-        fineMotorSkills:
-          $ref: "#/components/schemas/ScoredEvaluationExamination"
-        grossMotorSkills:
-          $ref: "#/components/schemas/ScoredEvaluationExamination"
-        handedness:
-          $ref: "#/components/schemas/HandednessValue"
-        knowledgeThinkingResult:
-          $ref: "#/components/schemas/KnowledgeThinkingExamination"
-        language:
-          $ref: "#/components/schemas/Language"
-        note:
-          type: string
-        psychologicalBehaviorResult:
-          $ref: "#/components/schemas/ScoredEvaluationExamination"
-        speechResult:
-          $ref: "#/components/schemas/SpeechEvaluationExamination"
-        version:
-          type: integer
-          format: int64
-        visualPerceptionResult:
-          $ref: "#/components/schemas/ScoredEvaluationExamination"
-      required:
-      - articulation
-      - auditiveProcessingResult
-      - fineMotorSkills
-      - grossMotorSkills
-      - knowledgeThinkingResult
-      - language
-      - psychologicalBehaviorResult
-      - speechResult
-      - version
-      - visualPerceptionResult
-    SopessExaminationResultValue:
-      type: string
-      enum:
-      - OK
-      - KNOWN
-      - DOCTOR_LETTER
-      - BORDERLINE
-      - UNKNOWN
-    SortDirection:
-      type: string
-      enum:
-      - ASC
-      - DESC
-    SpeechEvaluationExamination:
-      type: object
-      properties:
-        evaluation:
-          $ref: "#/components/schemas/EvaluationExamination"
-        pluralPoints:
-          type: integer
-          format: int32
-        prepositionPoints:
-          type: integer
-          format: int32
-      required:
-      - evaluation
-    SyncPersonRequest:
-      type: object
-      properties:
-        fileStateId:
-          type: string
-          format: uuid
-        personVersion:
-          type: integer
-          format: int64
-        referenceVersion:
-          type: integer
-          format: int64
-      required:
-      - fileStateId
-      - personVersion
-      - referenceVersion
-    SystemProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          changeDescription:
-            type: string
-          keyDocumentType:
-            type: string
-          keyDocumentVersion:
-            type: integer
-            format: int32
-          previousFileStateId:
-            type: string
-            format: uuid
-          systemProgressEntryType:
-            type: string
-          triggerType:
-            $ref: "#/components/schemas/TriggerType"
-          triggeredBy:
-            type: string
-            format: uuid
-          triggeredByUserFirstName:
-            type: string
-          triggeredByUserLastName:
-            type: string
-      - $ref: "#/components/schemas/KeyDocumentAwareProgressEntry"
-      required:
-      - createdAt
-      - modifiedAt
-      - progressEntryId
-      - systemProgressEntryType
-      - triggerType
-    Task:
-      type: object
-      properties:
-        assignedById:
-          type: string
-          format: uuid
-        assigneeId:
-          type: string
-          format: uuid
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        createdAt:
-          type: string
-          format: date-time
-        dueAt:
-          type: string
-          format: date-time
-        isOverdue:
-          type: boolean
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-        taskId:
-          type: string
-          format: uuid
-        taskStatus:
-          $ref: "#/components/schemas/TaskStatus"
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        version:
-          type: integer
-          format: int64
-      required:
-      - businessModule
-      - createdAt
-      - isOverdue
-      - modifiedAt
-      - procedureId
-      - summary
-      - taskId
-      - taskStatus
-      - taskType
-      - version
-    TaskMetric:
-      type: object
-      properties:
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        moreThanTwoOccurrencesCount:
-          type: integer
-          format: int32
-        noOccurrencesCount:
-          type: integer
-          format: int32
-        oneOccurrenceCount:
-          type: integer
-          format: int32
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        twoOccurrencesCount:
-          type: integer
-          format: int32
-      required:
-      - moreThanTwoOccurrencesCount
-      - noOccurrencesCount
-      - oneOccurrenceCount
-      - taskType
-      - twoOccurrencesCount
-    TaskResponse:
-      type: object
-      properties:
-        count:
-          type: integer
-          format: int64
-          description: total number of tasks for this query
-        tasks:
-          type: array
-          items:
-            $ref: "#/components/schemas/Task"
-          maxItems: 200
-          minItems: 0
-      required:
-      - count
-      - tasks
-    TaskStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    TaskType:
-      type: string
-      enum:
-      - BOOK_APPOINTMENT
-      - PERFORM_SCHOOL_ENTRY_EXAMINATION
-      - INSPECTION_PLANNING
-      - INSPECTION_EXECUTION
-      - INSPECTION_REPORT
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - OFFICIAL_MEDICAL_SERVICE
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
-    Title:
-      type: string
-      enum:
-      - DR
-      - PROF
-      - PROF_DR
-    TriggerType:
-      type: string
-      enum:
-      - SYSTEM_AUTOMATIC
-      - EMPLOYEE
-      - CITIZEN
-    UpdateAppointmentTypeRequest:
-      type: object
-      properties:
-        standardDurationInMinutes:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - standardDurationInMinutes
-    UpdateCitizenAppointmentRequest:
-      type: object
-      description: Citizen appointment update.
-      properties:
-        newAppointment:
-          $ref: "#/components/schemas/Appointment"
-      required:
-      - newAppointment
-    UpdateLabelRequest:
-      type: object
-      properties:
-        description:
-          type: string
-        name:
-          type: string
-          maxLength: 255
-          minLength: 0
-        version:
-          type: integer
-          format: int64
-      required:
-      - name
-      - version
-    UpdatePersonRequest:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dateOfBirth:
-          type: string
-          format: date
-          description: Date of birth of the person.
-          example: 2024-02-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          items:
-            type: string
-            maxLength: 254
-            minLength: 6
-        firstName:
-          type: string
-          description: First name of the person.
-          example: Hermione
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: Last name of the person.
-          example: Granger
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          maxLength: 40
-          minLength: 1
-        phoneNumbers:
-          type: array
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          maxLength: 50
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          maxLength: 119
-          minLength: 1
-        version:
-          type: integer
-          format: int64
-      required:
-      - dateOfBirth
-      - firstName
-      - lastName
-      - version
-    UpdateProcedureRequest:
-      type: object
-      properties:
-        appointment:
-          $ref: "#/components/schemas/Appointment"
-        deceased:
-          type: string
-          format: date
-        isDeceased:
-          type: boolean
-        isInvitationSent:
-          type: boolean
-        labels:
-          type: array
-          items:
-            type: string
-            format: uuid
-        locationId:
-          type: string
-          format: uuid
-        procedureType:
-          $ref: "#/components/schemas/SchoolEntryProcedureType"
-        schoolId:
-          type: string
-          format: uuid
-        schoolYear:
-          type: integer
-          format: int32
-          minimum: 1900
-        version:
-          type: integer
-          format: int64
-      required:
-      - isDeceased
-      - isInvitationSent
-      - labels
-      - procedureType
-      - version
-    User:
-      type: object
-      properties:
-        email:
-          type: string
-          description: The email address of a user.
-          example: example@mail.de
-        enabled:
-          type: boolean
-          description: "True, if the user can login"
-          example: false
-        externalChatUsername:
-          type: string
-          description: The chat username of the gematik TI-Messenger (matrix chat).
-          example: '@username:server'
-        firstName:
-          type: string
-          description: The given name(s) of a user.
-          example: John
-        lastName:
-          type: string
-          description: The last name of a user.
-          example: Doe
-        phoneNumber:
-          type: string
-          description: The phone number of a user.
-          example: "+491234567890"
-        userId:
-          type: string
-          format: uuid
-          description: The Id of the user.
-          example: fe9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        username:
-          type: string
-          description: The username which is displayed in the application and can
-            be used for the login.
-          example: testuser
-      required:
-      - enabled
-      - firstName
-      - lastName
-      - userId
-      - username
-    VaccinationSchemeValue:
-      type: string
-      enum:
-      - SCHEME_2_PLUS_1
-      - SCHEME_3_PLUS_1
-      - UNKNOWN
-    VaccinationStatus:
-      type: object
-      properties:
-        diphtheria:
-          type: integer
-          format: int32
-          description: Number of diphtheria vaccinations.
-          maximum: 9
-          minimum: 0
-        hepatitisA:
-          type: integer
-          format: int32
-          description: Number of hepatitisA vaccinations.
-          maximum: 9
-          minimum: 0
-        hepatitisB:
-          type: integer
-          format: int32
-          description: Number of hepatitisB vaccinations.
-          maximum: 9
-          minimum: 0
-        hib:
-          type: integer
-          format: int32
-          description: Number of hib vaccinations.
-          maximum: 9
-          minimum: 0
-        measlesContraIndication:
-          type: boolean
-        measlesContraIndicationIsPermanent:
-          type: boolean
-        measlesContraIndicationUntil:
-          type: string
-          format: date
-        meningococcusB:
-          type: integer
-          format: int32
-          description: Number of meningococcusB vaccinations.
-          maximum: 9
-          minimum: 0
-        meningococcusC:
-          type: integer
-          format: int32
-          description: Number of meningococcusC vaccinations.
-          maximum: 9
-          minimum: 0
-        mmr:
-          type: integer
-          format: int32
-          description: Number of mmr vaccinations.
-          maximum: 9
-          minimum: 0
-        otherVaccinations:
-          type: array
-          description: List of additional vaccinations.
-          items:
-            $ref: "#/components/schemas/OtherVaccination"
-        perkombiHbv:
-          $ref: "#/components/schemas/BooleanWithUnknown"
-        pertussis:
-          type: integer
-          format: int32
-          description: Number of pertussis vaccinations.
-          maximum: 9
-          minimum: 0
-        pneumococcus:
-          type: integer
-          format: int32
-          description: Number of pneumococcus vaccinations.
-          maximum: 9
-          minimum: 0
-        polio:
-          type: integer
-          format: int32
-          description: Number of polio vaccinations.
-          maximum: 9
-          minimum: 0
-        rota:
-          type: integer
-          format: int32
-          description: Number of rota vaccinations.
-          maximum: 9
-          minimum: 0
-        tbe:
-          type: integer
-          format: int32
-          description: Number of tbe vaccinations.
-          maximum: 9
-          minimum: 0
-        tetanus:
-          type: integer
-          format: int32
-          description: Number of tetanus vaccinations.
-          maximum: 9
-          minimum: 0
-        vaccinationPassPresented:
-          type: boolean
-          description: "Boolean that indicates, if the vaccination pass was shown\
-            \ or not."
-        vaccinationScheme:
-          $ref: "#/components/schemas/VaccinationSchemeValue"
-        varicella:
-          type: integer
-          format: int32
-          description: Number of varicella vaccinations.
-          maximum: 9
-          minimum: 0
-        version:
-          type: integer
-          format: int64
-          description: "Version of the entity. Each time the entity is changed, it\
-            \ is incremented by one."
-      required:
-      - otherVaccinations
-      - version
-    ValidateAppointmentBlockGroupResponse:
-      type: object
-      properties:
-        userIdsWithEventConflicts:
-          type: array
-          items:
-            type: string
-            format: uuid
-        userIdsWithoutEventConflicts:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - userIdsWithEventConflicts
-      - userIdsWithoutEventConflicts
-    ValidateRequiredProcedureDataResponse:
-      type: object
-      properties:
-        invalidAreas:
-          type: array
-          items:
-            $ref: "#/components/schemas/RequiredProcedureData"
-      required:
-      - invalidAreas
-    WaitingRoom:
-      type: object
-      properties:
-        description:
-          type: string
-          maxLength: 60
-          minLength: 0
-        status:
-          $ref: "#/components/schemas/WaitingStatus"
-        version:
-          type: integer
-          format: int64
-          description: "Version of the entity. Each time the entity is changed, it\
-            \ is incremented by one."
-      required:
-      - version
-    WaitingRoomProcedure:
-      type: object
-      properties:
-        child:
-          $ref: "#/components/schemas/Child"
-        id:
-          type: string
-          format: uuid
-          description: Id of the Procedure.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        modifiedAt:
-          type: string
-          format: date-time
-        waitingRoom:
-          $ref: "#/components/schemas/WaitingRoom"
-      required:
-      - child
-      - id
-      - modifiedAt
-      - waitingRoom
-    WaitingRoomSortKey:
-      type: string
-      enum:
-      - ID
-      - DATE_OF_BIRTH
-      - FIRSTNAME
-      - LASTNAME
-      - STATUS
-      - INFO
-      - MODIFIED_AT
-    WaitingStatus:
-      type: string
-      enum:
-      - WAITING
-      - WAITING_FOR_DOCTOR
-      - WAITING_FOR_MFA
-      - IN_EXAMINATION
-      - IN_EXAMINATION_DOCTOR
-      - IN_EXAMINATION_MFA
-      - DONE
-      - CANCELLED
diff --git a/backend/school-entry/src/main/java/de/eshg/schoolentry/SchoolEntryController.java b/backend/school-entry/src/main/java/de/eshg/schoolentry/SchoolEntryController.java
index 39fca257b..4b16ef795 100644
--- a/backend/school-entry/src/main/java/de/eshg/schoolentry/SchoolEntryController.java
+++ b/backend/school-entry/src/main/java/de/eshg/schoolentry/SchoolEntryController.java
@@ -45,8 +45,10 @@ import java.nio.charset.StandardCharsets;
 import java.time.Clock;
 import java.time.Instant;
 import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.UUID;
 import org.springdoc.core.annotations.ParameterObject;
 import org.springframework.core.io.ByteArrayResource;
@@ -505,16 +507,8 @@ public class SchoolEntryController {
   public ResponseEntity<Resource> createSchoolInfoLetter(
       @PathVariable("procedureId") UUID procedureId,
       @Valid @RequestBody CreateSchoolInfoLetterRequest request) {
-
     SchoolEntryProcedure procedure = schoolEntryService.findProcedureByExternalId(procedureId);
-    ProcedureValidator.validateProcedureStatusNotClosed(procedure);
-    List<RequiredProcedureData> validationResult =
-        SchoolInfoLetterValidator.validateSchoolEntryProcedure(procedure);
-    if (!validationResult.isEmpty()) {
-      throw new BadRequestException(
-          "School entry procedure is not complete.",
-          "Incomplete areas: %s".formatted(validationResult));
-    }
+    validateProcedureForSchoolInfoLetter(procedure);
     ProcedureDetailsData procedureDetailsData = schoolEntryService.augmentWithDetails(procedure);
 
     Pdf pdf =
@@ -539,6 +533,18 @@ public class SchoolEntryController {
         .body(new ByteArrayResource(pdf.getFileContent().getContent()));
   }
 
+  private static void validateProcedureForSchoolInfoLetter(SchoolEntryProcedure procedure) {
+    ProcedureValidator.validateProcedureStatusNotClosed(procedure);
+
+    Set<RequiredProcedureArea> incompleteAreas =
+        SchoolInfoLetterValidator.validateSchoolEntryProcedure(procedure);
+    if (!incompleteAreas.isEmpty()) {
+      throw new BadRequestException(
+          "School entry procedure is not complete.",
+          "Incomplete areas: %s".formatted(incompleteAreas));
+    }
+  }
+
   @PutMapping("/{procedureId}/waiting-room")
   @Transactional
   @Operation(summary = "Update waiting room details for a procedure.")
@@ -558,14 +564,14 @@ public class SchoolEntryController {
 
   @GetMapping("/{procedureId}/validate-completeness")
   @Transactional(readOnly = true)
-  public ResponseEntity<ValidateRequiredProcedureDataResponse> validateCompleteness(
+  public ValidateRequiredProcedureDataResponse validateCompleteness(
       @PathVariable("procedureId") UUID procedureId) {
     SchoolEntryProcedure procedure = schoolEntryService.findProcedureByExternalId(procedureId);
 
-    List<RequiredProcedureData> validationResult =
+    Set<RequiredProcedureArea> incompleteAreas =
         SchoolInfoLetterValidator.validateSchoolEntryProcedure(procedure);
 
-    return ResponseEntity.ok(new ValidateRequiredProcedureDataResponse(validationResult));
+    return new ValidateRequiredProcedureDataResponse(new ArrayList<>(incompleteAreas));
   }
 
   @GetMapping("/waiting-room-procedures")
diff --git a/backend/school-entry/src/main/java/de/eshg/schoolentry/api/RequiredProcedureData.java b/backend/school-entry/src/main/java/de/eshg/schoolentry/api/RequiredProcedureArea.java
similarity index 87%
rename from backend/school-entry/src/main/java/de/eshg/schoolentry/api/RequiredProcedureData.java
rename to backend/school-entry/src/main/java/de/eshg/schoolentry/api/RequiredProcedureArea.java
index c303f94ee..2dffb040e 100644
--- a/backend/school-entry/src/main/java/de/eshg/schoolentry/api/RequiredProcedureData.java
+++ b/backend/school-entry/src/main/java/de/eshg/schoolentry/api/RequiredProcedureArea.java
@@ -5,7 +5,7 @@
 
 package de.eshg.schoolentry.api;
 
-public enum RequiredProcedureData {
+public enum RequiredProcedureArea {
   DETAILS,
   HEARING_TEST,
   EYE_EXAMINATION,
diff --git a/backend/school-entry/src/main/java/de/eshg/schoolentry/api/ValidateRequiredProcedureDataResponse.java b/backend/school-entry/src/main/java/de/eshg/schoolentry/api/ValidateRequiredProcedureDataResponse.java
index dcea77164..35a63d980 100644
--- a/backend/school-entry/src/main/java/de/eshg/schoolentry/api/ValidateRequiredProcedureDataResponse.java
+++ b/backend/school-entry/src/main/java/de/eshg/schoolentry/api/ValidateRequiredProcedureDataResponse.java
@@ -9,4 +9,4 @@ import jakarta.validation.constraints.NotNull;
 import java.util.List;
 
 public record ValidateRequiredProcedureDataResponse(
-    @NotNull List<RequiredProcedureData> invalidAreas) {}
+    @NotNull List<RequiredProcedureArea> incompleteAreas) {}
diff --git a/backend/school-entry/src/main/java/de/eshg/schoolentry/api/WaitingStatusDto.java b/backend/school-entry/src/main/java/de/eshg/schoolentry/api/WaitingStatusDto.java
index 63b6a91ba..1870c2cf7 100644
--- a/backend/school-entry/src/main/java/de/eshg/schoolentry/api/WaitingStatusDto.java
+++ b/backend/school-entry/src/main/java/de/eshg/schoolentry/api/WaitingStatusDto.java
@@ -15,6 +15,9 @@ public enum WaitingStatusDto {
   IN_EXAMINATION,
   IN_EXAMINATION_DOCTOR,
   IN_EXAMINATION_MFA,
+  IN_EXAMINATION_SOPASS,
+  EXAMINATION_FINISHED,
   DONE,
-  CANCELLED
+  CANCELLED,
+  NOT_APPEARED
 }
diff --git a/backend/school-entry/src/main/java/de/eshg/schoolentry/domain/model/DevelopmentScreening.java b/backend/school-entry/src/main/java/de/eshg/schoolentry/domain/model/DevelopmentScreening.java
index 896b04003..038f22c2c 100644
--- a/backend/school-entry/src/main/java/de/eshg/schoolentry/domain/model/DevelopmentScreening.java
+++ b/backend/school-entry/src/main/java/de/eshg/schoolentry/domain/model/DevelopmentScreening.java
@@ -438,6 +438,7 @@ public class DevelopmentScreening extends GenericEntity<Long> implements Validat
     this.bmiPercentile = bmiPercentile;
   }
 
+  @Override
   public Stream<PropertyDescriptor> getPropertiesToValidate() {
     List<PropertyDescriptor> propertiesToIgnore =
         List.of(
diff --git a/backend/school-entry/src/main/java/de/eshg/schoolentry/domain/model/WaitingStatus.java b/backend/school-entry/src/main/java/de/eshg/schoolentry/domain/model/WaitingStatus.java
index 6e278f27c..effbb0098 100644
--- a/backend/school-entry/src/main/java/de/eshg/schoolentry/domain/model/WaitingStatus.java
+++ b/backend/school-entry/src/main/java/de/eshg/schoolentry/domain/model/WaitingStatus.java
@@ -12,6 +12,9 @@ public enum WaitingStatus {
   IN_EXAMINATION,
   IN_EXAMINATION_DOCTOR,
   IN_EXAMINATION_MFA,
+  IN_EXAMINATION_SOPASS,
+  EXAMINATION_FINISHED,
   DONE,
-  CANCELLED
+  CANCELLED,
+  NOT_APPEARED
 }
diff --git a/backend/school-entry/src/main/java/de/eshg/schoolentry/mapper/WaitingRoomMapper.java b/backend/school-entry/src/main/java/de/eshg/schoolentry/mapper/WaitingRoomMapper.java
index 4d1e1091b..fc4bd19e7 100644
--- a/backend/school-entry/src/main/java/de/eshg/schoolentry/mapper/WaitingRoomMapper.java
+++ b/backend/school-entry/src/main/java/de/eshg/schoolentry/mapper/WaitingRoomMapper.java
@@ -49,8 +49,11 @@ public final class WaitingRoomMapper {
       case IN_EXAMINATION -> WaitingStatusDto.IN_EXAMINATION;
       case IN_EXAMINATION_DOCTOR -> WaitingStatusDto.IN_EXAMINATION_DOCTOR;
       case IN_EXAMINATION_MFA -> WaitingStatusDto.IN_EXAMINATION_MFA;
+      case IN_EXAMINATION_SOPASS -> WaitingStatusDto.IN_EXAMINATION_SOPASS;
+      case EXAMINATION_FINISHED -> WaitingStatusDto.EXAMINATION_FINISHED;
       case DONE -> WaitingStatusDto.DONE;
       case CANCELLED -> WaitingStatusDto.CANCELLED;
+      case NOT_APPEARED -> WaitingStatusDto.NOT_APPEARED;
     };
   }
 
@@ -74,8 +77,11 @@ public final class WaitingRoomMapper {
       case IN_EXAMINATION -> WaitingStatus.IN_EXAMINATION;
       case IN_EXAMINATION_DOCTOR -> WaitingStatus.IN_EXAMINATION_DOCTOR;
       case IN_EXAMINATION_MFA -> WaitingStatus.IN_EXAMINATION_MFA;
+      case IN_EXAMINATION_SOPASS -> WaitingStatus.IN_EXAMINATION_SOPASS;
+      case EXAMINATION_FINISHED -> WaitingStatus.EXAMINATION_FINISHED;
       case DONE -> WaitingStatus.DONE;
       case CANCELLED -> WaitingStatus.CANCELLED;
+      case NOT_APPEARED -> WaitingStatus.NOT_APPEARED;
     };
   }
 
diff --git a/backend/school-entry/src/main/java/de/eshg/schoolentry/pdf/schoolinfoletter/SchoolInfoLetterValidator.java b/backend/school-entry/src/main/java/de/eshg/schoolentry/pdf/schoolinfoletter/SchoolInfoLetterValidator.java
index 6f69e6de3..96c54dcf8 100644
--- a/backend/school-entry/src/main/java/de/eshg/schoolentry/pdf/schoolinfoletter/SchoolInfoLetterValidator.java
+++ b/backend/school-entry/src/main/java/de/eshg/schoolentry/pdf/schoolinfoletter/SchoolInfoLetterValidator.java
@@ -7,15 +7,14 @@ package de.eshg.schoolentry.pdf.schoolinfoletter;
 
 import de.cronn.reflection.util.PropertyUtils;
 import de.cronn.reflection.util.TypedPropertyGetter;
-import de.eshg.schoolentry.api.RequiredProcedureData;
+import de.eshg.domain.model.GenericEntity;
+import de.eshg.schoolentry.api.RequiredProcedureArea;
 import de.eshg.schoolentry.domain.model.*;
-import jakarta.validation.constraints.NotNull;
 import java.beans.PropertyDescriptor;
-import java.util.HashMap;
+import java.util.EnumSet;
 import java.util.List;
-import java.util.Map;
 import java.util.Objects;
-import java.util.function.BiFunction;
+import java.util.Set;
 import java.util.function.Predicate;
 import java.util.stream.Stream;
 
@@ -23,123 +22,128 @@ public class SchoolInfoLetterValidator {
 
   private SchoolInfoLetterValidator() {}
 
-  public static List<RequiredProcedureData> validateSchoolEntryProcedure(
+  public static Set<RequiredProcedureArea> validateSchoolEntryProcedure(
       SchoolEntryProcedure procedure) {
-    Map<RequiredProcedureData, Boolean> result = new HashMap<>();
-
-    result.put(
-        RequiredProcedureData.DETAILS,
-        procedure.getSchoolId() != null
-            && procedure.getSchoolYear() != null
-            && (procedure.getAppointment() != null || procedure.getExaminationDate() != null));
-    result.put(RequiredProcedureData.HEARING_TEST, validate(procedure.getHearingTestResult()));
-    result.put(
-        RequiredProcedureData.EYE_EXAMINATION, validate(procedure.getEyeExaminationResult()));
-    result.put(RequiredProcedureData.ANAMNESIS, validate(procedure.getAnamnesis()));
-    result.put(
-        RequiredProcedureData.SOPESS_EXAMINATION, validate(procedure.getSopessExaminationResult()));
-    result.put(
-        RequiredProcedureData.DEVELOPMENT_SCREENING,
-        validate(procedure.getDevelopmentScreeningResult()));
-    result.put(
-        RequiredProcedureData.VACCINATION_STATUS, validate(procedure.getVaccinationStatus()));
-
-    result.compute(
-        RequiredProcedureData.HEARING_TEST,
-        validateSpecialCases(
-            procedure.getHearingTestResult(),
-            SchoolInfoLetterValidator::validateExaminationResult,
-            Stream.of(HearingTestResult::getExaminationResult)));
-
-    result.compute(
-        RequiredProcedureData.EYE_EXAMINATION,
-        validateSpecialCases(
+    Set<RequiredProcedureArea> incompleteAreas = EnumSet.noneOf(RequiredProcedureArea.class);
+
+    if (isDetailsIncomplete(procedure)) {
+      incompleteAreas.add(RequiredProcedureArea.DETAILS);
+    }
+
+    if (isHearingTestIncomplete(procedure)) {
+      incompleteAreas.add(RequiredProcedureArea.HEARING_TEST);
+    }
+
+    if (isEyeExaminationIncomplete(procedure)) {
+      incompleteAreas.add(RequiredProcedureArea.EYE_EXAMINATION);
+    }
+
+    if (isIncomplete(procedure.getAnamnesis())) {
+      incompleteAreas.add(RequiredProcedureArea.ANAMNESIS);
+    }
+
+    if (isSopessExaminationIncomplete(procedure.getSopessExaminationResult())) {
+      incompleteAreas.add(RequiredProcedureArea.SOPESS_EXAMINATION);
+    }
+
+    if (isDevelopmentScreeningResultIncomplete(procedure)) {
+      incompleteAreas.add(RequiredProcedureArea.DEVELOPMENT_SCREENING);
+    }
+
+    if (isIncomplete(procedure.getVaccinationStatus())) {
+      incompleteAreas.add(RequiredProcedureArea.VACCINATION_STATUS);
+    }
+
+    return incompleteAreas;
+  }
+
+  private static boolean isDevelopmentScreeningResultIncomplete(SchoolEntryProcedure procedure) {
+    return isIncomplete(procedure.getDevelopmentScreeningResult())
+        || isHandicapResultIncomplete(procedure)
+        || isDisabilityResultIncomplete(procedure);
+  }
+
+  private static boolean isDisabilityResultIncomplete(SchoolEntryProcedure procedure) {
+    DevelopmentScreening developmentScreeningResult = procedure.getDevelopmentScreeningResult();
+    DisabilityType disabilityType = developmentScreeningResult.getDisabilityType();
+    return developmentScreeningResult.getDisability().getResult() && disabilityType == null;
+  }
+
+  private static boolean isHandicapResultIncomplete(SchoolEntryProcedure procedure) {
+    return isIncomplete(
+        procedure.getDevelopmentScreeningResult(),
+        SchoolInfoLetterValidator::isHandicapIncomplete,
+        Stream.of(DevelopmentScreening::getChronicDisease, DevelopmentScreening::getDisability));
+  }
+
+  private static boolean isHandicapIncomplete(HandicapWithDiagnosis handicap) {
+    if (handicap.getResult() == null) {
+      return true;
+    }
+    return handicap.getResult() && handicap.getIcd10Codes().isEmpty();
+  }
+
+  private static boolean isSopessExaminationIncomplete(
+      SopessExaminationResult sopessExaminationResult) {
+    return isIncomplete(sopessExaminationResult)
+        || isSopessExaminationIncompleteForNonGermanPrimaryLanguage(sopessExaminationResult);
+  }
+
+  private static boolean isSopessExaminationIncompleteForNonGermanPrimaryLanguage(
+      SopessExaminationResult sopessExaminationResult) {
+    if (Objects.equals(sopessExaminationResult.getPrimaryLanguage(), PrimaryLanguageValue.GERMAN)) {
+      return false;
+    }
+    return isIncomplete(
+        sopessExaminationResult,
+        Objects::isNull,
+        Stream.of(
+            SopessExaminationResult::getFamilyLanguage,
+            SopessExaminationResult::getGermanKnowledgeChild,
+            SopessExaminationResult::getGermanKnowledgePrimaryCarer));
+  }
+
+  private static boolean isEyeExaminationIncomplete(SchoolEntryProcedure procedure) {
+    return isIncomplete(procedure.getEyeExaminationResult())
+        || isIncomplete(
             procedure.getEyeExaminationResult(),
-            SchoolInfoLetterValidator::validateExaminationResult,
+            SchoolInfoLetterValidator::isExaminationResultIncomplete,
             Stream.of(
                 EyeExaminationResult::getEyeExamination,
                 EyeExaminationResult::getIshiharaExamination,
-                EyeExaminationResult::getLangExamination)));
+                EyeExaminationResult::getLangExamination));
+  }
 
-    result.compute(
-        RequiredProcedureData.SOPESS_EXAMINATION,
-        validateSpecialCases(
-            procedure.getSopessExaminationResult(),
-            mandatoryIfPrimaryLanguageIsNotGerman(procedure.getSopessExaminationResult()),
-            Stream.of(
-                SopessExaminationResult::getFamilyLanguage,
-                SopessExaminationResult::getGermanKnowledgeChild,
-                SopessExaminationResult::getGermanKnowledgePrimaryCarer)));
-
-    result.compute(
-        RequiredProcedureData.DEVELOPMENT_SCREENING,
-        validateSpecialCases(
-            procedure.getDevelopmentScreeningResult(),
-            (HandicapWithDiagnosis handicap) -> {
-              if (handicap.getResult() == null) {
-                return false;
-              }
-              return !handicap.getResult() || !handicap.getIcd10Codes().isEmpty();
-            },
-            Stream.of(
-                DevelopmentScreening::getChronicDisease, DevelopmentScreening::getDisability)));
-
-    result.compute(
-        RequiredProcedureData.DEVELOPMENT_SCREENING,
-        validateSpecialCases(
-            procedure.getDevelopmentScreeningResult(),
-            (DisabilityType type) ->
-                !procedure.getDevelopmentScreeningResult().getDisability().getResult()
-                    || type != null,
-            Stream.of(DevelopmentScreening::getDisabilityType)));
-
-    return result.entrySet().stream()
-        .filter(entry -> !entry.getValue())
-        .map(Map.Entry::getKey)
-        .sorted()
-        .toList();
+  private static boolean isHearingTestIncomplete(SchoolEntryProcedure procedure) {
+    return isIncomplete(procedure.getHearingTestResult())
+        || isExaminationResultIncomplete(procedure.getHearingTestResult().getExaminationResult());
+  }
+
+  private static boolean isDetailsIncomplete(SchoolEntryProcedure procedure) {
+    return procedure.getSchoolId() == null
+        || procedure.getSchoolYear() == null
+        || procedure.getAppointment() == null && procedure.getExaminationDate() == null;
   }
 
-  private static <T extends ValidatableEntity> boolean validate(T validatableEntity) {
+  private static boolean isIncomplete(ValidatableEntity validatableEntity) {
     return validatableEntity
         .getPropertiesToValidate()
-        .filter(requiredProperties::contains)
+        .filter(REQUIRED_PROPERTIES::contains)
         .map(prop -> PropertyUtils.read(validatableEntity, prop))
-        .noneMatch(Objects::isNull);
-  }
-
-  @SuppressWarnings("unchecked")
-  private static <T, U> BiFunction<RequiredProcedureData, Boolean, Boolean> validateSpecialCases(
-      T toValidate, Predicate<U> validationFn, Stream<TypedPropertyGetter<T, U>> getters) {
-    return (key, currentValue) -> {
-      // if already invalid, abort
-      if (Boolean.FALSE.equals(currentValue)) {
-        return false;
-      }
-      // read values and validate with validationFn
-      return getters
-          .map(
-              getter ->
-                  PropertyUtils.read(
-                      toValidate, PropertyUtils.getPropertyDescriptor(toValidate, getter)))
-          .map(value -> (U) value)
-          .allMatch(validationFn);
-    };
+        .anyMatch(Objects::isNull);
   }
 
-  private static boolean validateExaminationResult(@NotNull ExaminationResult result) {
-    return !result.getValue().equals(ExaminationResultValue.DOCTOR_LETTER)
-        || result.getDoctorLetter() != null;
+  private static <T extends GenericEntity<?>, V> boolean isIncomplete(
+      T toValidate, Predicate<V> isIncomplete, Stream<TypedPropertyGetter<T, V>> getters) {
+    return getters.map(getter -> getter.get(toValidate)).anyMatch(isIncomplete);
   }
 
-  private static <T> Predicate<T> mandatoryIfPrimaryLanguageIsNotGerman(
-      SopessExaminationResult sopessExaminationResult) {
-    return (T value) ->
-        sopessExaminationResult.getPrimaryLanguage().equals(PrimaryLanguageValue.GERMAN)
-            || value != null;
+  private static boolean isExaminationResultIncomplete(ExaminationResult result) {
+    return result.getValue().equals(ExaminationResultValue.DOCTOR_LETTER)
+        && result.getDoctorLetter() == null;
   }
 
-  static final List<PropertyDescriptor> requiredProperties =
+  static final List<PropertyDescriptor> REQUIRED_PROPERTIES =
       List.of(
           hearingTestProperty(HearingTestResult::getExaminationResult),
           eyeExaminationProperty(EyeExaminationResult::getEyeExamination),
@@ -241,7 +245,7 @@ public class SchoolInfoLetterValidator {
           developmentScreeningProperty(DevelopmentScreening::getVaccinationAdvice),
           developmentScreeningProperty(DevelopmentScreening::getWeight));
 
-  static final List<PropertyDescriptor> optionalProperties =
+  static final List<PropertyDescriptor> OPTIONAL_PROPERTIES =
       List.of(
           hearingTestProperty(HearingTestResult::getRightEar),
           hearingTestProperty(HearingTestResult::getLeftEar),
diff --git a/backend/school-entry/src/main/resources/migrations/0076_add_waiting_status.xml b/backend/school-entry/src/main/resources/migrations/0076_add_waiting_status.xml
new file mode 100644
index 000000000..e7db93d74
--- /dev/null
+++ b/backend/school-entry/src/main/resources/migrations/0076_add_waiting_status.xml
@@ -0,0 +1,15 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<!--
+ Copyright 2025 cronn GmbH
+ SPDX-License-Identifier: AGPL-3.0-only
+-->
+
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                   xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
+  <changeSet author="GA-Lotse" id="1737973283633-1">
+    <ext:addPostgresEnumValues enumTypeName="waitingstatus"
+                               valuesToAdd="EXAMINATION_FINISHED, IN_EXAMINATION_SOPASS, NOT_APPEARED"/>
+  </changeSet>
+</databaseChangeLog>
diff --git a/backend/school-entry/src/main/resources/migrations/changelog.xml b/backend/school-entry/src/main/resources/migrations/changelog.xml
index bdb0df4d5..e440340e1 100644
--- a/backend/school-entry/src/main/resources/migrations/changelog.xml
+++ b/backend/school-entry/src/main/resources/migrations/changelog.xml
@@ -83,5 +83,6 @@
   <include file="migrations/0073_remove_icd10_tables.xml"/>
   <include file="migrations/0074_add_cemetery_delete_at.xml"/>
   <include file="migrations/0075_add_previous_file_state_id_to_system_progress_entry.xml"/>
+  <include file="migrations/0076_add_waiting_status.xml"/>
 
 </databaseChangeLog>
diff --git a/backend/service-directory/build.gradle b/backend/service-directory/build.gradle
index 33b72e987..f46af5dc3 100644
--- a/backend/service-directory/build.gradle
+++ b/backend/service-directory/build.gradle
@@ -15,8 +15,6 @@ dependencies {
     testImplementation testFixtures(project(':business-module-persistence-commons'))
 
     testImplementation project(':test-commons')
-    testImplementation 'org.testcontainers:junit-jupiter'
-    testImplementation 'org.testcontainers:postgresql'
 }
 
 dockerCompose {
diff --git a/backend/service-directory/gradle.lockfile b/backend/service-directory/gradle.lockfile
index f9a3154a8..1a69c45e0 100644
--- a/backend/service-directory/gradle.lockfile
+++ b/backend/service-directory/gradle.lockfile
@@ -188,10 +188,9 @@ org.springframework:spring-test:6.2.1=testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-tx:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-web:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
 org.springframework:spring-webmvc:6.2.1=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
-org.testcontainers:database-commons:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:jdbc:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:junit-jupiter:1.20.4=testCompileClasspath,testRuntimeClasspath
-org.testcontainers:postgresql:1.20.4=testCompileClasspath,testRuntimeClasspath
+org.testcontainers:database-commons:1.20.4=testRuntimeClasspath
+org.testcontainers:jdbc:1.20.4=testRuntimeClasspath
+org.testcontainers:postgresql:1.20.4=testRuntimeClasspath
 org.testcontainers:testcontainers:1.20.4=testCompileClasspath,testRuntimeClasspath
 org.xmlunit:xmlunit-core:2.10.0=testCompileClasspath,testRuntimeClasspath
 org.yaml:snakeyaml:2.3=compileClasspath,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
diff --git a/backend/service-directory/openApi.json b/backend/service-directory/openApi.json
new file mode 100644
index 000000000..b380bd524
--- /dev/null
+++ b/backend/service-directory/openApi.json
@@ -0,0 +1,2201 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is the api for Service Directory",
+    "title" : "Service Directory Api",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8083"
+  } ],
+  "paths" : {
+    "/adminapi/actors" : {
+      "post" : {
+        "operationId" : "createActor",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AdminPartialActor"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AdminPartialActor"
+                }
+              }
+            },
+            "description" : "Creates an actor"
+          }
+        },
+        "summary" : "Create an actor",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      },
+      "put" : {
+        "operationId" : "updateActor",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AdminPartialActor"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AdminPartialActor"
+                }
+              }
+            },
+            "description" : "Updates an actor"
+          }
+        },
+        "summary" : "Update an actor",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/actors/activate/{id}" : {
+      "put" : {
+        "operationId" : "activateActorById",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AdminActor"
+                }
+              }
+            },
+            "description" : "Activates an actor"
+          }
+        },
+        "summary" : "Activate an actor",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/actors/deactivate/{id}" : {
+      "put" : {
+        "operationId" : "deactivateActorById",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AdminActor"
+                }
+              }
+            },
+            "description" : "Deactivates an actor"
+          }
+        },
+        "summary" : "Deactivate an actor",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/actors/metadata/{actorId}" : {
+      "get" : {
+        "operationId" : "getActorMetadataByActorId",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "actorId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AdminActorMetadata"
+                }
+              }
+            },
+            "description" : "Gets the meta data of an actor"
+          }
+        },
+        "summary" : "Get the meta data of an actor by its actor id",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/actors/{actorId}/clients" : {
+      "get" : {
+        "operationId" : "getClientActorsForActor",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "actorId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetApplicableActorsResponse"
+                }
+              }
+            },
+            "description" : "Returns all audited actors that are a valid client for this actor"
+          }
+        },
+        "summary" : "Get all audited actors that are a valid client for this actor",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/actors/{actorId}/servers" : {
+      "get" : {
+        "operationId" : "getServerActorsForActor",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "actorId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetApplicableActorsResponse"
+                }
+              }
+            },
+            "description" : "Returns all audited actors that are a valid server for this actor"
+          }
+        },
+        "summary" : "Get all audited actors that are a valid server for this actor",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/actors/{id}" : {
+      "delete" : {
+        "operationId" : "deleteActorById",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Deletes an actor by its id"
+          }
+        },
+        "summary" : "Delete an actor by its id",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/export" : {
+      "get" : {
+        "operationId" : "getExport",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "withCertificates",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean",
+            "default" : false
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ExportResponse"
+                }
+              }
+            },
+            "description" : "Returns a JSON with all relevant (configuration) data of the service-directory"
+          }
+        },
+        "summary" : "Export current service-directory data without staged data",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/import" : {
+      "post" : {
+        "operationId" : "postImport",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ImportRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "Import from exported data into an empty database"
+          }
+        },
+        "summary" : "Import from exported data into an empty database",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/orgUnits" : {
+      "get" : {
+        "operationId" : "getAllOrgUnits",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetOrgUnitsResponse"
+                }
+              }
+            },
+            "description" : "Returns all orgUnits"
+          }
+        },
+        "summary" : "Get all orgUnits",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      },
+      "post" : {
+        "operationId" : "createOrgUnit",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AdminPartialOrgUnit"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AdminPartialOrgUnit"
+                }
+              }
+            },
+            "description" : "Creates an orgUnit"
+          }
+        },
+        "summary" : "Create an orgUnit",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      },
+      "put" : {
+        "operationId" : "updateOrgUnit",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AdminPartialOrgUnit"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AdminPartialOrgUnit"
+                }
+              }
+            },
+            "description" : "Updates an orgUnit"
+          }
+        },
+        "summary" : "Update an orgUnit",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/orgUnits/activate/{id}" : {
+      "put" : {
+        "operationId" : "activateOrgUnitById",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AdminOrgUnit"
+                }
+              }
+            },
+            "description" : "Activates an orgUnit"
+          }
+        },
+        "summary" : "Activate an orgUnit",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/orgUnits/deactivate/{id}" : {
+      "put" : {
+        "operationId" : "deactivateOrgUnitById",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AdminOrgUnit"
+                }
+              }
+            },
+            "description" : "Deactivates an orgUnit"
+          }
+        },
+        "summary" : "Deactivate an orgUnit",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/orgUnits/{id}" : {
+      "delete" : {
+        "operationId" : "deleteOrgUnitById",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Deletes an orgUnit"
+          }
+        },
+        "summary" : "Delete an orgUnit",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/revisions" : {
+      "get" : {
+        "operationId" : "getRevisions",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "fromInclusive",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "toExclusive",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "username",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRevisionsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get revisions",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/rules" : {
+      "get" : {
+        "operationId" : "getAllRules",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRulesResponse"
+                }
+              }
+            },
+            "description" : "Returns all rules"
+          }
+        },
+        "summary" : "Get all rules",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      },
+      "post" : {
+        "operationId" : "createRule",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AdminPartialRule"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AdminPartialRule"
+                }
+              }
+            },
+            "description" : "Creates an rule"
+          }
+        },
+        "summary" : "Create an rule",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      },
+      "put" : {
+        "operationId" : "updateRule",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AdminPartialRule"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AdminPartialRule"
+                }
+              }
+            },
+            "description" : "Updates an rule"
+          }
+        },
+        "summary" : "Update an rule",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/rules/activate/{id}" : {
+      "put" : {
+        "operationId" : "activateRuleById",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AdminRule"
+                }
+              }
+            },
+            "description" : "Activates an rule"
+          }
+        },
+        "summary" : "Activate an rule",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/rules/active" : {
+      "get" : {
+        "operationId" : "getAllActiveRules",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRulesResponse"
+                }
+              }
+            },
+            "description" : "Returns all active rules"
+          }
+        },
+        "summary" : "Get all active rules",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/rules/active/{actorId}" : {
+      "get" : {
+        "operationId" : "getAllActiveAuditedRulesApplicableToActor",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "actorId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetActiveApplicableRulesResponse"
+                }
+              }
+            },
+            "description" : "Returns all active audited rules applicable to the actor"
+          }
+        },
+        "summary" : "Get all active audited rules applicable to actor",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/rules/deactivate/{id}" : {
+      "put" : {
+        "operationId" : "deactivateRuleById",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AdminRule"
+                }
+              }
+            },
+            "description" : "Deactivates an rule"
+          }
+        },
+        "summary" : "Deactivate an rule",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/rules/{id}" : {
+      "delete" : {
+        "operationId" : "deleteRuleById",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Deletes an rule"
+          }
+        },
+        "summary" : "Delete an rule",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/rules/{ruleId}/clients" : {
+      "get" : {
+        "operationId" : "getActorsThatAreClientInRule",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "ruleId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetApplicableActorsResponse"
+                }
+              }
+            },
+            "description" : "Returns all audited actors that are a client in this rule"
+          }
+        },
+        "summary" : "Get all audited actors that are a client in this rule",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/rules/{ruleId}/servers" : {
+      "get" : {
+        "operationId" : "getActorsThatAreServerInRule",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "ruleId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetApplicableActorsResponse"
+                }
+              }
+            },
+            "description" : "Returns all audited actors that are a server in this rule"
+          }
+        },
+        "summary" : "Get all audited actors that are a server in this rule",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/staged" : {
+      "delete" : {
+        "operationId" : "deleteStaged",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "user",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "ids",
+          "required" : false,
+          "schema" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Delete staged changes by user or by IDs"
+          }
+        },
+        "summary" : "Reset staged changes by user",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      },
+      "post" : {
+        "operationId" : "commitStaged",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "user",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "ids",
+          "required" : false,
+          "schema" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "dryRun",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean",
+            "default" : false
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AdminCommitResponse"
+                }
+              }
+            },
+            "description" : "Commits staged changes by user"
+          }
+        },
+        "summary" : "Commits staged changes by user",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/adminapi/usernames" : {
+      "get" : {
+        "operationId" : "getUsernames",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetUsernamesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get users that made changes",
+        "tags" : [ "ServiceDirectoryAdmin" ]
+      }
+    },
+    "/api/actors/activeActors" : {
+      "get" : {
+        "operationId" : "getActiveActors",
+        "parameters" : [ {
+          "in" : "header",
+          "name" : "If-None-Match",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "type",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ActorType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "orgUnitType",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/OrgUnitType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "orgUnitId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetActiveActorsResponse"
+                }
+              }
+            },
+            "description" : "Returns an ResponseEntity object containing the list of active actors in the body and the ETag value in the response headers"
+          }
+        },
+        "summary" : "Get the active actors from the service directory. result can be filtered by type, orgUnitType and orgUnitId, if needed",
+        "tags" : [ "ServiceDirectory" ]
+      }
+    },
+    "/api/actors/activeOrgUnitActors" : {
+      "get" : {
+        "operationId" : "getActiveOrgUnitActors",
+        "parameters" : [ {
+          "in" : "header",
+          "name" : "If-None-Match",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "type",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ActorType"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetActiveActorsResponse"
+                }
+              }
+            },
+            "description" : "Returns an ResponseEntity object containing the list of active actors in the body and the ETag value in the response headers"
+          }
+        },
+        "summary" : "Get the active actors of the calling actor's org-unit from the service directory. result can be filtered by type, if needed",
+        "tags" : [ "ServiceDirectory" ]
+      }
+    },
+    "/api/actors/metadata/self" : {
+      "put" : {
+        "operationId" : "updateActorMetadata",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ActorMetadata"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ActorResponse"
+                }
+              }
+            },
+            "description" : "Updates the meta data of the actor making the request. If it doesn't exists, create it."
+          }
+        },
+        "summary" : "Update the meta data of the actor making this request. If it doesn't exist, create it.",
+        "tags" : [ "ServiceDirectory" ]
+      }
+    },
+    "/api/actors/self" : {
+      "get" : {
+        "operationId" : "getSelf",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ActorResponse"
+                }
+              }
+            },
+            "description" : "Returns the actor making this request as an ActorResponseDto object"
+          }
+        },
+        "summary" : "Get the actor making this request itself",
+        "tags" : [ "ServiceDirectory" ]
+      }
+    },
+    "/api/actors/topology" : {
+      "post" : {
+        "operationId" : "postTopology",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostTopologyRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "Creates a topology by providing its actors"
+          }
+        },
+        "summary" : "Create a topology by providing its actors",
+        "tags" : [ "ServiceDirectory" ]
+      }
+    },
+    "/api/actors/trustedActors/self" : {
+      "get" : {
+        "operationId" : "getTrustedActors",
+        "parameters" : [ {
+          "in" : "header",
+          "name" : "If-None-Match",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTrustedActorsResponse"
+                }
+              }
+            },
+            "description" : "Returns an ResponseEntity object containing the sets of active actors allowed as clients and servers of the caller in the body and the ETag value in the response headers"
+          }
+        },
+        "summary" : "Get the active actors from the service directory, the caller can trust",
+        "tags" : [ "ServiceDirectory" ]
+      }
+    },
+    "/api/actors/{commonName}" : {
+      "get" : {
+        "operationId" : "getNaturalIdByCommonName",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "commonName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string"
+                }
+              }
+            },
+            "description" : "Gets the natural id of an actor by its common name"
+          }
+        },
+        "summary" : "Get the natural id of an actor by its common name",
+        "tags" : [ "ServiceDirectory" ]
+      }
+    },
+    "/test-helper/commit-staged" : {
+      "post" : {
+        "operationId" : "testHelperCommitStaged",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AdminCommitResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/export" : {
+      "get" : {
+        "operationId" : "testHelperExport",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "withCertificates",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean",
+            "default" : false
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ExportResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/import" : {
+      "post" : {
+        "operationId" : "testHelperImport",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ImportRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population/org-units" : {
+      "post" : {
+        "operationId" : "populateOrgUnits",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/OrgUnitPopulationRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/OrgUnitPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "ActorMetadata" : {
+        "type" : "object",
+        "properties" : {
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "content" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ActorRequest" : {
+        "type" : "object",
+        "properties" : {
+          "certificate" : {
+            "$ref" : "#/components/schemas/Certificate"
+          },
+          "hostName" : {
+            "type" : "string"
+          },
+          "readableName" : {
+            "type" : "string"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/ActorType"
+          }
+        }
+      },
+      "ActorResponse" : {
+        "required" : [ "active", "manualCertificate" ],
+        "type" : "object",
+        "properties" : {
+          "active" : {
+            "type" : "boolean"
+          },
+          "actorMetadata" : {
+            "$ref" : "#/components/schemas/ActorMetadata"
+          },
+          "commonName" : {
+            "type" : "string"
+          },
+          "currentCertificate" : {
+            "$ref" : "#/components/schemas/Certificate"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "manualCertificate" : {
+            "type" : "boolean"
+          },
+          "naturalId" : {
+            "type" : "string"
+          },
+          "networkId" : {
+            "type" : "string"
+          },
+          "orgUnitId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "previousCertificate" : {
+            "$ref" : "#/components/schemas/Certificate"
+          },
+          "readableName" : {
+            "type" : "string"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/ActorType"
+          }
+        }
+      },
+      "ActorType" : {
+        "type" : "string",
+        "enum" : [ "EXT", "GM", "FM", "LSD", "MISC", "WEB", "ZA", "ZR" ]
+      },
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "AdminActor" : {
+        "required" : [ "active", "commonName", "id", "manualCertificate", "readableName", "type" ],
+        "type" : "object",
+        "properties" : {
+          "active" : {
+            "type" : "boolean"
+          },
+          "commonName" : {
+            "type" : "string"
+          },
+          "currentCertificate" : {
+            "$ref" : "#/components/schemas/AdminCertificate"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "manualCertificate" : {
+            "type" : "boolean"
+          },
+          "metadata" : {
+            "$ref" : "#/components/schemas/AdminActorMetadata"
+          },
+          "naturalId" : {
+            "type" : "string"
+          },
+          "networkId" : {
+            "type" : "string"
+          },
+          "previousCertificate" : {
+            "$ref" : "#/components/schemas/AdminCertificate"
+          },
+          "readableName" : {
+            "type" : "string"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/AdminActorType"
+          }
+        }
+      },
+      "AdminActorMetadata" : {
+        "required" : [ "changedAt", "id" ],
+        "type" : "object",
+        "properties" : {
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "content" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "AdminActorSelector" : {
+        "type" : "object",
+        "properties" : {
+          "actorName" : {
+            "type" : "string"
+          },
+          "actorType" : {
+            "type" : "string"
+          },
+          "federalState" : {
+            "type" : "string"
+          },
+          "orgUnitName" : {
+            "type" : "string"
+          },
+          "orgUnitType" : {
+            "type" : "string"
+          }
+        }
+      },
+      "AdminActorType" : {
+        "type" : "string",
+        "enum" : [ "EXT", "GM", "FM", "LSD", "MISC", "WEB", "ZA", "ZR" ]
+      },
+      "AdminCertificate" : {
+        "required" : [ "value" ],
+        "type" : "object",
+        "properties" : {
+          "signatory" : {
+            "type" : "string"
+          },
+          "signature" : {
+            "type" : "string"
+          },
+          "value" : {
+            "type" : "string"
+          }
+        }
+      },
+      "AdminCommitResponse" : {
+        "type" : "object",
+        "properties" : {
+          "actors" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/AdminActor"
+            }
+          },
+          "deletedActors" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "deletedOrgUnits" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "deletedRules" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "orgUnits" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/AdminOrgUnit"
+            }
+          },
+          "rules" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/AdminRule"
+            }
+          }
+        }
+      },
+      "AdminOrgUnit" : {
+        "required" : [ "active", "actors", "federalState", "id", "readableName", "type" ],
+        "type" : "object",
+        "properties" : {
+          "active" : {
+            "type" : "boolean"
+          },
+          "actors" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AdminActor"
+            }
+          },
+          "federalState" : {
+            "$ref" : "#/components/schemas/FederalState"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "readableName" : {
+            "type" : "string"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/AdminOrgUnitType"
+          }
+        }
+      },
+      "AdminOrgUnitType" : {
+        "type" : "string",
+        "enum" : [ "GA", "LA", "ZD" ]
+      },
+      "AdminPartialActor" : {
+        "type" : "object",
+        "properties" : {
+          "active" : {
+            "type" : "boolean"
+          },
+          "commonName" : {
+            "type" : "string"
+          },
+          "currentCertificate" : {
+            "$ref" : "#/components/schemas/AdminCertificate"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "manualCertificate" : {
+            "type" : "boolean"
+          },
+          "networkId" : {
+            "type" : "string"
+          },
+          "orgUnitId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "previousCertificate" : {
+            "$ref" : "#/components/schemas/AdminCertificate"
+          },
+          "readableName" : {
+            "type" : "string"
+          },
+          "stagingStatus" : {
+            "$ref" : "#/components/schemas/StagingStatus"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/AdminActorType"
+          }
+        }
+      },
+      "AdminPartialOrgUnit" : {
+        "type" : "object",
+        "properties" : {
+          "active" : {
+            "type" : "boolean"
+          },
+          "federalState" : {
+            "$ref" : "#/components/schemas/FederalState"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "readableName" : {
+            "type" : "string"
+          },
+          "stagingStatus" : {
+            "$ref" : "#/components/schemas/StagingStatus"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/AdminOrgUnitType"
+          }
+        }
+      },
+      "AdminPartialRule" : {
+        "type" : "object",
+        "properties" : {
+          "active" : {
+            "type" : "boolean"
+          },
+          "client" : {
+            "$ref" : "#/components/schemas/AdminActorSelector"
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "server" : {
+            "$ref" : "#/components/schemas/AdminActorSelector"
+          },
+          "stagingStatus" : {
+            "$ref" : "#/components/schemas/StagingStatus"
+          }
+        }
+      },
+      "AdminRevision" : {
+        "required" : [ "actorPairs", "author", "id", "metadataPairs", "orgUnitPairs", "rulePairs", "timestamp" ],
+        "type" : "object",
+        "properties" : {
+          "actorPairs" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/PairAdminPartialActor"
+            }
+          },
+          "author" : {
+            "type" : "string"
+          },
+          "committer" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "ip" : {
+            "type" : "string"
+          },
+          "metadataPairs" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/PairAdminActorMetadata"
+            }
+          },
+          "orgUnitPairs" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/PairAdminPartialOrgUnit"
+            }
+          },
+          "resource" : {
+            "type" : "string"
+          },
+          "rulePairs" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/PairAdminPartialRule"
+            }
+          },
+          "timestamp" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "AdminRule" : {
+        "required" : [ "active", "client", "id", "server" ],
+        "type" : "object",
+        "properties" : {
+          "active" : {
+            "type" : "boolean"
+          },
+          "client" : {
+            "$ref" : "#/components/schemas/AdminActorSelector"
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "server" : {
+            "$ref" : "#/components/schemas/AdminActorSelector"
+          }
+        }
+      },
+      "AdminStagedEntityAdminPartialActor" : {
+        "required" : [ "author", "id", "stagedEntityType", "stagingStatus" ],
+        "type" : "object",
+        "properties" : {
+          "author" : {
+            "type" : "string"
+          },
+          "entity" : {
+            "$ref" : "#/components/schemas/AdminPartialActor"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "originalEntityId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "stagedEntityType" : {
+            "$ref" : "#/components/schemas/AdminStagedEntityType"
+          },
+          "stagingStatus" : {
+            "$ref" : "#/components/schemas/StagingStatus"
+          }
+        }
+      },
+      "AdminStagedEntityAdminPartialOrgUnit" : {
+        "required" : [ "author", "id", "stagedEntityType", "stagingStatus" ],
+        "type" : "object",
+        "properties" : {
+          "author" : {
+            "type" : "string"
+          },
+          "entity" : {
+            "$ref" : "#/components/schemas/AdminPartialOrgUnit"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "originalEntityId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "stagedEntityType" : {
+            "$ref" : "#/components/schemas/AdminStagedEntityType"
+          },
+          "stagingStatus" : {
+            "$ref" : "#/components/schemas/StagingStatus"
+          }
+        }
+      },
+      "AdminStagedEntityAdminPartialRule" : {
+        "required" : [ "author", "id", "stagedEntityType", "stagingStatus" ],
+        "type" : "object",
+        "properties" : {
+          "author" : {
+            "type" : "string"
+          },
+          "entity" : {
+            "$ref" : "#/components/schemas/AdminPartialRule"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "originalEntityId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "stagedEntityType" : {
+            "$ref" : "#/components/schemas/AdminStagedEntityType"
+          },
+          "stagingStatus" : {
+            "$ref" : "#/components/schemas/StagingStatus"
+          }
+        }
+      },
+      "AdminStagedEntityType" : {
+        "type" : "string",
+        "enum" : [ "ADD", "MOD", "DEL" ]
+      },
+      "Certificate" : {
+        "required" : [ "value" ],
+        "type" : "object",
+        "properties" : {
+          "signatory" : {
+            "type" : "string"
+          },
+          "signature" : {
+            "type" : "string"
+          },
+          "value" : {
+            "type" : "string"
+          }
+        }
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "ExportResponse" : {
+        "required" : [ "orgUnits", "rules" ],
+        "type" : "object",
+        "properties" : {
+          "orgUnits" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AdminOrgUnit"
+            }
+          },
+          "rules" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AdminRule"
+            }
+          }
+        }
+      },
+      "FederalState" : {
+        "type" : "string",
+        "enum" : [ "BW", "BY", "BE", "BB", "HB", "HH", "HE", "MV", "NI", "NW", "RP", "SL", "SN", "ST", "SH", "TH", "DE" ]
+      },
+      "GetActiveActorsResponse" : {
+        "type" : "object",
+        "properties" : {
+          "actors" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ActorResponse"
+            }
+          }
+        }
+      },
+      "GetActiveApplicableRulesResponse" : {
+        "required" : [ "clientRules", "serverRules" ],
+        "type" : "object",
+        "properties" : {
+          "clientRules" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AdminRule"
+            }
+          },
+          "serverRules" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AdminRule"
+            }
+          }
+        }
+      },
+      "GetApplicableActorsResponse" : {
+        "type" : "object",
+        "properties" : {
+          "actors" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AdminActor"
+            }
+          }
+        }
+      },
+      "GetOrgUnitsResponse" : {
+        "required" : [ "orgUnits", "stagedActors", "stagedOrgUnits" ],
+        "type" : "object",
+        "properties" : {
+          "orgUnits" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AdminOrgUnit"
+            }
+          },
+          "stagedActors" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AdminStagedEntityAdminPartialActor"
+            }
+          },
+          "stagedOrgUnits" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AdminStagedEntityAdminPartialOrgUnit"
+            }
+          }
+        }
+      },
+      "GetRevisionsResponse" : {
+        "required" : [ "revisions" ],
+        "type" : "object",
+        "properties" : {
+          "revisions" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AdminRevision"
+            }
+          }
+        }
+      },
+      "GetRulesResponse" : {
+        "required" : [ "rules", "stagedRules" ],
+        "type" : "object",
+        "properties" : {
+          "rules" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AdminRule"
+            }
+          },
+          "stagedRules" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AdminStagedEntityAdminPartialRule"
+            }
+          }
+        }
+      },
+      "GetTrustedActorsResponse" : {
+        "required" : [ "trustedInboundActors", "trustedOutboundActors" ],
+        "type" : "object",
+        "properties" : {
+          "trustedInboundActors" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ActorResponse"
+            }
+          },
+          "trustedOutboundActors" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ActorResponse"
+            }
+          }
+        }
+      },
+      "GetUsernamesResponse" : {
+        "required" : [ "usernames" ],
+        "type" : "object",
+        "properties" : {
+          "usernames" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        }
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "ImportRequest" : {
+        "required" : [ "orgUnits", "rules" ],
+        "type" : "object",
+        "properties" : {
+          "orgUnits" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AdminOrgUnit"
+            }
+          },
+          "rules" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AdminRule"
+            }
+          }
+        }
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "OrgUnitPopulationRequest" : {
+        "required" : [ "numberOfEntitiesToPopulate" ],
+        "type" : "object",
+        "properties" : {
+          "generateCertificates" : {
+            "type" : "boolean"
+          },
+          "numberOfEntitiesToPopulate" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "OrgUnitPopulationResponse" : {
+        "required" : [ "populations" ],
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AdminOrgUnit"
+            }
+          }
+        }
+      },
+      "OrgUnitType" : {
+        "type" : "string",
+        "enum" : [ "GA", "LA", "ZD" ]
+      },
+      "PairAdminActorMetadata" : {
+        "type" : "object",
+        "properties" : {
+          "newEntity" : {
+            "$ref" : "#/components/schemas/AdminActorMetadata"
+          },
+          "oldEntity" : {
+            "$ref" : "#/components/schemas/AdminActorMetadata"
+          }
+        }
+      },
+      "PairAdminPartialActor" : {
+        "type" : "object",
+        "properties" : {
+          "newEntity" : {
+            "$ref" : "#/components/schemas/AdminPartialActor"
+          },
+          "oldEntity" : {
+            "$ref" : "#/components/schemas/AdminPartialActor"
+          }
+        }
+      },
+      "PairAdminPartialOrgUnit" : {
+        "type" : "object",
+        "properties" : {
+          "newEntity" : {
+            "$ref" : "#/components/schemas/AdminPartialOrgUnit"
+          },
+          "oldEntity" : {
+            "$ref" : "#/components/schemas/AdminPartialOrgUnit"
+          }
+        }
+      },
+      "PairAdminPartialRule" : {
+        "type" : "object",
+        "properties" : {
+          "newEntity" : {
+            "$ref" : "#/components/schemas/AdminPartialRule"
+          },
+          "oldEntity" : {
+            "$ref" : "#/components/schemas/AdminPartialRule"
+          }
+        }
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "PostTopologyRequest" : {
+        "type" : "object",
+        "properties" : {
+          "actorsRequest" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ActorRequest"
+            }
+          }
+        }
+      },
+      "StagingStatus" : {
+        "type" : "string",
+        "enum" : [ "WORK_IN_PROGRESS", "READY_FOR_REVIEW" ]
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/backend/service-directory/openApi.yaml b/backend/service-directory/openApi.yaml
deleted file mode 100644
index 82e08a251..000000000
--- a/backend/service-directory/openApi.yaml
+++ /dev/null
@@ -1,1661 +0,0 @@
-# Copyright 2025 SCOOP Software GmbH, cronn GmbH
-# SPDX-License-Identifier: Apache-2.0
-
-openapi: 3.0.1
-info:
-  description: This is the api for Service Directory
-  title: Service Directory Api
-  version: "0.1"
-servers:
-- url: http://localhost:8083
-paths:
-  /adminapi/actors:
-    post:
-      operationId: createActor
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AdminPartialActor"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/AdminPartialActor"
-          description: Creates an actor
-      summary: Create an actor
-      tags:
-      - ServiceDirectoryAdmin
-    put:
-      operationId: updateActor
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AdminPartialActor"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/AdminPartialActor"
-          description: Updates an actor
-      summary: Update an actor
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/actors/activate/{id}:
-    put:
-      operationId: activateActorById
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/AdminActor"
-          description: Activates an actor
-      summary: Activate an actor
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/actors/deactivate/{id}:
-    put:
-      operationId: deactivateActorById
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/AdminActor"
-          description: Deactivates an actor
-      summary: Deactivate an actor
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/actors/metadata/{actorId}:
-    get:
-      operationId: getActorMetadataByActorId
-      parameters:
-      - in: path
-        name: actorId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/AdminActorMetadata"
-          description: Gets the meta data of an actor
-      summary: Get the meta data of an actor by its actor id
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/actors/{actorId}/clients:
-    get:
-      operationId: getClientActorsForActor
-      parameters:
-      - in: path
-        name: actorId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetApplicableActorsResponse"
-          description: Returns all audited actors that are a valid client for this
-            actor
-      summary: Get all audited actors that are a valid client for this actor
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/actors/{actorId}/servers:
-    get:
-      operationId: getServerActorsForActor
-      parameters:
-      - in: path
-        name: actorId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetApplicableActorsResponse"
-          description: Returns all audited actors that are a valid server for this
-            actor
-      summary: Get all audited actors that are a valid server for this actor
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/actors/{id}:
-    delete:
-      operationId: deleteActorById
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Deletes an actor by its id
-      summary: Delete an actor by its id
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/export:
-    get:
-      operationId: getExport
-      parameters:
-      - in: query
-        name: withCertificates
-        required: false
-        schema:
-          type: boolean
-          default: false
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/ExportResponse"
-          description: Returns a JSON with all relevant (configuration) data of the
-            service-directory
-      summary: Export current service-directory data without staged data
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/import:
-    post:
-      operationId: postImport
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ImportRequest"
-        required: true
-      responses:
-        "200":
-          description: Import from exported data into an empty database
-      summary: Import from exported data into an empty database
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/orgUnits:
-    get:
-      operationId: getAllOrgUnits
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetOrgUnitsResponse"
-          description: Returns all orgUnits
-      summary: Get all orgUnits
-      tags:
-      - ServiceDirectoryAdmin
-    post:
-      operationId: createOrgUnit
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AdminPartialOrgUnit"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/AdminPartialOrgUnit"
-          description: Creates an orgUnit
-      summary: Create an orgUnit
-      tags:
-      - ServiceDirectoryAdmin
-    put:
-      operationId: updateOrgUnit
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AdminPartialOrgUnit"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/AdminPartialOrgUnit"
-          description: Updates an orgUnit
-      summary: Update an orgUnit
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/orgUnits/activate/{id}:
-    put:
-      operationId: activateOrgUnitById
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/AdminOrgUnit"
-          description: Activates an orgUnit
-      summary: Activate an orgUnit
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/orgUnits/deactivate/{id}:
-    put:
-      operationId: deactivateOrgUnitById
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/AdminOrgUnit"
-          description: Deactivates an orgUnit
-      summary: Deactivate an orgUnit
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/orgUnits/{id}:
-    delete:
-      operationId: deleteOrgUnitById
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Deletes an orgUnit
-      summary: Delete an orgUnit
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/revisions:
-    get:
-      operationId: getRevisions
-      parameters:
-      - in: query
-        name: fromInclusive
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: toExclusive
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: username
-        required: false
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRevisionsResponse"
-          description: OK
-      summary: Get revisions
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/rules:
-    get:
-      operationId: getAllRules
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRulesResponse"
-          description: Returns all rules
-      summary: Get all rules
-      tags:
-      - ServiceDirectoryAdmin
-    post:
-      operationId: createRule
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AdminPartialRule"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/AdminPartialRule"
-          description: Creates an rule
-      summary: Create an rule
-      tags:
-      - ServiceDirectoryAdmin
-    put:
-      operationId: updateRule
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AdminPartialRule"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/AdminPartialRule"
-          description: Updates an rule
-      summary: Update an rule
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/rules/activate/{id}:
-    put:
-      operationId: activateRuleById
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/AdminRule"
-          description: Activates an rule
-      summary: Activate an rule
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/rules/active:
-    get:
-      operationId: getAllActiveRules
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRulesResponse"
-          description: Returns all active rules
-      summary: Get all active rules
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/rules/active/{actorId}:
-    get:
-      operationId: getAllActiveAuditedRulesApplicableToActor
-      parameters:
-      - in: path
-        name: actorId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetActiveApplicableRulesResponse"
-          description: Returns all active audited rules applicable to the actor
-      summary: Get all active audited rules applicable to actor
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/rules/deactivate/{id}:
-    put:
-      operationId: deactivateRuleById
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/AdminRule"
-          description: Deactivates an rule
-      summary: Deactivate an rule
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/rules/{id}:
-    delete:
-      operationId: deleteRuleById
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Deletes an rule
-      summary: Delete an rule
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/rules/{ruleId}/clients:
-    get:
-      operationId: getActorsThatAreClientInRule
-      parameters:
-      - in: path
-        name: ruleId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetApplicableActorsResponse"
-          description: Returns all audited actors that are a client in this rule
-      summary: Get all audited actors that are a client in this rule
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/rules/{ruleId}/servers:
-    get:
-      operationId: getActorsThatAreServerInRule
-      parameters:
-      - in: path
-        name: ruleId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetApplicableActorsResponse"
-          description: Returns all audited actors that are a server in this rule
-      summary: Get all audited actors that are a server in this rule
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/staged:
-    delete:
-      operationId: deleteStaged
-      parameters:
-      - in: query
-        name: user
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: ids
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-      responses:
-        "200":
-          description: Delete staged changes by user or by IDs
-      summary: Reset staged changes by user
-      tags:
-      - ServiceDirectoryAdmin
-    post:
-      operationId: commitStaged
-      parameters:
-      - in: query
-        name: user
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: ids
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-      - in: query
-        name: dryRun
-        required: false
-        schema:
-          type: boolean
-          default: false
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AdminCommitResponse"
-          description: Commits staged changes by user
-      summary: Commits staged changes by user
-      tags:
-      - ServiceDirectoryAdmin
-  /adminapi/usernames:
-    get:
-      operationId: getUsernames
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetUsernamesResponse"
-          description: OK
-      summary: Get users that made changes
-      tags:
-      - ServiceDirectoryAdmin
-  /api/actors/activeActors:
-    get:
-      operationId: getActiveActors
-      parameters:
-      - in: header
-        name: If-None-Match
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: type
-        required: false
-        schema:
-          $ref: "#/components/schemas/ActorType"
-      - in: query
-        name: orgUnitType
-        required: false
-        schema:
-          $ref: "#/components/schemas/OrgUnitType"
-      - in: query
-        name: orgUnitId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetActiveActorsResponse"
-          description: Returns an ResponseEntity object containing the list of active
-            actors in the body and the ETag value in the response headers
-      summary: "Get the active actors from the service directory. result can be filtered\
-        \ by type, orgUnitType and orgUnitId, if needed"
-      tags:
-      - ServiceDirectory
-  /api/actors/activeOrgUnitActors:
-    get:
-      operationId: getActiveOrgUnitActors
-      parameters:
-      - in: header
-        name: If-None-Match
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: type
-        required: false
-        schema:
-          $ref: "#/components/schemas/ActorType"
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetActiveActorsResponse"
-          description: Returns an ResponseEntity object containing the list of active
-            actors in the body and the ETag value in the response headers
-      summary: "Get the active actors of the calling actor's org-unit from the service\
-        \ directory. result can be filtered by type, if needed"
-      tags:
-      - ServiceDirectory
-  /api/actors/metadata/self:
-    put:
-      operationId: updateActorMetadata
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ActorMetadata"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ActorResponse"
-          description: "Updates the meta data of the actor making the request. If\
-            \ it doesn't exists, create it."
-      summary: "Update the meta data of the actor making this request. If it doesn't\
-        \ exist, create it."
-      tags:
-      - ServiceDirectory
-  /api/actors/self:
-    get:
-      operationId: getSelf
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ActorResponse"
-          description: Returns the actor making this request as an ActorResponseDto
-            object
-      summary: Get the actor making this request itself
-      tags:
-      - ServiceDirectory
-  /api/actors/topology:
-    post:
-      operationId: postTopology
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostTopologyRequest"
-        required: true
-      responses:
-        "200":
-          description: Creates a topology by providing its actors
-      summary: Create a topology by providing its actors
-      tags:
-      - ServiceDirectory
-  /api/actors/trustedActors/self:
-    get:
-      operationId: getTrustedActors
-      parameters:
-      - in: header
-        name: If-None-Match
-        required: false
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTrustedActorsResponse"
-          description: Returns an ResponseEntity object containing the sets of active
-            actors allowed as clients and servers of the caller in the body and the
-            ETag value in the response headers
-      summary: "Get the active actors from the service directory, the caller can trust"
-      tags:
-      - ServiceDirectory
-  /api/actors/{commonName}:
-    get:
-      operationId: getNaturalIdByCommonName
-      parameters:
-      - in: path
-        name: commonName
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-          description: Gets the natural id of an actor by its common name
-      summary: Get the natural id of an actor by its common name
-      tags:
-      - ServiceDirectory
-  /test-helper/commit-staged:
-    post:
-      operationId: testHelperCommitStaged
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AdminCommitResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/export:
-    get:
-      operationId: testHelperExport
-      parameters:
-      - in: query
-        name: withCertificates
-        required: false
-        schema:
-          type: boolean
-          default: false
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ExportResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/import:
-    post:
-      operationId: testHelperImport
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ImportRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population/org-units:
-    post:
-      operationId: populateOrgUnits
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/OrgUnitPopulationRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/OrgUnitPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-components:
-  schemas:
-    ActorMetadata:
-      type: object
-      properties:
-        changedAt:
-          type: string
-          format: date-time
-        content:
-          type: string
-        id:
-          type: string
-          format: uuid
-    ActorRequest:
-      type: object
-      properties:
-        certificate:
-          $ref: "#/components/schemas/Certificate"
-        hostName:
-          type: string
-        readableName:
-          type: string
-        type:
-          $ref: "#/components/schemas/ActorType"
-    ActorResponse:
-      type: object
-      properties:
-        active:
-          type: boolean
-        actorMetadata:
-          $ref: "#/components/schemas/ActorMetadata"
-        commonName:
-          type: string
-        currentCertificate:
-          $ref: "#/components/schemas/Certificate"
-        id:
-          type: string
-          format: uuid
-        manualCertificate:
-          type: boolean
-        naturalId:
-          type: string
-        networkId:
-          type: string
-        orgUnitId:
-          type: string
-          format: uuid
-        previousCertificate:
-          $ref: "#/components/schemas/Certificate"
-        readableName:
-          type: string
-        type:
-          $ref: "#/components/schemas/ActorType"
-      required:
-      - active
-      - manualCertificate
-    ActorType:
-      type: string
-      enum:
-      - EXT
-      - GM
-      - FM
-      - LSD
-      - MISC
-      - WEB
-      - ZA
-      - ZR
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    AdminActor:
-      type: object
-      properties:
-        active:
-          type: boolean
-        commonName:
-          type: string
-        currentCertificate:
-          $ref: "#/components/schemas/AdminCertificate"
-        id:
-          type: string
-          format: uuid
-        manualCertificate:
-          type: boolean
-        metadata:
-          $ref: "#/components/schemas/AdminActorMetadata"
-        naturalId:
-          type: string
-        networkId:
-          type: string
-        previousCertificate:
-          $ref: "#/components/schemas/AdminCertificate"
-        readableName:
-          type: string
-        type:
-          $ref: "#/components/schemas/AdminActorType"
-      required:
-      - active
-      - commonName
-      - id
-      - manualCertificate
-      - readableName
-      - type
-    AdminActorMetadata:
-      type: object
-      properties:
-        changedAt:
-          type: string
-          format: date-time
-        content:
-          type: string
-        id:
-          type: string
-          format: uuid
-      required:
-      - changedAt
-      - id
-    AdminActorSelector:
-      type: object
-      properties:
-        actorName:
-          type: string
-        actorType:
-          type: string
-        federalState:
-          type: string
-        orgUnitName:
-          type: string
-        orgUnitType:
-          type: string
-    AdminActorType:
-      type: string
-      enum:
-      - EXT
-      - GM
-      - FM
-      - LSD
-      - MISC
-      - WEB
-      - ZA
-      - ZR
-    AdminCertificate:
-      type: object
-      properties:
-        signatory:
-          type: string
-        signature:
-          type: string
-        value:
-          type: string
-      required:
-      - value
-    AdminCommitResponse:
-      type: object
-      properties:
-        actors:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/AdminActor"
-        deletedActors:
-          type: array
-          items:
-            type: string
-            format: uuid
-        deletedOrgUnits:
-          type: array
-          items:
-            type: string
-            format: uuid
-        deletedRules:
-          type: array
-          items:
-            type: string
-            format: uuid
-        orgUnits:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/AdminOrgUnit"
-        rules:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/AdminRule"
-    AdminOrgUnit:
-      type: object
-      properties:
-        active:
-          type: boolean
-        actors:
-          type: array
-          items:
-            $ref: "#/components/schemas/AdminActor"
-        federalState:
-          $ref: "#/components/schemas/FederalState"
-        id:
-          type: string
-          format: uuid
-        readableName:
-          type: string
-        type:
-          $ref: "#/components/schemas/AdminOrgUnitType"
-      required:
-      - active
-      - actors
-      - federalState
-      - id
-      - readableName
-      - type
-    AdminOrgUnitType:
-      type: string
-      enum:
-      - GA
-      - LA
-      - ZD
-    AdminPartialActor:
-      type: object
-      properties:
-        active:
-          type: boolean
-        commonName:
-          type: string
-        currentCertificate:
-          $ref: "#/components/schemas/AdminCertificate"
-        id:
-          type: string
-          format: uuid
-        manualCertificate:
-          type: boolean
-        networkId:
-          type: string
-        orgUnitId:
-          type: string
-          format: uuid
-        previousCertificate:
-          $ref: "#/components/schemas/AdminCertificate"
-        readableName:
-          type: string
-        stagingStatus:
-          $ref: "#/components/schemas/StagingStatus"
-        type:
-          $ref: "#/components/schemas/AdminActorType"
-    AdminPartialOrgUnit:
-      type: object
-      properties:
-        active:
-          type: boolean
-        federalState:
-          $ref: "#/components/schemas/FederalState"
-        id:
-          type: string
-          format: uuid
-        readableName:
-          type: string
-        stagingStatus:
-          $ref: "#/components/schemas/StagingStatus"
-        type:
-          $ref: "#/components/schemas/AdminOrgUnitType"
-    AdminPartialRule:
-      type: object
-      properties:
-        active:
-          type: boolean
-        client:
-          $ref: "#/components/schemas/AdminActorSelector"
-        description:
-          type: string
-        id:
-          type: string
-          format: uuid
-        server:
-          $ref: "#/components/schemas/AdminActorSelector"
-        stagingStatus:
-          $ref: "#/components/schemas/StagingStatus"
-    AdminRevision:
-      type: object
-      properties:
-        actorPairs:
-          type: array
-          items:
-            $ref: "#/components/schemas/PairAdminPartialActor"
-        author:
-          type: string
-        committer:
-          type: string
-        id:
-          type: integer
-          format: int64
-        ip:
-          type: string
-        metadataPairs:
-          type: array
-          items:
-            $ref: "#/components/schemas/PairAdminActorMetadata"
-        orgUnitPairs:
-          type: array
-          items:
-            $ref: "#/components/schemas/PairAdminPartialOrgUnit"
-        resource:
-          type: string
-        rulePairs:
-          type: array
-          items:
-            $ref: "#/components/schemas/PairAdminPartialRule"
-        timestamp:
-          type: string
-          format: date-time
-      required:
-      - actorPairs
-      - author
-      - id
-      - metadataPairs
-      - orgUnitPairs
-      - rulePairs
-      - timestamp
-    AdminRule:
-      type: object
-      properties:
-        active:
-          type: boolean
-        client:
-          $ref: "#/components/schemas/AdminActorSelector"
-        description:
-          type: string
-        id:
-          type: string
-          format: uuid
-        server:
-          $ref: "#/components/schemas/AdminActorSelector"
-      required:
-      - active
-      - client
-      - id
-      - server
-    AdminStagedEntityAdminPartialActor:
-      type: object
-      properties:
-        author:
-          type: string
-        entity:
-          $ref: "#/components/schemas/AdminPartialActor"
-        id:
-          type: string
-          format: uuid
-        originalEntityId:
-          type: string
-          format: uuid
-        stagedEntityType:
-          $ref: "#/components/schemas/AdminStagedEntityType"
-        stagingStatus:
-          $ref: "#/components/schemas/StagingStatus"
-      required:
-      - author
-      - id
-      - stagedEntityType
-      - stagingStatus
-    AdminStagedEntityAdminPartialOrgUnit:
-      type: object
-      properties:
-        author:
-          type: string
-        entity:
-          $ref: "#/components/schemas/AdminPartialOrgUnit"
-        id:
-          type: string
-          format: uuid
-        originalEntityId:
-          type: string
-          format: uuid
-        stagedEntityType:
-          $ref: "#/components/schemas/AdminStagedEntityType"
-        stagingStatus:
-          $ref: "#/components/schemas/StagingStatus"
-      required:
-      - author
-      - id
-      - stagedEntityType
-      - stagingStatus
-    AdminStagedEntityAdminPartialRule:
-      type: object
-      properties:
-        author:
-          type: string
-        entity:
-          $ref: "#/components/schemas/AdminPartialRule"
-        id:
-          type: string
-          format: uuid
-        originalEntityId:
-          type: string
-          format: uuid
-        stagedEntityType:
-          $ref: "#/components/schemas/AdminStagedEntityType"
-        stagingStatus:
-          $ref: "#/components/schemas/StagingStatus"
-      required:
-      - author
-      - id
-      - stagedEntityType
-      - stagingStatus
-    AdminStagedEntityType:
-      type: string
-      enum:
-      - ADD
-      - MOD
-      - DEL
-    Certificate:
-      type: object
-      properties:
-        signatory:
-          type: string
-        signature:
-          type: string
-        value:
-          type: string
-      required:
-      - value
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    ExportResponse:
-      type: object
-      properties:
-        orgUnits:
-          type: array
-          items:
-            $ref: "#/components/schemas/AdminOrgUnit"
-        rules:
-          type: array
-          items:
-            $ref: "#/components/schemas/AdminRule"
-      required:
-      - orgUnits
-      - rules
-    FederalState:
-      type: string
-      enum:
-      - BW
-      - BY
-      - BE
-      - BB
-      - HB
-      - HH
-      - HE
-      - MV
-      - NI
-      - NW
-      - RP
-      - SL
-      - SN
-      - ST
-      - SH
-      - TH
-      - DE
-    GetActiveActorsResponse:
-      type: object
-      properties:
-        actors:
-          type: array
-          items:
-            $ref: "#/components/schemas/ActorResponse"
-    GetActiveApplicableRulesResponse:
-      type: object
-      properties:
-        clientRules:
-          type: array
-          items:
-            $ref: "#/components/schemas/AdminRule"
-        serverRules:
-          type: array
-          items:
-            $ref: "#/components/schemas/AdminRule"
-      required:
-      - clientRules
-      - serverRules
-    GetApplicableActorsResponse:
-      type: object
-      properties:
-        actors:
-          type: array
-          items:
-            $ref: "#/components/schemas/AdminActor"
-    GetOrgUnitsResponse:
-      type: object
-      properties:
-        orgUnits:
-          type: array
-          items:
-            $ref: "#/components/schemas/AdminOrgUnit"
-        stagedActors:
-          type: array
-          items:
-            $ref: "#/components/schemas/AdminStagedEntityAdminPartialActor"
-        stagedOrgUnits:
-          type: array
-          items:
-            $ref: "#/components/schemas/AdminStagedEntityAdminPartialOrgUnit"
-      required:
-      - orgUnits
-      - stagedActors
-      - stagedOrgUnits
-    GetRevisionsResponse:
-      type: object
-      properties:
-        revisions:
-          type: array
-          items:
-            $ref: "#/components/schemas/AdminRevision"
-      required:
-      - revisions
-    GetRulesResponse:
-      type: object
-      properties:
-        rules:
-          type: array
-          items:
-            $ref: "#/components/schemas/AdminRule"
-        stagedRules:
-          type: array
-          items:
-            $ref: "#/components/schemas/AdminStagedEntityAdminPartialRule"
-      required:
-      - rules
-      - stagedRules
-    GetTrustedActorsResponse:
-      type: object
-      properties:
-        trustedInboundActors:
-          type: array
-          items:
-            $ref: "#/components/schemas/ActorResponse"
-          uniqueItems: true
-        trustedOutboundActors:
-          type: array
-          items:
-            $ref: "#/components/schemas/ActorResponse"
-          uniqueItems: true
-      required:
-      - trustedInboundActors
-      - trustedOutboundActors
-    GetUsernamesResponse:
-      type: object
-      properties:
-        usernames:
-          type: array
-          items:
-            type: string
-      required:
-      - usernames
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    ImportRequest:
-      type: object
-      properties:
-        orgUnits:
-          type: array
-          items:
-            $ref: "#/components/schemas/AdminOrgUnit"
-          uniqueItems: true
-        rules:
-          type: array
-          items:
-            $ref: "#/components/schemas/AdminRule"
-          uniqueItems: true
-      required:
-      - orgUnits
-      - rules
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    OrgUnitPopulationRequest:
-      type: object
-      properties:
-        generateCertificates:
-          type: boolean
-        numberOfEntitiesToPopulate:
-          type: integer
-          format: int32
-      required:
-      - numberOfEntitiesToPopulate
-    OrgUnitPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/AdminOrgUnit"
-      required:
-      - populations
-    OrgUnitType:
-      type: string
-      enum:
-      - GA
-      - LA
-      - ZD
-    PairAdminActorMetadata:
-      type: object
-      properties:
-        newEntity:
-          $ref: "#/components/schemas/AdminActorMetadata"
-        oldEntity:
-          $ref: "#/components/schemas/AdminActorMetadata"
-    PairAdminPartialActor:
-      type: object
-      properties:
-        newEntity:
-          $ref: "#/components/schemas/AdminPartialActor"
-        oldEntity:
-          $ref: "#/components/schemas/AdminPartialActor"
-    PairAdminPartialOrgUnit:
-      type: object
-      properties:
-        newEntity:
-          $ref: "#/components/schemas/AdminPartialOrgUnit"
-        oldEntity:
-          $ref: "#/components/schemas/AdminPartialOrgUnit"
-    PairAdminPartialRule:
-      type: object
-      properties:
-        newEntity:
-          $ref: "#/components/schemas/AdminPartialRule"
-        oldEntity:
-          $ref: "#/components/schemas/AdminPartialRule"
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    PostTopologyRequest:
-      type: object
-      properties:
-        actorsRequest:
-          type: array
-          items:
-            $ref: "#/components/schemas/ActorRequest"
-    StagingStatus:
-      type: string
-      enum:
-      - WORK_IN_PROGRESS
-      - READY_FOR_REVIEW
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
diff --git a/backend/statistics/openApi.json b/backend/statistics/openApi.json
new file mode 100644
index 000000000..43a99098d
--- /dev/null
+++ b/backend/statistics/openApi.json
@@ -0,0 +1,4839 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is the API for the statistics module",
+    "title" : "Statistics Module API",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8087"
+  } ],
+  "paths" : {
+    "/central-repository/evaluation-template" : {
+      "get" : {
+        "operationId" : "getEvaluationTemplatesFromRepository",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetEvaluationTemplatesFromRepositoryResponse"
+                }
+              }
+            },
+            "description" : "Get meta data of uploaded evaluation templates"
+          }
+        },
+        "summary" : "Meta data of uploaded evaluation templates",
+        "tags" : [ "StatisticsCentralRepository" ]
+      },
+      "post" : {
+        "operationId" : "uploadEvaluationTemplateToRepository",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddEvaluationTemplateToRepositoryRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/EvaluationTemplateFromRepository"
+                }
+              }
+            },
+            "description" : "Returns the information about the uploaded evaluation template"
+          }
+        },
+        "summary" : "Upload an evaluation template to the central repository",
+        "tags" : [ "StatisticsCentralRepository" ]
+      }
+    },
+    "/central-repository/evaluation-template/{id}/{version}" : {
+      "delete" : {
+        "operationId" : "deleteEvaluationTemplateFromRepository",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "path",
+          "name" : "version",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Returned when the evaluation template was deleted"
+          }
+        },
+        "summary" : "Delete an evaluation template from the central repository",
+        "tags" : [ "StatisticsCentralRepository" ]
+      },
+      "get" : {
+        "operationId" : "getEvaluationTemplateFromRepository",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "path",
+          "name" : "version",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/EvaluationTemplateDetailsFromRepository"
+                }
+              }
+            },
+            "description" : "Get information about an uploaded evaluation template"
+          }
+        },
+        "summary" : "Information about an uploaded evaluation template",
+        "tags" : [ "StatisticsCentralRepository" ]
+      },
+      "post" : {
+        "operationId" : "downloadEvaluationTemplateFromRepository",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "path",
+          "name" : "version",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "uuid"
+                }
+              }
+            },
+            "description" : "The id of the locally stored evaluation template"
+          }
+        },
+        "summary" : "Download an evaluation template from the central repository",
+        "tags" : [ "StatisticsCentralRepository" ]
+      }
+    },
+    "/data-export/diagram/{diagramId}" : {
+      "get" : {
+        "operationId" : "exportDiagramData",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "diagramId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "Exported diagram data"
+          }
+        },
+        "summary" : "Export diagram data",
+        "tags" : [ "DataExport" ]
+      }
+    },
+    "/data-export/evaluation/{evaluationId}" : {
+      "get" : {
+        "operationId" : "exportEvaluationData",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "evaluationId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "Exported evaluation raw data"
+          }
+        },
+        "summary" : "Export evaluation data",
+        "tags" : [ "DataExport" ]
+      }
+    },
+    "/data-export/report/{reportId}" : {
+      "get" : {
+        "operationId" : "exportReportData",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "reportId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "Exported report raw data"
+          }
+        },
+        "summary" : "Export report data",
+        "tags" : [ "DataExport" ]
+      }
+    },
+    "/data-source" : {
+      "get" : {
+        "operationId" : "getAvailableDataSources",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAvailableDataSourcesResponse"
+                }
+              }
+            },
+            "description" : "The aggregated available data sources"
+          }
+        },
+        "summary" : "Get available data sources",
+        "tags" : [ "DataSource" ]
+      }
+    },
+    "/evaluation" : {
+      "post" : {
+        "operationId" : "addEvaluation",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "oneOf" : [ {
+                  "$ref" : "#/components/schemas/AddEvaluationWithDataSourcesRequest"
+                }, {
+                  "$ref" : "#/components/schemas/AddEvaluationWithTemplateRequest"
+                } ]
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "uuid"
+                }
+              }
+            },
+            "description" : "The UUID of the evaluation"
+          }
+        },
+        "summary" : "Add evaluation",
+        "tags" : [ "Evaluation" ]
+      }
+    },
+    "/evaluation-template" : {
+      "get" : {
+        "operationId" : "getAllMinimalEvaluationTemplateInfos",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAllMinimalEvaluationTemplateInfosResponse"
+                }
+              }
+            },
+            "description" : "Minimal info to all evaluation templates"
+          }
+        },
+        "summary" : "Get the minimal info of all evaluation templates",
+        "tags" : [ "EvaluationTemplate" ]
+      },
+      "post" : {
+        "operationId" : "addEvaluationTemplate",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "oneOf" : [ {
+                  "$ref" : "#/components/schemas/AddEvaluationTemplateFromEvaluationRequest"
+                }, {
+                  "$ref" : "#/components/schemas/AddEvaluationTemplateWithDataSourcesRequest"
+                } ]
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/EvaluationTemplate"
+                }
+              }
+            },
+            "description" : "The added evaluation template"
+          }
+        },
+        "summary" : "Add an evaluation template",
+        "tags" : [ "EvaluationTemplate" ]
+      }
+    },
+    "/evaluation-template/expected-template/{evaluationId}" : {
+      "get" : {
+        "operationId" : "getTemplateInformation",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "evaluationId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ExpectedEvaluationTemplate"
+                }
+              }
+            },
+            "description" : "The information for a template based on this evaluation"
+          }
+        },
+        "summary" : "Get the information for the expected template",
+        "tags" : [ "EvaluationTemplate" ]
+      }
+    },
+    "/evaluation-template/overview" : {
+      "post" : {
+        "operationId" : "getEvaluationTemplateOverview",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetEvaluationTemplatesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetEvaluationTemplatesResponse"
+                }
+              }
+            },
+            "description" : "Evaluation template overview page"
+          }
+        },
+        "summary" : "Get evaluation template entries for the overview page",
+        "tags" : [ "EvaluationTemplate" ]
+      }
+    },
+    "/evaluation-template/{templateId}" : {
+      "delete" : {
+        "operationId" : "deleteEvaluationTemplate",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "templateId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Returned when the evaluation template is deleted"
+          }
+        },
+        "summary" : "Delete an evaluation template",
+        "tags" : [ "EvaluationTemplate" ]
+      },
+      "get" : {
+        "operationId" : "getEvaluationTemplate",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "templateId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/EvaluationTemplate"
+                }
+              }
+            },
+            "description" : "The evaluation template"
+          }
+        },
+        "summary" : "Get an evaluation template",
+        "tags" : [ "EvaluationTemplate" ]
+      },
+      "patch" : {
+        "operationId" : "updateEvaluationTemplate",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "templateId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateEvaluationTemplateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/EvaluationTemplate"
+                }
+              }
+            },
+            "description" : "The patched evaluation template"
+          }
+        },
+        "summary" : "Change name and description of an evaluation template",
+        "tags" : [ "EvaluationTemplate" ]
+      }
+    },
+    "/evaluation/analysis" : {
+      "post" : {
+        "operationId" : "addAnalysis",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddAnalysisRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Analysis"
+                }
+              }
+            },
+            "description" : "The added analysis"
+          }
+        },
+        "summary" : "Add an analysis",
+        "tags" : [ "Analysis" ]
+      }
+    },
+    "/evaluation/analysis/diagram/{diagramId}" : {
+      "delete" : {
+        "operationId" : "deleteDiagram",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "diagramId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Returned when the diagram is deleted"
+          }
+        },
+        "summary" : "Delete a diagram",
+        "tags" : [ "Analysis" ]
+      },
+      "patch" : {
+        "operationId" : "updateDiagram",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "diagramId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateDiagramRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Diagram"
+                }
+              }
+            },
+            "description" : "The patched diagram"
+          }
+        },
+        "summary" : "Change title and description of a diagram",
+        "tags" : [ "Analysis" ]
+      }
+    },
+    "/evaluation/analysis/{analysisId}" : {
+      "delete" : {
+        "operationId" : "deleteAnalysis",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "analysisId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Returned when the analysis is deleted"
+          }
+        },
+        "summary" : "Delete an analysis",
+        "tags" : [ "Analysis" ]
+      },
+      "get" : {
+        "operationId" : "getAnalysis",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "analysisId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AnalysisWithDiagrams"
+                }
+              }
+            },
+            "description" : "The requested analysis"
+          }
+        },
+        "summary" : "Get an analysis by id",
+        "tags" : [ "Analysis" ]
+      },
+      "patch" : {
+        "operationId" : "updateAnalysis",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "analysisId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateAnalysisRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Analysis"
+                }
+              }
+            },
+            "description" : "The patched analysis"
+          }
+        },
+        "summary" : "Change the name of an analysis",
+        "tags" : [ "Analysis" ]
+      },
+      "post" : {
+        "operationId" : "addDiagram",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "analysisId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddDiagramRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "uuid"
+                }
+              }
+            },
+            "description" : "The id of the diagram"
+          }
+        },
+        "summary" : "Add a diagram to the analysis",
+        "tags" : [ "Analysis" ]
+      }
+    },
+    "/evaluation/clone" : {
+      "post" : {
+        "operationId" : "cloneEvaluation",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CloneEvaluationRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "uuid"
+                }
+              }
+            },
+            "description" : "The UUID of the cloned evaluation"
+          }
+        },
+        "summary" : "Clone an evaluation",
+        "tags" : [ "Evaluation" ]
+      }
+    },
+    "/evaluation/completeness/{evaluationId}" : {
+      "get" : {
+        "operationId" : "getCompletenessInformation",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "evaluationId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetCompletenessDataResponse"
+                }
+              }
+            },
+            "description" : "Completeness of an evaluation"
+          }
+        },
+        "summary" : "Get information about the completeness of the evaluation data",
+        "tags" : [ "Evaluation" ]
+      }
+    },
+    "/evaluation/overview" : {
+      "post" : {
+        "operationId" : "getEvaluations",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetEvaluationsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetEvaluationsResponse"
+                }
+              }
+            },
+            "description" : "All evaluations"
+          }
+        },
+        "summary" : "Get all evaluations",
+        "tags" : [ "Evaluation" ]
+      }
+    },
+    "/evaluation/report-series" : {
+      "post" : {
+        "operationId" : "addReportSeries",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "oneOf" : [ {
+                  "$ref" : "#/components/schemas/AddAutoReportSeriesRequest"
+                }, {
+                  "$ref" : "#/components/schemas/AddManualReportSeriesRequest"
+                } ]
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ReportSeries"
+                }
+              }
+            },
+            "description" : "The added report series"
+          }
+        },
+        "summary" : "Add a report series",
+        "tags" : [ "ReportSeries" ]
+      }
+    },
+    "/evaluation/report-series/deactivate/{reportSeriesId}" : {
+      "patch" : {
+        "operationId" : "deactivateReportSeries",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "reportSeriesId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Returned when the report series is deactivated"
+          }
+        },
+        "summary" : "Deactivate a report series",
+        "tags" : [ "ReportSeries" ]
+      }
+    },
+    "/evaluation/report-series/overview" : {
+      "post" : {
+        "operationId" : "getReportOverview",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetReportsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetReportsResponse"
+                }
+              }
+            },
+            "description" : "Report overview page"
+          }
+        },
+        "summary" : "Get report series entries for the overview page",
+        "tags" : [ "ReportSeries" ]
+      }
+    },
+    "/evaluation/report-series/{reportSeriesId}" : {
+      "delete" : {
+        "operationId" : "deleteReportSeries",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "reportSeriesId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Returned when the report series is deleted"
+          }
+        },
+        "summary" : "Delete a report series with the reports",
+        "tags" : [ "ReportSeries" ]
+      },
+      "patch" : {
+        "operationId" : "updateReportSeries",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "reportSeriesId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateReportSeriesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ReportSeries"
+                }
+              }
+            },
+            "description" : "The patched report series"
+          }
+        },
+        "summary" : "Change title and description of a report series",
+        "tags" : [ "ReportSeries" ]
+      }
+    },
+    "/evaluation/report/{reportId}" : {
+      "delete" : {
+        "operationId" : "deleteReport",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "reportId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Returned when the report is deleted"
+          }
+        },
+        "summary" : "Delete a report",
+        "tags" : [ "Report" ]
+      },
+      "get" : {
+        "operationId" : "getReportDetailPage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "reportId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetReportDetailPageResponse"
+                }
+              }
+            },
+            "description" : "The information for the detail page"
+          }
+        },
+        "summary" : "Get the information for the detail page",
+        "tags" : [ "Report" ]
+      }
+    },
+    "/evaluation/retrieve-data/{evaluationId}" : {
+      "post" : {
+        "operationId" : "getEvaluation",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "evaluationId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/GetEvaluationRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetEvaluationResponse"
+                }
+              }
+            },
+            "description" : "Evaluation with data"
+          }
+        },
+        "summary" : "Get data from one evaluation",
+        "tags" : [ "Evaluation" ]
+      }
+    },
+    "/evaluation/{evaluationId}" : {
+      "delete" : {
+        "operationId" : "deleteEvaluation",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "evaluationId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Returned when the evaluation is deleted"
+          }
+        },
+        "summary" : "Delete an evaluation",
+        "tags" : [ "Evaluation" ]
+      },
+      "get" : {
+        "operationId" : "getDetailPageInformation",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "evaluationId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetDetailPageInformationResponse"
+                }
+              }
+            },
+            "description" : "The information for the detail page"
+          }
+        },
+        "summary" : "Get the information for the detail page",
+        "tags" : [ "Evaluation" ]
+      },
+      "patch" : {
+        "operationId" : "updateEvaluation",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "evaluationId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "oneOf" : [ {
+                  "$ref" : "#/components/schemas/UpdateEvaluationNameRequest"
+                }, {
+                  "$ref" : "#/components/schemas/UpdateEvaluationTimeRangeRequest"
+                } ]
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update evaluation",
+        "tags" : [ "Evaluation" ]
+      }
+    },
+    "/evaluation/{evaluationId}/report-series" : {
+      "get" : {
+        "operationId" : "getReportSeriesEntriesOfEvaluation",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "evaluationId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetReportSeriesEntriesOfEvaluationResponse"
+                }
+              }
+            },
+            "description" : "Report series entries for the evaluation"
+          }
+        },
+        "summary" : "Get report series entries for the evaluation",
+        "tags" : [ "Evaluation" ]
+      }
+    },
+    "/feature-toggles" : {
+      "get" : {
+        "operationId" : "getFeatureToggles",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetStatisticsFeatureTogglesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "StatisticsFeatureToggles" ]
+      }
+    },
+    "/filter-template" : {
+      "post" : {
+        "operationId" : "addFilterTemplate",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddFilterTemplateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "uuid"
+                }
+              }
+            },
+            "description" : "The UUID of the filter template"
+          }
+        },
+        "summary" : "Add filter template",
+        "tags" : [ "FilterTemplate" ]
+      }
+    },
+    "/filter-template/evaluation/{evaluationId}" : {
+      "get" : {
+        "operationId" : "findFilterTemplatesForEvaluation",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "evaluationId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFilterTemplatesForEvaluationResponse"
+                }
+              }
+            },
+            "description" : "Fitting filter templates for an evaluation"
+          }
+        },
+        "summary" : "Get filter templates that can be used on the evaluation",
+        "tags" : [ "FilterTemplate" ]
+      }
+    },
+    "/filter-template/{filterTemplateId}" : {
+      "delete" : {
+        "operationId" : "deleteFilterTemplate",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "filterTemplateId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Returned when the filter template is deleted"
+          }
+        },
+        "summary" : "Delete a filter template",
+        "tags" : [ "FilterTemplate" ]
+      },
+      "get" : {
+        "operationId" : "getFilterTemplate",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "filterTemplateId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/FilterTemplate"
+                }
+              }
+            },
+            "description" : "The information for the detail page"
+          }
+        },
+        "summary" : "Get the information for the detail page",
+        "tags" : [ "FilterTemplate" ]
+      }
+    },
+    "/geo-shape" : {
+      "get" : {
+        "operationId" : "getGeoShapes",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GeoShapeSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "page",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          }
+        }, {
+          "in" : "query",
+          "name" : "onlyActive",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean",
+            "default" : false
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGeoShapesResponse"
+                }
+              }
+            },
+            "description" : "All geo shapes"
+          }
+        },
+        "summary" : "Get meta data of all geo shapes",
+        "tags" : [ "GeoShape" ]
+      },
+      "post" : {
+        "operationId" : "addGeoShape",
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "title" : {
+                    "type" : "string"
+                  }
+                },
+                "required" : [ "file", "title" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "uuid"
+                }
+              }
+            },
+            "description" : "The id of the geo shape"
+          }
+        },
+        "summary" : "Upload and save a geo json file",
+        "tags" : [ "GeoShape" ]
+      }
+    },
+    "/geo-shape/{geoShapeId}" : {
+      "delete" : {
+        "operationId" : "deleteGeoShape",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "geoShapeId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Returned when the geo shape is deleted"
+          }
+        },
+        "summary" : "Delete a geo shape",
+        "tags" : [ "GeoShape" ]
+      },
+      "get" : {
+        "operationId" : "getGeoShape",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "geoShapeId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GeoShape"
+                }
+              }
+            },
+            "description" : "The geo shape of the requested id"
+          }
+        },
+        "summary" : "Get the geo shape for the id",
+        "tags" : [ "GeoShape" ]
+      },
+      "patch" : {
+        "operationId" : "updateGeoShape",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "geoShapeId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "oneOf" : [ {
+                  "$ref" : "#/components/schemas/GeoShapeChangeStatusRequest"
+                }, {
+                  "$ref" : "#/components/schemas/GeoShapeChangeTitleRequest"
+                } ]
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GeoShapeMetaInfo"
+                }
+              }
+            },
+            "description" : "The changed geo shape of the requested id"
+          }
+        },
+        "summary" : "Change the geo shape with the id",
+        "tags" : [ "GeoShape" ]
+      }
+    },
+    "/test-helper/archiving-job" : {
+      "post" : {
+        "operationId" : "runArchivingJob",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/audit-log-storage" : {
+      "delete" : {
+        "operationId" : "clearAuditLogStorageDirectory",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/enabled-new-features/{featureToEnable}" : {
+      "post" : {
+        "operationId" : "enableNewFeature",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "featureToEnable",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/StatisticsFeature"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/finish-auto-reports" : {
+      "post" : {
+        "operationId" : "finishAutoReports",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/populate-based-on-evaluation/{evaluationId}" : {
+      "post" : {
+        "operationId" : "createOtherEntities",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "evaluationId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/populate-create-evaluation/{businessModuleName}/{anonymized}" : {
+      "post" : {
+        "operationId" : "createEvaluation",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "businessModuleName",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "path",
+          "name" : "anonymized",
+          "required" : true,
+          "schema" : {
+            "type" : "boolean"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "uuid"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "AbstractAddChartConfiguration" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AbstractAddEvaluationRequest" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AbstractAddEvaluationTemplateRequest" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AbstractAddReportSeriesRequest" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AbstractChartConfiguration" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AbstractGeoShapeChangeRequest" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AbstractTableColumnHeaderAttribute" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AbstractUpdateEvaluationRequest" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AddAnalysisRequest" : {
+        "required" : [ "chartConfiguration", "evaluationId", "name" ],
+        "type" : "object",
+        "properties" : {
+          "chartConfiguration" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/AddChoroplethMapConfiguration"
+            }, {
+              "$ref" : "#/components/schemas/BarChartConfiguration"
+            }, {
+              "$ref" : "#/components/schemas/HistogramChartConfiguration"
+            }, {
+              "$ref" : "#/components/schemas/LineChartConfiguration"
+            }, {
+              "$ref" : "#/components/schemas/PieChartConfiguration"
+            }, {
+              "$ref" : "#/components/schemas/ScatterChartConfiguration"
+            } ]
+          },
+          "evaluationId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "AddAutoReportSeriesRequest" : {
+        "required" : [ "evaluationId", "frequency", "name", "reportingPeriod", "startMonth" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractAddReportSeriesRequest"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "description" : {
+              "type" : "string"
+            },
+            "evaluationId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "frequency" : {
+              "$ref" : "#/components/schemas/Frequency"
+            },
+            "name" : {
+              "type" : "string"
+            },
+            "reportingPeriod" : {
+              "$ref" : "#/components/schemas/ReportingPeriod"
+            },
+            "startMonth" : {
+              "maximum" : 12,
+              "minimum" : 1,
+              "type" : "integer",
+              "format" : "int32"
+            }
+          }
+        } ]
+      },
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "AddChoroplethMapConfiguration" : {
+        "required" : [ "colorScheme", "geoShapeId", "primaryAttribute" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractAddChartConfiguration"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "calculation" : {
+              "$ref" : "#/components/schemas/Calculation"
+            },
+            "colorScheme" : {
+              "type" : "string"
+            },
+            "geoShapeId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "primaryAttribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            },
+            "secondaryAttribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            }
+          }
+        } ]
+      },
+      "AddDiagramRequest" : {
+        "required" : [ "title" ],
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          },
+          "filters" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/BooleanFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/DecimalRangeFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/DecimalValueFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/IntegerRangeFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/IntegerValueFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/NullFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/TextFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/ValueOptionFilterParameter"
+              } ]
+            }
+          },
+          "title" : {
+            "type" : "string"
+          }
+        }
+      },
+      "AddEvaluationTemplateFromEvaluationRequest" : {
+        "required" : [ "evaluationId", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractAddEvaluationTemplateRequest"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "description" : {
+              "type" : "string"
+            },
+            "evaluationId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "name" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "AddEvaluationTemplateToRepositoryRequest" : {
+        "required" : [ "name", "templateId" ],
+        "type" : "object",
+        "properties" : {
+          "changelog" : {
+            "type" : "string"
+          },
+          "contact" : {
+            "type" : "string"
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "templateId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "AddEvaluationTemplateWithDataSourcesRequest" : {
+        "required" : [ "dataSources", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractAddEvaluationTemplateRequest"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "dataSources" : {
+              "maxItems" : 1,
+              "minItems" : 1,
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/DataSource"
+              }
+            },
+            "name" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "AddEvaluationWithDataSourcesRequest" : {
+        "required" : [ "anonymized", "dataSources", "name", "timeRangeEnd", "timeRangeStart" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractAddEvaluationRequest"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "anonymized" : {
+              "type" : "boolean"
+            },
+            "dataSources" : {
+              "maxItems" : 1,
+              "minItems" : 1,
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/DataSource"
+              }
+            },
+            "name" : {
+              "type" : "string"
+            },
+            "timeRangeEnd" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "timeRangeStart" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "AddEvaluationWithTemplateRequest" : {
+        "required" : [ "anonymized", "name", "templateId", "timeRangeEnd", "timeRangeStart" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractAddEvaluationRequest"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "anonymized" : {
+              "type" : "boolean"
+            },
+            "name" : {
+              "type" : "string"
+            },
+            "templateId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "timeRangeEnd" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "timeRangeStart" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "AddFilterTemplateRequest" : {
+        "required" : [ "filters", "name" ],
+        "type" : "object",
+        "properties" : {
+          "filters" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/BooleanFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/DecimalRangeFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/DecimalValueFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/IntegerRangeFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/IntegerValueFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/NullFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/TextFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/ValueOptionFilterParameter"
+              } ]
+            }
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "AddManualReportSeriesRequest" : {
+        "required" : [ "evaluationId", "name", "timeRangeEnd", "timeRangeStart" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractAddReportSeriesRequest"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "description" : {
+              "type" : "string"
+            },
+            "evaluationId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "name" : {
+              "type" : "string"
+            },
+            "timeRangeEnd" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "timeRangeStart" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "Analysis" : {
+        "required" : [ "chartConfiguration", "createdAt", "id", "name", "numberOfDiagrams" ],
+        "type" : "object",
+        "properties" : {
+          "chartConfiguration" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/BarChartConfiguration"
+            }, {
+              "$ref" : "#/components/schemas/ChoroplethMapConfiguration"
+            }, {
+              "$ref" : "#/components/schemas/HistogramChartConfiguration"
+            }, {
+              "$ref" : "#/components/schemas/LineChartConfiguration"
+            }, {
+              "$ref" : "#/components/schemas/PieChartConfiguration"
+            }, {
+              "$ref" : "#/components/schemas/ScatterChartConfiguration"
+            } ]
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "numberOfDiagrams" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "AnalysisInfo" : {
+        "required" : [ "@type", "diagramTitles", "name" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "diagramTitles" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "AnalysisWithDiagrams" : {
+        "required" : [ "chartConfiguration", "createdAt", "diagrams", "id", "name" ],
+        "type" : "object",
+        "properties" : {
+          "chartConfiguration" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/BarChartConfiguration"
+            }, {
+              "$ref" : "#/components/schemas/ChoroplethMapConfiguration"
+            }, {
+              "$ref" : "#/components/schemas/HistogramChartConfiguration"
+            }, {
+              "$ref" : "#/components/schemas/LineChartConfiguration"
+            }, {
+              "$ref" : "#/components/schemas/PieChartConfiguration"
+            }, {
+              "$ref" : "#/components/schemas/ScatterChartConfiguration"
+            } ]
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "diagrams" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Diagram"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "AttributeSelection" : {
+        "required" : [ "businessModuleAttributeCode", "businessModuleName", "dataSourceId" ],
+        "type" : "object",
+        "properties" : {
+          "baseModuleAttributeCode" : {
+            "type" : "string"
+          },
+          "businessModuleAttributeCode" : {
+            "type" : "string"
+          },
+          "businessModuleName" : {
+            "type" : "string"
+          },
+          "dataSourceId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "AvailableDataSource" : {
+        "required" : [ "attributes", "businessModuleName", "canBeAnonymized", "id", "name", "sensitiveDataAllowed", "sensitivity" ],
+        "type" : "object",
+        "properties" : {
+          "attributes" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessDataSourceAttribute"
+            }
+          },
+          "businessModuleName" : {
+            "type" : "string"
+          },
+          "canBeAnonymized" : {
+            "type" : "boolean"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "sensitiveDataAllowed" : {
+            "type" : "boolean"
+          },
+          "sensitivity" : {
+            "$ref" : "#/components/schemas/DataSourceSensitivity"
+          }
+        }
+      },
+      "BarChartConfiguration" : {
+        "required" : [ "orientation", "primaryAttribute" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractAddChartConfiguration"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "grouping" : {
+              "$ref" : "#/components/schemas/Grouping"
+            },
+            "orientation" : {
+              "$ref" : "#/components/schemas/Orientation"
+            },
+            "primaryAttribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            },
+            "scaling" : {
+              "$ref" : "#/components/schemas/Scaling"
+            },
+            "secondaryAttribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/AbstractChartConfiguration"
+        } ]
+      },
+      "BarChartData" : {
+        "required" : [ "barChartGroupDatas" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/DiagramData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "barChartGroupDatas" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/BarGroupData"
+              }
+            }
+          }
+        } ]
+      },
+      "BarGroupData" : {
+        "required" : [ "key", "keyToCounts" ],
+        "type" : "object",
+        "properties" : {
+          "key" : {
+            "type" : "string"
+          },
+          "keyToCounts" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/KeyToCount"
+            }
+          }
+        }
+      },
+      "BaseDataAttributeWithName" : {
+        "required" : [ "code", "displayName" ],
+        "type" : "object",
+        "properties" : {
+          "code" : {
+            "type" : "string"
+          },
+          "displayName" : {
+            "type" : "string"
+          }
+        }
+      },
+      "BaseDataSourceAttribute" : {
+        "required" : [ "code", "displayName", "name" ],
+        "type" : "object",
+        "properties" : {
+          "code" : {
+            "type" : "string"
+          },
+          "displayName" : {
+            "type" : "string"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "BaseModuleIdAttribute" : {
+        "required" : [ "baseAttribute", "code", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractTableColumnHeaderAttribute"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "baseAttribute" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/BaseModuleIdAttribute"
+              }, {
+                "$ref" : "#/components/schemas/BooleanAttribute"
+              }, {
+                "$ref" : "#/components/schemas/DateAttribute"
+              }, {
+                "$ref" : "#/components/schemas/DecimalAttribute"
+              }, {
+                "$ref" : "#/components/schemas/IntegerAttribute"
+              }, {
+                "$ref" : "#/components/schemas/ProcedureReferenceAttribute"
+              }, {
+                "$ref" : "#/components/schemas/TextAttribute"
+              }, {
+                "$ref" : "#/components/schemas/ValueWithOptionsAttribute"
+              } ]
+            },
+            "code" : {
+              "type" : "string"
+            },
+            "name" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "BinningMode" : {
+        "type" : "string",
+        "enum" : [ "AUTO", "MANUAL" ]
+      },
+      "BooleanAttribute" : {
+        "required" : [ "code", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractTableColumnHeaderAttribute"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "code" : {
+              "type" : "string"
+            },
+            "name" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "BooleanFilterParameter" : {
+        "required" : [ "attribute", "searchForFalse", "searchForNull", "searchForTrue" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/TableColumnFilterParameter"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "attribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            },
+            "searchForFalse" : {
+              "type" : "boolean"
+            },
+            "searchForNull" : {
+              "type" : "boolean"
+            },
+            "searchForTrue" : {
+              "type" : "boolean"
+            }
+          }
+        } ]
+      },
+      "BusinessDataAttribute" : {
+        "required" : [ "code" ],
+        "type" : "object",
+        "properties" : {
+          "baseAttributeCodes" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "code" : {
+            "type" : "string"
+          }
+        }
+      },
+      "BusinessDataAttributeWithName" : {
+        "required" : [ "baseDataAttributes", "code", "name" ],
+        "type" : "object",
+        "properties" : {
+          "baseDataAttributes" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BaseDataAttributeWithName"
+            }
+          },
+          "code" : {
+            "type" : "string"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "BusinessDataSourceAttribute" : {
+        "required" : [ "category", "code", "name" ],
+        "type" : "object",
+        "properties" : {
+          "baseAttributes" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BaseDataSourceAttribute"
+            }
+          },
+          "category" : {
+            "type" : "string"
+          },
+          "code" : {
+            "type" : "string"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "Calculation" : {
+        "type" : "string",
+        "enum" : [ "MEAN", "SUM" ]
+      },
+      "ChoroplethMapConfiguration" : {
+        "required" : [ "colorScheme", "primaryAttribute" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractChartConfiguration"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "calculation" : {
+              "$ref" : "#/components/schemas/Calculation"
+            },
+            "colorScheme" : {
+              "type" : "string"
+            },
+            "geoJson" : {
+              "type" : "string"
+            },
+            "primaryAttribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            },
+            "secondaryAttribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            }
+          }
+        } ]
+      },
+      "ChoroplethMapData" : {
+        "required" : [ "keyToValues" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/DiagramData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "keyToValues" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/KeyToValue"
+              }
+            }
+          }
+        } ]
+      },
+      "CloneEvaluationRequest" : {
+        "required" : [ "clonedEvaluationName", "originalEvaluationId" ],
+        "type" : "object",
+        "properties" : {
+          "clonedEvaluationName" : {
+            "type" : "string"
+          },
+          "originalEvaluationId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "CompletenessOfAttribute" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "CompletenessOfBaseAttribute" : {
+        "required" : [ "baseAttributeCode", "baseAttributeName", "businessAttributeCode", "businessAttributeName", "businessModuleName", "dataSourceId", "mandatory", "percentNull", "percentSum" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/CompletenessOfAttribute"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "baseAttributeCode" : {
+              "type" : "string"
+            },
+            "baseAttributeName" : {
+              "type" : "string"
+            },
+            "businessAttributeCode" : {
+              "type" : "string"
+            },
+            "businessAttributeName" : {
+              "type" : "string"
+            },
+            "businessModuleName" : {
+              "type" : "string"
+            },
+            "dataSourceId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "mandatory" : {
+              "type" : "boolean"
+            },
+            "percentNull" : {
+              "type" : "number"
+            },
+            "percentSum" : {
+              "type" : "number"
+            },
+            "percentUnknown" : {
+              "type" : "number"
+            },
+            "unknownValue" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "CompletenessOfBusinessAttribute" : {
+        "required" : [ "businessModuleName", "code", "dataSourceId", "mandatory", "name", "percentNull", "percentSum" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/CompletenessOfAttribute"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "businessModuleName" : {
+              "type" : "string"
+            },
+            "code" : {
+              "type" : "string"
+            },
+            "dataSourceId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "mandatory" : {
+              "type" : "boolean"
+            },
+            "name" : {
+              "type" : "string"
+            },
+            "percentNull" : {
+              "type" : "number"
+            },
+            "percentSum" : {
+              "type" : "number"
+            },
+            "percentUnknown" : {
+              "type" : "number"
+            },
+            "unknownValue" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "DataPoint" : {
+        "required" : [ "x", "y" ],
+        "type" : "object",
+        "properties" : {
+          "x" : {
+            "type" : "number"
+          },
+          "y" : {
+            "type" : "number"
+          }
+        }
+      },
+      "DataPointGroup" : {
+        "required" : [ "dataPoints", "key" ],
+        "type" : "object",
+        "properties" : {
+          "dataPoints" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DataPoint"
+            }
+          },
+          "key" : {
+            "type" : "string"
+          },
+          "trendLine" : {
+            "$ref" : "#/components/schemas/TrendLine"
+          }
+        }
+      },
+      "DataRow" : {
+        "required" : [ "values" ],
+        "type" : "object",
+        "properties" : {
+          "values" : {
+            "type" : "array",
+            "items" : {
+              "type" : "object"
+            }
+          }
+        }
+      },
+      "DataSource" : {
+        "required" : [ "attributeCodes", "businessModuleName", "id" ],
+        "type" : "object",
+        "properties" : {
+          "attributeCodes" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessDataAttribute"
+            }
+          },
+          "businessModuleName" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "DataSourceSensitivity" : {
+        "type" : "string",
+        "enum" : [ "SENSITIVE", "INTERNAL_USAGE", "ANONYMOUS" ]
+      },
+      "DataSourceWithAttributeNames" : {
+        "required" : [ "businessModuleName", "dataAttributes", "dataSourceName", "id" ],
+        "type" : "object",
+        "properties" : {
+          "businessModuleName" : {
+            "type" : "string"
+          },
+          "dataAttributes" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessDataAttributeWithName"
+            }
+          },
+          "dataSourceName" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "DateAttribute" : {
+        "required" : [ "code", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractTableColumnHeaderAttribute"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "code" : {
+              "type" : "string"
+            },
+            "name" : {
+              "type" : "string"
+            },
+            "valueOptions" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/ValueOption"
+              }
+            }
+          }
+        } ]
+      },
+      "DateSpan" : {
+        "type" : "object",
+        "properties" : {
+          "lowerBoundary" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "upperBoundary" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "DecimalAttribute" : {
+        "required" : [ "code", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractTableColumnHeaderAttribute"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "code" : {
+              "type" : "string"
+            },
+            "maxValue" : {
+              "type" : "number"
+            },
+            "minValue" : {
+              "type" : "number"
+            },
+            "name" : {
+              "type" : "string"
+            },
+            "unit" : {
+              "type" : "string"
+            },
+            "valueOptions" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/ValueOption"
+              }
+            }
+          }
+        } ]
+      },
+      "DecimalRangeFilterParameter" : {
+        "required" : [ "attribute", "maxValueInclusive", "minValueInclusive", "withNullValues" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/TableColumnFilterParameter"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "attribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            },
+            "maxValueInclusive" : {
+              "type" : "number"
+            },
+            "minValueInclusive" : {
+              "type" : "number"
+            },
+            "withNullValues" : {
+              "type" : "boolean"
+            }
+          }
+        } ]
+      },
+      "DecimalValueFilterParameter" : {
+        "required" : [ "attribute", "numericComparison", "value", "withNullValues" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/TableColumnFilterParameter"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "attribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            },
+            "numericComparison" : {
+              "$ref" : "#/components/schemas/NumericComparison"
+            },
+            "value" : {
+              "type" : "number"
+            },
+            "withNullValues" : {
+              "type" : "boolean"
+            }
+          }
+        } ]
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "Diagram" : {
+        "required" : [ "diagramData", "evaluatedDataAmount", "filters", "id", "title" ],
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          },
+          "diagramData" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/BarChartData"
+            }, {
+              "$ref" : "#/components/schemas/ChoroplethMapData"
+            }, {
+              "$ref" : "#/components/schemas/HistogramChartDataCategorized"
+            }, {
+              "$ref" : "#/components/schemas/HistogramChartDataSimple"
+            }, {
+              "$ref" : "#/components/schemas/LineChartDataCategorized"
+            }, {
+              "$ref" : "#/components/schemas/LineChartDataSimple"
+            }, {
+              "$ref" : "#/components/schemas/PieChartData"
+            }, {
+              "$ref" : "#/components/schemas/ScatterChartDataCategorized"
+            }, {
+              "$ref" : "#/components/schemas/ScatterChartDataSimple"
+            } ]
+          },
+          "evaluatedDataAmount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "filters" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/BooleanFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/DecimalRangeFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/DecimalValueFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/IntegerRangeFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/IntegerValueFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/NullFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/TextFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/ValueOptionFilterParameter"
+              } ]
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "title" : {
+            "type" : "string"
+          }
+        }
+      },
+      "DiagramData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ErrorCode" : {
+        "type" : "string",
+        "enum" : [ "UNEXPECTED_ERROR", "BAD_REQUEST", "UNAUTHORIZED", "INSUFFICIENT_USER_RIGHTS", "NOT_FOUND", "CONFLICT", "CONSTRAINT_VIOLATION", "TIMEOUT", "DATA_INTEGRITY_VIOLATION", "ALREADY_EXISTS", "AGGREGATION_EXCEPTION", "INVALID_FILE", "NONCONFORM_PDF", "CORRUPT", "LOCKED", "XLSX_TOO_MANY_ROWS" ]
+      },
+      "ErrorResponseWithLocation" : {
+        "required" : [ "errorCode", "errorLocation" ],
+        "type" : "object",
+        "properties" : {
+          "errorCode" : {
+            "$ref" : "#/components/schemas/ErrorCode"
+          },
+          "errorLocation" : {
+            "type" : "string"
+          },
+          "message" : {
+            "type" : "string"
+          }
+        }
+      },
+      "EvaluationDataSensitivity" : {
+        "type" : "string",
+        "enum" : [ "ANONYMOUS", "INTERNAL_USAGE", "SENSITIVE" ]
+      },
+      "EvaluationInfo" : {
+        "required" : [ "createdAt", "dataSensitivity", "dataSourceNames", "id", "name", "state", "timeRangeEnd", "timeRangeStart", "tooMuchDataForExport", "userId" ],
+        "type" : "object",
+        "properties" : {
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "dataSensitivity" : {
+            "$ref" : "#/components/schemas/EvaluationDataSensitivity"
+          },
+          "dataSourceNames" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "state" : {
+            "$ref" : "#/components/schemas/EvaluationState"
+          },
+          "timeRangeEnd" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "timeRangeStart" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "tooMuchDataForExport" : {
+            "type" : "boolean"
+          },
+          "userId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "EvaluationSortKey" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "NAME", "CREATED_AT", "TIME_RANGE_START", "TIME_RANGE_END" ]
+      },
+      "EvaluationState" : {
+        "type" : "string",
+        "enum" : [ "COMPLETED", "FAILED", "CREATING", "UPDATING", "COPY_ONGOING", "DELETING" ]
+      },
+      "EvaluationTemplate" : {
+        "required" : [ "analysisInfos", "createdAt", "dataSources", "id", "name", "templateSensitivityInfo" ],
+        "type" : "object",
+        "properties" : {
+          "analysisInfos" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AnalysisInfo"
+            }
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "dataSources" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DataSourceWithAttributeNames"
+            }
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "lastUsageAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "templateSensitivityInfo" : {
+            "$ref" : "#/components/schemas/TemplateSensitivityInfo"
+          },
+          "user" : {
+            "$ref" : "#/components/schemas/User"
+          }
+        }
+      },
+      "EvaluationTemplateDetailsFromRepository" : {
+        "required" : [ "analysisInfos", "dataSources", "repositoryMetaInfo" ],
+        "type" : "object",
+        "properties" : {
+          "analysisInfos" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AnalysisInfo"
+            }
+          },
+          "dataSources" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DataSourceWithAttributeNames"
+            }
+          },
+          "repositoryMetaInfo" : {
+            "$ref" : "#/components/schemas/RepositoryMetaInfo"
+          }
+        }
+      },
+      "EvaluationTemplateFromRepository" : {
+        "required" : [ "dataSourceNames", "repositoryMetaInfo" ],
+        "type" : "object",
+        "properties" : {
+          "dataSourceNames" : {
+            "type" : "string"
+          },
+          "repositoryMetaInfo" : {
+            "$ref" : "#/components/schemas/RepositoryMetaInfo"
+          }
+        }
+      },
+      "EvaluationTemplateInfo" : {
+        "required" : [ "analysisCount", "createdAt", "dataSourceNames", "id", "name", "templateSensitivityInfo", "userId" ],
+        "type" : "object",
+        "properties" : {
+          "analysisCount" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "dataSourceNames" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "lastUsageAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "templateSensitivityInfo" : {
+            "$ref" : "#/components/schemas/TemplateSensitivityInfo"
+          },
+          "userId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "EvaluationTemplateSortKey" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "NAME", "ANALYSIS_COUNT", "CREATED_AT" ]
+      },
+      "ExpectedEvaluationTemplate" : {
+        "required" : [ "analysisInfos", "dataSources" ],
+        "type" : "object",
+        "properties" : {
+          "analysisInfos" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AnalysisInfo"
+            }
+          },
+          "dataSources" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DataSourceWithAttributeNames"
+            }
+          }
+        }
+      },
+      "FilterTemplate" : {
+        "required" : [ "filters", "id", "name" ],
+        "type" : "object",
+        "properties" : {
+          "filters" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/BooleanFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/DecimalRangeFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/DecimalValueFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/IntegerRangeFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/IntegerValueFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/NullFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/TextFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/ValueOptionFilterParameter"
+              } ]
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "FilterTemplateIdAndName" : {
+        "required" : [ "id", "name" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "Frequency" : {
+        "type" : "string",
+        "enum" : [ "PER_MONTH", "PER_THREE_MONTHS", "PER_HALF_YEAR", "PER_YEAR" ]
+      },
+      "GeoShape" : {
+        "required" : [ "createdAt", "geoJson", "id", "status", "title" ],
+        "type" : "object",
+        "properties" : {
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "geoJson" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/GeoShapeStatus"
+          },
+          "title" : {
+            "type" : "string"
+          }
+        }
+      },
+      "GeoShapeChangeStatusRequest" : {
+        "required" : [ "status" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractGeoShapeChangeRequest"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "status" : {
+              "$ref" : "#/components/schemas/GeoShapeStatus"
+            }
+          }
+        } ]
+      },
+      "GeoShapeChangeTitleRequest" : {
+        "required" : [ "title" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractGeoShapeChangeRequest"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "title" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "GeoShapeMetaInfo" : {
+        "required" : [ "createdAt", "id", "status", "title" ],
+        "type" : "object",
+        "properties" : {
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/GeoShapeStatus"
+          },
+          "title" : {
+            "type" : "string"
+          }
+        }
+      },
+      "GeoShapeSortKey" : {
+        "type" : "string",
+        "enum" : [ "TITLE", "CREATED_AT" ]
+      },
+      "GeoShapeStatus" : {
+        "type" : "string",
+        "enum" : [ "ACTIVE", "ARCHIVED" ]
+      },
+      "GetAllMinimalEvaluationTemplateInfosResponse" : {
+        "required" : [ "minimalEvaluationTemplateInfos" ],
+        "type" : "object",
+        "properties" : {
+          "minimalEvaluationTemplateInfos" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/MinimalEvaluationTemplateInfo"
+            }
+          }
+        }
+      },
+      "GetAvailableDataSourcesResponse" : {
+        "required" : [ "availableDataSources", "errorResponses" ],
+        "type" : "object",
+        "properties" : {
+          "availableDataSources" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AvailableDataSource"
+            }
+          },
+          "errorResponses" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ErrorResponseWithLocation"
+            }
+          }
+        }
+      },
+      "GetCompletenessDataResponse" : {
+        "required" : [ "completenessOfAttributes", "evaluationInfo" ],
+        "type" : "object",
+        "properties" : {
+          "completenessOfAttributes" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/CompletenessOfBaseAttribute"
+              }, {
+                "$ref" : "#/components/schemas/CompletenessOfBusinessAttribute"
+              } ]
+            }
+          },
+          "evaluationInfo" : {
+            "$ref" : "#/components/schemas/EvaluationInfo"
+          }
+        }
+      },
+      "GetDetailPageInformationResponse" : {
+        "required" : [ "analyses", "evaluationInfo", "tableColumnHeaders", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "analyses" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Analysis"
+            }
+          },
+          "evaluationInfo" : {
+            "$ref" : "#/components/schemas/EvaluationInfo"
+          },
+          "tableColumnHeaders" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TableColumnHeader"
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "user" : {
+            "$ref" : "#/components/schemas/User"
+          }
+        }
+      },
+      "GetEvaluationRequest" : {
+        "type" : "object",
+        "properties" : {
+          "filters" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/BooleanFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/DecimalRangeFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/DecimalValueFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/IntegerRangeFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/IntegerValueFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/NullFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/TextFilterParameter"
+              }, {
+                "$ref" : "#/components/schemas/ValueOptionFilterParameter"
+              } ]
+            }
+          },
+          "page" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          },
+          "pageSize" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          },
+          "sortAttribute" : {
+            "$ref" : "#/components/schemas/AttributeSelection"
+          },
+          "sortDirection" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }
+      },
+      "GetEvaluationResponse" : {
+        "required" : [ "dataRows", "evaluationInfo", "tableColumnHeaders", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "dataRows" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DataRow"
+            }
+          },
+          "evaluationInfo" : {
+            "$ref" : "#/components/schemas/EvaluationInfo"
+          },
+          "tableColumnHeaders" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TableColumnHeader"
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetEvaluationTemplatesFilterOptions" : {
+        "type" : "object",
+        "properties" : {
+          "createdAt" : {
+            "$ref" : "#/components/schemas/DateSpan"
+          },
+          "dataSourceIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "GetEvaluationTemplatesFromRepositoryResponse" : {
+        "required" : [ "evaluationTemplates" ],
+        "type" : "object",
+        "properties" : {
+          "evaluationTemplates" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/EvaluationTemplateFromRepository"
+            }
+          }
+        }
+      },
+      "GetEvaluationTemplatesRequest" : {
+        "type" : "object",
+        "properties" : {
+          "filterOptions" : {
+            "$ref" : "#/components/schemas/GetEvaluationTemplatesFilterOptions"
+          },
+          "page" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          },
+          "pageSize" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          },
+          "sortDirection" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          },
+          "sortKey" : {
+            "$ref" : "#/components/schemas/EvaluationTemplateSortKey"
+          }
+        }
+      },
+      "GetEvaluationTemplatesResponse" : {
+        "required" : [ "evaluationTemplates", "resolvedUsers", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "evaluationTemplates" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/EvaluationTemplateInfo"
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetEvaluationsFilterOptions" : {
+        "type" : "object",
+        "properties" : {
+          "dataSensitivities" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/EvaluationDataSensitivity"
+            }
+          },
+          "dataSourceIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "end" : {
+            "$ref" : "#/components/schemas/DateSpan"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "start" : {
+            "$ref" : "#/components/schemas/DateSpan"
+          },
+          "states" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/EvaluationState"
+            }
+          }
+        }
+      },
+      "GetEvaluationsRequest" : {
+        "type" : "object",
+        "properties" : {
+          "filterOptions" : {
+            "$ref" : "#/components/schemas/GetEvaluationsFilterOptions"
+          },
+          "page" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          },
+          "pageSize" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          },
+          "sortDirection" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          },
+          "sortKey" : {
+            "$ref" : "#/components/schemas/EvaluationSortKey"
+          }
+        }
+      },
+      "GetEvaluationsResponse" : {
+        "required" : [ "evaluations", "resolvedUsers", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "evaluations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/EvaluationInfo"
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetFilterTemplatesForEvaluationResponse" : {
+        "required" : [ "filterTemplateIdAndNames" ],
+        "type" : "object",
+        "properties" : {
+          "filterTemplateIdAndNames" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/FilterTemplateIdAndName"
+            }
+          }
+        }
+      },
+      "GetGeoShapesResponse" : {
+        "required" : [ "geoShapeMetaInfos", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "geoShapeMetaInfos" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GeoShapeMetaInfo"
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetReportDetailPageResponse" : {
+        "required" : [ "analyses", "dataSensitivity", "executionDate", "id", "name", "numberOfReportsInSeries", "reportSeriesId", "reportSeriesName", "reportType", "tableColumnHeaders", "timeRangeEnd", "timeRangeStart", "tooMuchDataForExport", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "analyses" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Analysis"
+            }
+          },
+          "dataSensitivity" : {
+            "$ref" : "#/components/schemas/ReportDataSensitivity"
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "executionDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "numberOfReportsInSeries" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "reportSeriesId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "reportSeriesName" : {
+            "type" : "string"
+          },
+          "reportType" : {
+            "$ref" : "#/components/schemas/ReportType"
+          },
+          "tableColumnHeaders" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TableColumnHeader"
+            }
+          },
+          "timeRangeEnd" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "timeRangeStart" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "tooMuchDataForExport" : {
+            "type" : "boolean"
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "userReport" : {
+            "$ref" : "#/components/schemas/User"
+          },
+          "userReportSeries" : {
+            "$ref" : "#/components/schemas/User"
+          }
+        }
+      },
+      "GetReportSeriesEntriesOfEvaluationResponse" : {
+        "required" : [ "dataSensitivity", "evaluationId", "evaluationName", "reportSeriesEntries", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "dataSensitivity" : {
+            "$ref" : "#/components/schemas/EvaluationDataSensitivity"
+          },
+          "evaluationId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "evaluationName" : {
+            "type" : "string"
+          },
+          "reportSeriesEntries" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ReportSeries"
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetReportsFilterOptions" : {
+        "type" : "object",
+        "properties" : {
+          "dataSensitivities" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ReportDataSensitivity"
+            }
+          },
+          "dataSourceIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "end" : {
+            "$ref" : "#/components/schemas/DateSpan"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "reportType" : {
+            "$ref" : "#/components/schemas/ReportType"
+          },
+          "start" : {
+            "$ref" : "#/components/schemas/DateSpan"
+          }
+        }
+      },
+      "GetReportsRequest" : {
+        "type" : "object",
+        "properties" : {
+          "filterOptions" : {
+            "$ref" : "#/components/schemas/GetReportsFilterOptions"
+          },
+          "page" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          },
+          "pageSize" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          },
+          "sortDirection" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }
+      },
+      "GetReportsResponse" : {
+        "required" : [ "reportSeriesList", "resolvedUsers", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "reportSeriesList" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ReportSeries"
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetStatisticsFeatureTogglesResponse" : {
+        "required" : [ "disabledOldFeatures", "enabledNewFeatures" ],
+        "type" : "object",
+        "properties" : {
+          "disabledOldFeatures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/StatisticsFeature"
+            }
+          },
+          "enabledNewFeatures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/StatisticsFeature"
+            }
+          }
+        }
+      },
+      "Grouping" : {
+        "type" : "string",
+        "enum" : [ "GROUPED", "STACKED" ]
+      },
+      "HistogramBin" : {
+        "required" : [ "lowerBound", "upperBound" ],
+        "type" : "object",
+        "properties" : {
+          "lowerBound" : {
+            "type" : "number"
+          },
+          "upperBound" : {
+            "type" : "number"
+          }
+        }
+      },
+      "HistogramChartConfiguration" : {
+        "required" : [ "binningMode", "primaryAttribute" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractAddChartConfiguration"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "binningMode" : {
+              "$ref" : "#/components/schemas/BinningMode"
+            },
+            "grouping" : {
+              "$ref" : "#/components/schemas/Grouping"
+            },
+            "numberOfBins" : {
+              "maximum" : 50,
+              "minimum" : 2,
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "primaryAttribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            },
+            "scaling" : {
+              "$ref" : "#/components/schemas/Scaling"
+            },
+            "secondaryAttribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/AbstractChartConfiguration"
+        } ]
+      },
+      "HistogramChartDataCategorized" : {
+        "required" : [ "histogramGroupDatas" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/DiagramData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "histogramGroupDatas" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/HistogramGroupDataCategorized"
+              }
+            }
+          }
+        } ]
+      },
+      "HistogramChartDataSimple" : {
+        "required" : [ "histogramGroupDatas" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/DiagramData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "histogramGroupDatas" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/HistogramGroupDataSimple"
+              }
+            }
+          }
+        } ]
+      },
+      "HistogramGroupDataCategorized" : {
+        "required" : [ "histogramBin", "keyToCounts" ],
+        "type" : "object",
+        "properties" : {
+          "histogramBin" : {
+            "$ref" : "#/components/schemas/HistogramBin"
+          },
+          "keyToCounts" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/KeyToCount"
+            }
+          }
+        }
+      },
+      "HistogramGroupDataSimple" : {
+        "required" : [ "count", "histogramBin" ],
+        "type" : "object",
+        "properties" : {
+          "count" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "histogramBin" : {
+            "$ref" : "#/components/schemas/HistogramBin"
+          }
+        }
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "IntegerAttribute" : {
+        "required" : [ "code", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractTableColumnHeaderAttribute"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "code" : {
+              "type" : "string"
+            },
+            "maxValue" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "minValue" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "name" : {
+              "type" : "string"
+            },
+            "unit" : {
+              "type" : "string"
+            },
+            "valueOptions" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/ValueOption"
+              }
+            }
+          }
+        } ]
+      },
+      "IntegerRangeFilterParameter" : {
+        "required" : [ "attribute", "maxValueInclusive", "minValueInclusive", "withNullValues" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/TableColumnFilterParameter"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "attribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            },
+            "maxValueInclusive" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "minValueInclusive" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "withNullValues" : {
+              "type" : "boolean"
+            }
+          }
+        } ]
+      },
+      "IntegerValueFilterParameter" : {
+        "required" : [ "attribute", "numericComparison", "value", "withNullValues" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/TableColumnFilterParameter"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "attribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            },
+            "numericComparison" : {
+              "$ref" : "#/components/schemas/NumericComparison"
+            },
+            "value" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "withNullValues" : {
+              "type" : "boolean"
+            }
+          }
+        } ]
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "KeyToCount" : {
+        "required" : [ "count", "key" ],
+        "type" : "object",
+        "properties" : {
+          "count" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "key" : {
+            "type" : "string"
+          }
+        }
+      },
+      "KeyToValue" : {
+        "required" : [ "key" ],
+        "type" : "object",
+        "properties" : {
+          "key" : {
+            "type" : "string"
+          },
+          "value" : {
+            "type" : "number"
+          }
+        }
+      },
+      "LineChartConfiguration" : {
+        "required" : [ "range", "xAttribute", "yAttribute" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractAddChartConfiguration"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "range" : {
+              "$ref" : "#/components/schemas/Range"
+            },
+            "secondaryAttribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            },
+            "xAttribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            },
+            "yAttribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/AbstractChartConfiguration"
+        } ]
+      },
+      "LineChartDataCategorized" : {
+        "required" : [ "dataPointGroups" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/DiagramData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "dataPointGroups" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/DataPointGroup"
+              }
+            }
+          }
+        } ]
+      },
+      "LineChartDataSimple" : {
+        "required" : [ "dataPoints" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/DiagramData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "dataPoints" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/DataPoint"
+              }
+            }
+          }
+        } ]
+      },
+      "MinimalEvaluationTemplateInfo" : {
+        "required" : [ "id", "name" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "NullFilterParameter" : {
+        "required" : [ "attribute" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/TableColumnFilterParameter"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "attribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            }
+          }
+        } ]
+      },
+      "NumericComparison" : {
+        "type" : "string",
+        "enum" : [ "EQUAL", "GREATER_EQUAL", "GREATER_THAN", "LESS_EQUAL", "LESS_THAN" ]
+      },
+      "Orientation" : {
+        "type" : "string",
+        "enum" : [ "HORIZONTAL", "VERTICAL" ]
+      },
+      "PieChartConfiguration" : {
+        "required" : [ "attribute" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractAddChartConfiguration"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "attribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/AbstractChartConfiguration"
+        } ]
+      },
+      "PieChartData" : {
+        "required" : [ "keyToCounts" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/DiagramData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "keyToCounts" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/KeyToCount"
+              }
+            }
+          }
+        } ]
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ProcedureReferenceAttribute" : {
+        "required" : [ "code", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractTableColumnHeaderAttribute"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "code" : {
+              "type" : "string"
+            },
+            "name" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "Range" : {
+        "type" : "string",
+        "enum" : [ "ADAPTED", "ORIGIN" ]
+      },
+      "ReportDataSensitivity" : {
+        "type" : "string",
+        "enum" : [ "ANONYMOUS", "INTERNAL_USAGE" ]
+      },
+      "ReportInfo" : {
+        "required" : [ "dataSensitivity", "executionDate", "id", "name", "state", "timeRangeEnd", "timeRangeStart", "tooMuchDataForExport" ],
+        "type" : "object",
+        "properties" : {
+          "dataSensitivity" : {
+            "$ref" : "#/components/schemas/ReportDataSensitivity"
+          },
+          "executionDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "state" : {
+            "$ref" : "#/components/schemas/ReportState"
+          },
+          "timeRangeEnd" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "timeRangeStart" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "tooMuchDataForExport" : {
+            "type" : "boolean"
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ReportSeries" : {
+        "required" : [ "dataSourceNames", "evaluationId", "id", "name", "reportInfos", "reportType", "userId" ],
+        "type" : "object",
+        "properties" : {
+          "active" : {
+            "type" : "boolean"
+          },
+          "dataSourceNames" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "evaluationId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "frequency" : {
+            "$ref" : "#/components/schemas/Frequency"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "reportInfos" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ReportInfo"
+            }
+          },
+          "reportType" : {
+            "$ref" : "#/components/schemas/ReportType"
+          },
+          "reportingPeriod" : {
+            "$ref" : "#/components/schemas/ReportingPeriod"
+          },
+          "startMonth" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "timeRangeEnd" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "timeRangeStart" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "userId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ReportState" : {
+        "type" : "string",
+        "enum" : [ "PLANNED", "COMPLETED", "FAILED", "CREATING", "DELETING" ]
+      },
+      "ReportType" : {
+        "type" : "string",
+        "enum" : [ "MANUAL", "AUTO" ]
+      },
+      "ReportingPeriod" : {
+        "type" : "string",
+        "enum" : [ "MONTH", "THREE_MONTHS", "HALF_YEAR", "YEAR" ]
+      },
+      "RepositoryMetaInfo" : {
+        "required" : [ "createdAt", "createdBy", "id", "name", "version" ],
+        "type" : "object",
+        "properties" : {
+          "changeLog" : {
+            "type" : "string"
+          },
+          "contact" : {
+            "type" : "string"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string"
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "Scaling" : {
+        "type" : "string",
+        "enum" : [ "ABSOLUTE", "RELATIVE" ]
+      },
+      "ScatterChartConfiguration" : {
+        "required" : [ "range", "trendLine", "xAttribute", "yAttribute" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractAddChartConfiguration"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "range" : {
+              "$ref" : "#/components/schemas/Range"
+            },
+            "secondaryAttribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            },
+            "trendLine" : {
+              "type" : "boolean"
+            },
+            "xAttribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            },
+            "yAttribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/AbstractChartConfiguration"
+        } ]
+      },
+      "ScatterChartDataCategorized" : {
+        "required" : [ "dataPointGroups" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/DiagramData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "dataPointGroups" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/DataPointGroup"
+              }
+            }
+          }
+        } ]
+      },
+      "ScatterChartDataSimple" : {
+        "required" : [ "dataPoints" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/DiagramData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "dataPoints" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/DataPoint"
+              }
+            },
+            "trendLine" : {
+              "$ref" : "#/components/schemas/TrendLine"
+            }
+          }
+        } ]
+      },
+      "SortDirection" : {
+        "type" : "string",
+        "default" : "DESC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "StatisticsFeature" : {
+        "type" : "string",
+        "enum" : [ "DUMMY" ]
+      },
+      "TableColumnFilterParameter" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "TableColumnHeader" : {
+        "required" : [ "attribute", "businessModule", "dataSourceId", "dataSourceName", "displayName" ],
+        "type" : "object",
+        "properties" : {
+          "attribute" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/BaseModuleIdAttribute"
+            }, {
+              "$ref" : "#/components/schemas/BooleanAttribute"
+            }, {
+              "$ref" : "#/components/schemas/DateAttribute"
+            }, {
+              "$ref" : "#/components/schemas/DecimalAttribute"
+            }, {
+              "$ref" : "#/components/schemas/IntegerAttribute"
+            }, {
+              "$ref" : "#/components/schemas/ProcedureReferenceAttribute"
+            }, {
+              "$ref" : "#/components/schemas/TextAttribute"
+            }, {
+              "$ref" : "#/components/schemas/ValueWithOptionsAttribute"
+            } ]
+          },
+          "businessModule" : {
+            "type" : "string"
+          },
+          "dataSourceId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "dataSourceName" : {
+            "type" : "string"
+          },
+          "displayName" : {
+            "type" : "string"
+          }
+        }
+      },
+      "TemplateSensitivityInfo" : {
+        "required" : [ "canBeAnonymized", "sensitiveDataAllowed" ],
+        "type" : "object",
+        "properties" : {
+          "canBeAnonymized" : {
+            "type" : "boolean"
+          },
+          "sensitiveDataAllowed" : {
+            "type" : "boolean"
+          },
+          "sensitivity" : {
+            "$ref" : "#/components/schemas/DataSourceSensitivity"
+          }
+        }
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      },
+      "TextAttribute" : {
+        "required" : [ "code", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractTableColumnHeaderAttribute"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "code" : {
+              "type" : "string"
+            },
+            "name" : {
+              "type" : "string"
+            },
+            "valueOptions" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/ValueOption"
+              }
+            }
+          }
+        } ]
+      },
+      "TextFilterParameter" : {
+        "required" : [ "attribute", "text" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/TableColumnFilterParameter"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "attribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            },
+            "text" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "TimeRange" : {
+        "required" : [ "end", "start" ],
+        "type" : "object",
+        "properties" : {
+          "end" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "start" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TrendLine" : {
+        "required" : [ "offset", "slope" ],
+        "type" : "object",
+        "properties" : {
+          "offset" : {
+            "type" : "number"
+          },
+          "slope" : {
+            "type" : "number"
+          }
+        }
+      },
+      "UpdateAnalysisRequest" : {
+        "required" : [ "name" ],
+        "type" : "object",
+        "properties" : {
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "UpdateDiagramRequest" : {
+        "required" : [ "title" ],
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          },
+          "title" : {
+            "type" : "string"
+          }
+        }
+      },
+      "UpdateEvaluationNameRequest" : {
+        "required" : [ "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractUpdateEvaluationRequest"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "name" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "UpdateEvaluationTemplateRequest" : {
+        "required" : [ "name" ],
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "UpdateEvaluationTimeRangeRequest" : {
+        "required" : [ "timeRange" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractUpdateEvaluationRequest"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "timeRange" : {
+              "$ref" : "#/components/schemas/TimeRange"
+            }
+          }
+        } ]
+      },
+      "UpdateReportSeriesRequest" : {
+        "required" : [ "name" ],
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "User" : {
+        "required" : [ "enabled", "firstName", "lastName", "userId", "username" ],
+        "type" : "object",
+        "properties" : {
+          "email" : {
+            "type" : "string",
+            "description" : "The email address of a user.",
+            "example" : "example@mail.de"
+          },
+          "enabled" : {
+            "type" : "boolean",
+            "description" : "True, if the user can login",
+            "example" : false
+          },
+          "externalChatUsername" : {
+            "type" : "string",
+            "description" : "The chat username of the gematik TI-Messenger (matrix chat).",
+            "example" : "@username:server"
+          },
+          "firstName" : {
+            "type" : "string",
+            "description" : "The given name(s) of a user.",
+            "example" : "John"
+          },
+          "lastName" : {
+            "type" : "string",
+            "description" : "The last name of a user.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "type" : "string",
+            "description" : "The phone number of a user.",
+            "example" : "+491234567890"
+          },
+          "userId" : {
+            "type" : "string",
+            "description" : "The Id of the user.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "username" : {
+            "type" : "string",
+            "description" : "The username which is displayed in the application and can be used for the login.",
+            "example" : "testuser"
+          }
+        }
+      },
+      "ValueOption" : {
+        "required" : [ "meaning", "value" ],
+        "type" : "object",
+        "properties" : {
+          "meaning" : {
+            "type" : "string"
+          },
+          "value" : {
+            "type" : "string"
+          }
+        }
+      },
+      "ValueOptionFilterParameter" : {
+        "required" : [ "attribute", "searchForNull", "searchValues" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/TableColumnFilterParameter"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "attribute" : {
+              "$ref" : "#/components/schemas/AttributeSelection"
+            },
+            "searchForNull" : {
+              "type" : "boolean"
+            },
+            "searchValues" : {
+              "type" : "array",
+              "items" : {
+                "type" : "string"
+              }
+            }
+          }
+        } ]
+      },
+      "ValueWithOptionsAttribute" : {
+        "required" : [ "code", "name", "valueOptions" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractTableColumnHeaderAttribute"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "code" : {
+              "type" : "string"
+            },
+            "name" : {
+              "type" : "string"
+            },
+            "valueOptions" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/ValueOption"
+              }
+            }
+          }
+        } ]
+      }
+    }
+  }
+}
diff --git a/backend/statistics/openApi.yaml b/backend/statistics/openApi.yaml
deleted file mode 100644
index 3c266692e..000000000
--- a/backend/statistics/openApi.yaml
+++ /dev/null
@@ -1,3752 +0,0 @@
-# Copyright 2025 cronn GmbH
-# SPDX-License-Identifier: AGPL-3.0-only
-
-openapi: 3.0.1
-info:
-  description: This is the API for the statistics module
-  title: Statistics Module API
-  version: "0.1"
-servers:
-- url: http://localhost:8087
-paths:
-  /central-repository/evaluation-template:
-    get:
-      operationId: getEvaluationTemplatesFromRepository
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetEvaluationTemplatesFromRepositoryResponse"
-          description: Get meta data of uploaded evaluation templates
-      summary: Meta data of uploaded evaluation templates
-      tags:
-      - StatisticsCentralRepository
-    post:
-      operationId: uploadEvaluationTemplateToRepository
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddEvaluationTemplateToRepositoryRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/EvaluationTemplateFromRepository"
-          description: Returns the information about the uploaded evaluation template
-      summary: Upload an evaluation template to the central repository
-      tags:
-      - StatisticsCentralRepository
-  /central-repository/evaluation-template/{id}/{version}:
-    delete:
-      operationId: deleteEvaluationTemplateFromRepository
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: path
-        name: version
-        required: true
-        schema:
-          type: integer
-          format: int32
-      responses:
-        "200":
-          description: Returned when the evaluation template was deleted
-      summary: Delete an evaluation template from the central repository
-      tags:
-      - StatisticsCentralRepository
-    get:
-      operationId: getEvaluationTemplateFromRepository
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: path
-        name: version
-        required: true
-        schema:
-          type: integer
-          format: int32
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/EvaluationTemplateDetailsFromRepository"
-          description: Get information about an uploaded evaluation template
-      summary: Information about an uploaded evaluation template
-      tags:
-      - StatisticsCentralRepository
-    post:
-      operationId: downloadEvaluationTemplateFromRepository
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: path
-        name: version
-        required: true
-        schema:
-          type: integer
-          format: int32
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: uuid
-          description: The id of the locally stored evaluation template
-      summary: Download an evaluation template from the central repository
-      tags:
-      - StatisticsCentralRepository
-  /data-export/diagram/{diagramId}:
-    get:
-      operationId: exportDiagramData
-      parameters:
-      - in: path
-        name: diagramId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: binary
-          description: Exported diagram data
-      summary: Export diagram data
-      tags:
-      - DataExport
-  /data-export/evaluation/{evaluationId}:
-    get:
-      operationId: exportEvaluationData
-      parameters:
-      - in: path
-        name: evaluationId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: binary
-          description: Exported evaluation raw data
-      summary: Export evaluation data
-      tags:
-      - DataExport
-  /data-export/report/{reportId}:
-    get:
-      operationId: exportReportData
-      parameters:
-      - in: path
-        name: reportId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: binary
-          description: Exported report raw data
-      summary: Export report data
-      tags:
-      - DataExport
-  /data-source:
-    get:
-      operationId: getAvailableDataSources
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetAvailableDataSourcesResponse"
-          description: The aggregated available data sources
-      summary: Get available data sources
-      tags:
-      - DataSource
-  /evaluation:
-    post:
-      operationId: addEvaluation
-      requestBody:
-        content:
-          application/json:
-            schema:
-              oneOf:
-              - $ref: "#/components/schemas/AddEvaluationWithDataSourcesRequest"
-              - $ref: "#/components/schemas/AddEvaluationWithTemplateRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: uuid
-          description: The UUID of the evaluation
-      summary: Add evaluation
-      tags:
-      - Evaluation
-  /evaluation-template:
-    get:
-      operationId: getAllMinimalEvaluationTemplateInfos
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetAllMinimalEvaluationTemplateInfosResponse"
-          description: Minimal info to all evaluation templates
-      summary: Get the minimal info of all evaluation templates
-      tags:
-      - EvaluationTemplate
-    post:
-      operationId: addEvaluationTemplate
-      requestBody:
-        content:
-          application/json:
-            schema:
-              oneOf:
-              - $ref: "#/components/schemas/AddEvaluationTemplateFromEvaluationRequest"
-              - $ref: "#/components/schemas/AddEvaluationTemplateWithDataSourcesRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/EvaluationTemplate"
-          description: The added evaluation template
-      summary: Add an evaluation template
-      tags:
-      - EvaluationTemplate
-  /evaluation-template/expected-template/{evaluationId}:
-    get:
-      operationId: getTemplateInformation
-      parameters:
-      - in: path
-        name: evaluationId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/ExpectedEvaluationTemplate"
-          description: The information for a template based on this evaluation
-      summary: Get the information for the expected template
-      tags:
-      - EvaluationTemplate
-  /evaluation-template/overview:
-    post:
-      operationId: getEvaluationTemplateOverview
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GetEvaluationTemplatesRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetEvaluationTemplatesResponse"
-          description: Evaluation template overview page
-      summary: Get evaluation template entries for the overview page
-      tags:
-      - EvaluationTemplate
-  /evaluation-template/{templateId}:
-    delete:
-      operationId: deleteEvaluationTemplate
-      parameters:
-      - in: path
-        name: templateId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Returned when the evaluation template is deleted
-      summary: Delete an evaluation template
-      tags:
-      - EvaluationTemplate
-    get:
-      operationId: getEvaluationTemplate
-      parameters:
-      - in: path
-        name: templateId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/EvaluationTemplate"
-          description: The evaluation template
-      summary: Get an evaluation template
-      tags:
-      - EvaluationTemplate
-    patch:
-      operationId: updateEvaluationTemplate
-      parameters:
-      - in: path
-        name: templateId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateEvaluationTemplateRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/EvaluationTemplate"
-          description: The patched evaluation template
-      summary: Change name and description of an evaluation template
-      tags:
-      - EvaluationTemplate
-  /evaluation/analysis:
-    post:
-      operationId: addAnalysis
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddAnalysisRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Analysis"
-          description: The added analysis
-      summary: Add an analysis
-      tags:
-      - Analysis
-  /evaluation/analysis/diagram/{diagramId}:
-    delete:
-      operationId: deleteDiagram
-      parameters:
-      - in: path
-        name: diagramId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Returned when the diagram is deleted
-      summary: Delete a diagram
-      tags:
-      - Analysis
-    patch:
-      operationId: updateDiagram
-      parameters:
-      - in: path
-        name: diagramId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateDiagramRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Diagram"
-          description: The patched diagram
-      summary: Change title and description of a diagram
-      tags:
-      - Analysis
-  /evaluation/analysis/{analysisId}:
-    delete:
-      operationId: deleteAnalysis
-      parameters:
-      - in: path
-        name: analysisId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Returned when the analysis is deleted
-      summary: Delete an analysis
-      tags:
-      - Analysis
-    get:
-      operationId: getAnalysis
-      parameters:
-      - in: path
-        name: analysisId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/AnalysisWithDiagrams"
-          description: The requested analysis
-      summary: Get an analysis by id
-      tags:
-      - Analysis
-    patch:
-      operationId: updateAnalysis
-      parameters:
-      - in: path
-        name: analysisId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateAnalysisRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Analysis"
-          description: The patched analysis
-      summary: Change the name of an analysis
-      tags:
-      - Analysis
-    post:
-      operationId: addDiagram
-      parameters:
-      - in: path
-        name: analysisId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddDiagramRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: uuid
-          description: The id of the diagram
-      summary: Add a diagram to the analysis
-      tags:
-      - Analysis
-  /evaluation/clone:
-    post:
-      operationId: cloneEvaluation
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CloneEvaluationRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: uuid
-          description: The UUID of the cloned evaluation
-      summary: Clone an evaluation
-      tags:
-      - Evaluation
-  /evaluation/completeness/{evaluationId}:
-    get:
-      operationId: getCompletenessInformation
-      parameters:
-      - in: path
-        name: evaluationId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetCompletenessDataResponse"
-          description: Completeness of an evaluation
-      summary: Get information about the completeness of the evaluation data
-      tags:
-      - Evaluation
-  /evaluation/overview:
-    post:
-      operationId: getEvaluations
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GetEvaluationsRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetEvaluationsResponse"
-          description: All evaluations
-      summary: Get all evaluations
-      tags:
-      - Evaluation
-  /evaluation/report-series:
-    post:
-      operationId: addReportSeries
-      requestBody:
-        content:
-          application/json:
-            schema:
-              oneOf:
-              - $ref: "#/components/schemas/AddAutoReportSeriesRequest"
-              - $ref: "#/components/schemas/AddManualReportSeriesRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/ReportSeries"
-          description: The added report series
-      summary: Add a report series
-      tags:
-      - ReportSeries
-  /evaluation/report-series/deactivate/{reportSeriesId}:
-    patch:
-      operationId: deactivateReportSeries
-      parameters:
-      - in: path
-        name: reportSeriesId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Returned when the report series is deactivated
-      summary: Deactivate a report series
-      tags:
-      - ReportSeries
-  /evaluation/report-series/overview:
-    post:
-      operationId: getReportOverview
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GetReportsRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetReportsResponse"
-          description: Report overview page
-      summary: Get report series entries for the overview page
-      tags:
-      - ReportSeries
-  /evaluation/report-series/{reportSeriesId}:
-    delete:
-      operationId: deleteReportSeries
-      parameters:
-      - in: path
-        name: reportSeriesId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Returned when the report series is deleted
-      summary: Delete a report series with the reports
-      tags:
-      - ReportSeries
-    patch:
-      operationId: updateReportSeries
-      parameters:
-      - in: path
-        name: reportSeriesId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateReportSeriesRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/ReportSeries"
-          description: The patched report series
-      summary: Change title and description of a report series
-      tags:
-      - ReportSeries
-  /evaluation/report/{reportId}:
-    delete:
-      operationId: deleteReport
-      parameters:
-      - in: path
-        name: reportId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Returned when the report is deleted
-      summary: Delete a report
-      tags:
-      - Report
-    get:
-      operationId: getReportDetailPage
-      parameters:
-      - in: path
-        name: reportId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetReportDetailPageResponse"
-          description: The information for the detail page
-      summary: Get the information for the detail page
-      tags:
-      - Report
-  /evaluation/retrieve-data/{evaluationId}:
-    post:
-      operationId: getEvaluation
-      parameters:
-      - in: path
-        name: evaluationId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/GetEvaluationRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetEvaluationResponse"
-          description: Evaluation with data
-      summary: Get data from one evaluation
-      tags:
-      - Evaluation
-  /evaluation/{evaluationId}:
-    delete:
-      operationId: deleteEvaluation
-      parameters:
-      - in: path
-        name: evaluationId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Returned when the evaluation is deleted
-      summary: Delete an evaluation
-      tags:
-      - Evaluation
-    get:
-      operationId: getDetailPageInformation
-      parameters:
-      - in: path
-        name: evaluationId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetDetailPageInformationResponse"
-          description: The information for the detail page
-      summary: Get the information for the detail page
-      tags:
-      - Evaluation
-    patch:
-      operationId: updateEvaluation
-      parameters:
-      - in: path
-        name: evaluationId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              oneOf:
-              - $ref: "#/components/schemas/UpdateEvaluationNameRequest"
-              - $ref: "#/components/schemas/UpdateEvaluationTimeRangeRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Update evaluation
-      tags:
-      - Evaluation
-  /evaluation/{evaluationId}/report-series:
-    get:
-      operationId: getReportSeriesEntriesOfEvaluation
-      parameters:
-      - in: path
-        name: evaluationId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetReportSeriesEntriesOfEvaluationResponse"
-          description: Report series entries for the evaluation
-      summary: Get report series entries for the evaluation
-      tags:
-      - Evaluation
-  /feature-toggles:
-    get:
-      operationId: getFeatureToggles
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetStatisticsFeatureTogglesResponse"
-          description: OK
-      tags:
-      - StatisticsFeatureToggles
-  /filter-template:
-    post:
-      operationId: addFilterTemplate
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddFilterTemplateRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: uuid
-          description: The UUID of the filter template
-      summary: Add filter template
-      tags:
-      - FilterTemplate
-  /filter-template/evaluation/{evaluationId}:
-    get:
-      operationId: findFilterTemplatesForEvaluation
-      parameters:
-      - in: path
-        name: evaluationId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetFilterTemplatesForEvaluationResponse"
-          description: Fitting filter templates for an evaluation
-      summary: Get filter templates that can be used on the evaluation
-      tags:
-      - FilterTemplate
-  /filter-template/{filterTemplateId}:
-    delete:
-      operationId: deleteFilterTemplate
-      parameters:
-      - in: path
-        name: filterTemplateId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Returned when the filter template is deleted
-      summary: Delete a filter template
-      tags:
-      - FilterTemplate
-    get:
-      operationId: getFilterTemplate
-      parameters:
-      - in: path
-        name: filterTemplateId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/FilterTemplate"
-          description: The information for the detail page
-      summary: Get the information for the detail page
-      tags:
-      - FilterTemplate
-  /geo-shape:
-    get:
-      operationId: getGeoShapes
-      parameters:
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/GeoShapeSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: page
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 25
-          maximum: 200
-          minimum: 1
-      - in: query
-        name: onlyActive
-        required: false
-        schema:
-          type: boolean
-          default: false
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGeoShapesResponse"
-          description: All geo shapes
-      summary: Get meta data of all geo shapes
-      tags:
-      - GeoShape
-    post:
-      operationId: addGeoShape
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                file:
-                  type: string
-                  format: binary
-                title:
-                  type: string
-              required:
-              - file
-              - title
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: uuid
-          description: The id of the geo shape
-      summary: Upload and save a geo json file
-      tags:
-      - GeoShape
-  /geo-shape/{geoShapeId}:
-    delete:
-      operationId: deleteGeoShape
-      parameters:
-      - in: path
-        name: geoShapeId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Returned when the geo shape is deleted
-      summary: Delete a geo shape
-      tags:
-      - GeoShape
-    get:
-      operationId: getGeoShape
-      parameters:
-      - in: path
-        name: geoShapeId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GeoShape"
-          description: The geo shape of the requested id
-      summary: Get the geo shape for the id
-      tags:
-      - GeoShape
-    patch:
-      operationId: updateGeoShape
-      parameters:
-      - in: path
-        name: geoShapeId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              oneOf:
-              - $ref: "#/components/schemas/GeoShapeChangeStatusRequest"
-              - $ref: "#/components/schemas/GeoShapeChangeTitleRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GeoShapeMetaInfo"
-          description: The changed geo shape of the requested id
-      summary: Change the geo shape with the id
-      tags:
-      - GeoShape
-  /test-helper/archiving-job:
-    post:
-      operationId: runArchivingJob
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/audit-log-storage:
-    delete:
-      operationId: clearAuditLogStorageDirectory
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/enabled-new-features/{featureToEnable}:
-    post:
-      operationId: enableNewFeature
-      parameters:
-      - in: path
-        name: featureToEnable
-        required: true
-        schema:
-          $ref: "#/components/schemas/StatisticsFeature"
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/finish-auto-reports:
-    post:
-      operationId: finishAutoReports
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/populate-based-on-evaluation/{evaluationId}:
-    post:
-      operationId: createOtherEntities
-      parameters:
-      - in: path
-        name: evaluationId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/populate-create-evaluation/{businessModuleName}/{anonymized}:
-    post:
-      operationId: createEvaluation
-      parameters:
-      - in: path
-        name: businessModuleName
-        required: true
-        schema:
-          type: string
-      - in: path
-        name: anonymized
-        required: true
-        schema:
-          type: boolean
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: uuid
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-components:
-  schemas:
-    AbstractAddChartConfiguration:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    AbstractAddEvaluationRequest:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    AbstractAddEvaluationTemplateRequest:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    AbstractAddReportSeriesRequest:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    AbstractChartConfiguration:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    AbstractGeoShapeChangeRequest:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    AbstractTableColumnHeaderAttribute:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    AbstractUpdateEvaluationRequest:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    AddAnalysisRequest:
-      type: object
-      properties:
-        chartConfiguration:
-          oneOf:
-          - $ref: "#/components/schemas/AddChoroplethMapConfiguration"
-          - $ref: "#/components/schemas/BarChartConfiguration"
-          - $ref: "#/components/schemas/HistogramChartConfiguration"
-          - $ref: "#/components/schemas/LineChartConfiguration"
-          - $ref: "#/components/schemas/PieChartConfiguration"
-          - $ref: "#/components/schemas/ScatterChartConfiguration"
-        evaluationId:
-          type: string
-          format: uuid
-        name:
-          type: string
-      required:
-      - chartConfiguration
-      - evaluationId
-      - name
-    AddAutoReportSeriesRequest:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractAddReportSeriesRequest"
-      - type: object
-        properties:
-          description:
-            type: string
-          evaluationId:
-            type: string
-            format: uuid
-          frequency:
-            $ref: "#/components/schemas/Frequency"
-          name:
-            type: string
-          reportingPeriod:
-            $ref: "#/components/schemas/ReportingPeriod"
-          startMonth:
-            type: integer
-            format: int32
-            maximum: 12
-            minimum: 1
-      required:
-      - evaluationId
-      - frequency
-      - name
-      - reportingPeriod
-      - startMonth
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    AddChoroplethMapConfiguration:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractAddChartConfiguration"
-      - type: object
-        properties:
-          calculation:
-            $ref: "#/components/schemas/Calculation"
-          colorScheme:
-            type: string
-          geoShapeId:
-            type: string
-            format: uuid
-          primaryAttribute:
-            $ref: "#/components/schemas/AttributeSelection"
-          secondaryAttribute:
-            $ref: "#/components/schemas/AttributeSelection"
-      required:
-      - colorScheme
-      - geoShapeId
-      - primaryAttribute
-    AddDiagramRequest:
-      type: object
-      properties:
-        description:
-          type: string
-        filters:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/BooleanFilterParameter"
-            - $ref: "#/components/schemas/DecimalRangeFilterParameter"
-            - $ref: "#/components/schemas/DecimalValueFilterParameter"
-            - $ref: "#/components/schemas/IntegerRangeFilterParameter"
-            - $ref: "#/components/schemas/IntegerValueFilterParameter"
-            - $ref: "#/components/schemas/NullFilterParameter"
-            - $ref: "#/components/schemas/TextFilterParameter"
-            - $ref: "#/components/schemas/ValueOptionFilterParameter"
-        title:
-          type: string
-      required:
-      - title
-    AddEvaluationTemplateFromEvaluationRequest:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractAddEvaluationTemplateRequest"
-      - type: object
-        properties:
-          description:
-            type: string
-          evaluationId:
-            type: string
-            format: uuid
-          name:
-            type: string
-      required:
-      - evaluationId
-      - name
-    AddEvaluationTemplateToRepositoryRequest:
-      type: object
-      properties:
-        changelog:
-          type: string
-        contact:
-          type: string
-        description:
-          type: string
-        name:
-          type: string
-        templateId:
-          type: string
-          format: uuid
-      required:
-      - name
-      - templateId
-    AddEvaluationTemplateWithDataSourcesRequest:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractAddEvaluationTemplateRequest"
-      - type: object
-        properties:
-          dataSources:
-            type: array
-            items:
-              $ref: "#/components/schemas/DataSource"
-            maxItems: 1
-            minItems: 1
-          name:
-            type: string
-      required:
-      - dataSources
-      - name
-    AddEvaluationWithDataSourcesRequest:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractAddEvaluationRequest"
-      - type: object
-        properties:
-          anonymized:
-            type: boolean
-          dataSources:
-            type: array
-            items:
-              $ref: "#/components/schemas/DataSource"
-            maxItems: 1
-            minItems: 1
-          name:
-            type: string
-          timeRangeEnd:
-            type: string
-            format: date-time
-          timeRangeStart:
-            type: string
-            format: date-time
-      required:
-      - anonymized
-      - dataSources
-      - name
-      - timeRangeEnd
-      - timeRangeStart
-    AddEvaluationWithTemplateRequest:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractAddEvaluationRequest"
-      - type: object
-        properties:
-          anonymized:
-            type: boolean
-          name:
-            type: string
-          templateId:
-            type: string
-            format: uuid
-          timeRangeEnd:
-            type: string
-            format: date-time
-          timeRangeStart:
-            type: string
-            format: date-time
-      required:
-      - anonymized
-      - name
-      - templateId
-      - timeRangeEnd
-      - timeRangeStart
-    AddFilterTemplateRequest:
-      type: object
-      properties:
-        filters:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/BooleanFilterParameter"
-            - $ref: "#/components/schemas/DecimalRangeFilterParameter"
-            - $ref: "#/components/schemas/DecimalValueFilterParameter"
-            - $ref: "#/components/schemas/IntegerRangeFilterParameter"
-            - $ref: "#/components/schemas/IntegerValueFilterParameter"
-            - $ref: "#/components/schemas/NullFilterParameter"
-            - $ref: "#/components/schemas/TextFilterParameter"
-            - $ref: "#/components/schemas/ValueOptionFilterParameter"
-          maxItems: 2147483647
-          minItems: 1
-        name:
-          type: string
-      required:
-      - filters
-      - name
-    AddManualReportSeriesRequest:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractAddReportSeriesRequest"
-      - type: object
-        properties:
-          description:
-            type: string
-          evaluationId:
-            type: string
-            format: uuid
-          name:
-            type: string
-          timeRangeEnd:
-            type: string
-            format: date-time
-          timeRangeStart:
-            type: string
-            format: date-time
-      required:
-      - evaluationId
-      - name
-      - timeRangeEnd
-      - timeRangeStart
-    Analysis:
-      type: object
-      properties:
-        chartConfiguration:
-          oneOf:
-          - $ref: "#/components/schemas/BarChartConfiguration"
-          - $ref: "#/components/schemas/ChoroplethMapConfiguration"
-          - $ref: "#/components/schemas/HistogramChartConfiguration"
-          - $ref: "#/components/schemas/LineChartConfiguration"
-          - $ref: "#/components/schemas/PieChartConfiguration"
-          - $ref: "#/components/schemas/ScatterChartConfiguration"
-        createdAt:
-          type: string
-          format: date-time
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-        numberOfDiagrams:
-          type: integer
-          format: int32
-      required:
-      - chartConfiguration
-      - createdAt
-      - id
-      - name
-      - numberOfDiagrams
-    AnalysisInfo:
-      type: object
-      properties:
-        '@type':
-          type: string
-        diagramTitles:
-          type: array
-          items:
-            type: string
-        name:
-          type: string
-      required:
-      - '@type'
-      - diagramTitles
-      - name
-    AnalysisWithDiagrams:
-      type: object
-      properties:
-        chartConfiguration:
-          oneOf:
-          - $ref: "#/components/schemas/BarChartConfiguration"
-          - $ref: "#/components/schemas/ChoroplethMapConfiguration"
-          - $ref: "#/components/schemas/HistogramChartConfiguration"
-          - $ref: "#/components/schemas/LineChartConfiguration"
-          - $ref: "#/components/schemas/PieChartConfiguration"
-          - $ref: "#/components/schemas/ScatterChartConfiguration"
-        createdAt:
-          type: string
-          format: date-time
-        diagrams:
-          type: array
-          items:
-            $ref: "#/components/schemas/Diagram"
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-      required:
-      - chartConfiguration
-      - createdAt
-      - diagrams
-      - id
-      - name
-    AttributeSelection:
-      type: object
-      properties:
-        baseModuleAttributeCode:
-          type: string
-        businessModuleAttributeCode:
-          type: string
-        businessModuleName:
-          type: string
-        dataSourceId:
-          type: string
-          format: uuid
-      required:
-      - businessModuleAttributeCode
-      - businessModuleName
-      - dataSourceId
-    AvailableDataSource:
-      type: object
-      properties:
-        attributes:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessDataSourceAttribute"
-        businessModuleName:
-          type: string
-        canBeAnonymized:
-          type: boolean
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-        sensitiveDataAllowed:
-          type: boolean
-        sensitivity:
-          $ref: "#/components/schemas/DataSourceSensitivity"
-      required:
-      - attributes
-      - businessModuleName
-      - canBeAnonymized
-      - id
-      - name
-      - sensitiveDataAllowed
-      - sensitivity
-    BarChartConfiguration:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractAddChartConfiguration"
-      - type: object
-        properties:
-          grouping:
-            $ref: "#/components/schemas/Grouping"
-          orientation:
-            $ref: "#/components/schemas/Orientation"
-          primaryAttribute:
-            $ref: "#/components/schemas/AttributeSelection"
-          scaling:
-            $ref: "#/components/schemas/Scaling"
-          secondaryAttribute:
-            $ref: "#/components/schemas/AttributeSelection"
-      - $ref: "#/components/schemas/AbstractChartConfiguration"
-      required:
-      - orientation
-      - primaryAttribute
-    BarChartData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/DiagramData"
-      - type: object
-        properties:
-          barChartGroupDatas:
-            type: array
-            items:
-              $ref: "#/components/schemas/BarGroupData"
-      required:
-      - barChartGroupDatas
-    BarGroupData:
-      type: object
-      properties:
-        key:
-          type: string
-        keyToCounts:
-          type: array
-          items:
-            $ref: "#/components/schemas/KeyToCount"
-      required:
-      - key
-      - keyToCounts
-    BaseDataAttributeWithName:
-      type: object
-      properties:
-        code:
-          type: string
-        displayName:
-          type: string
-      required:
-      - code
-      - displayName
-    BaseDataSourceAttribute:
-      type: object
-      properties:
-        code:
-          type: string
-        displayName:
-          type: string
-        name:
-          type: string
-      required:
-      - code
-      - displayName
-      - name
-    BaseModuleIdAttribute:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractTableColumnHeaderAttribute"
-      - type: object
-        properties:
-          baseAttribute:
-            oneOf:
-            - $ref: "#/components/schemas/BaseModuleIdAttribute"
-            - $ref: "#/components/schemas/BooleanAttribute"
-            - $ref: "#/components/schemas/DateAttribute"
-            - $ref: "#/components/schemas/DecimalAttribute"
-            - $ref: "#/components/schemas/IntegerAttribute"
-            - $ref: "#/components/schemas/ProcedureReferenceAttribute"
-            - $ref: "#/components/schemas/TextAttribute"
-            - $ref: "#/components/schemas/ValueWithOptionsAttribute"
-          code:
-            type: string
-          name:
-            type: string
-      required:
-      - baseAttribute
-      - code
-      - name
-    BinningMode:
-      type: string
-      enum:
-      - AUTO
-      - MANUAL
-    BooleanAttribute:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractTableColumnHeaderAttribute"
-      - type: object
-        properties:
-          code:
-            type: string
-          name:
-            type: string
-      required:
-      - code
-      - name
-    BooleanFilterParameter:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/TableColumnFilterParameter"
-      - type: object
-        properties:
-          attribute:
-            $ref: "#/components/schemas/AttributeSelection"
-          searchForFalse:
-            type: boolean
-          searchForNull:
-            type: boolean
-          searchForTrue:
-            type: boolean
-      required:
-      - attribute
-      - searchForFalse
-      - searchForNull
-      - searchForTrue
-    BusinessDataAttribute:
-      type: object
-      properties:
-        baseAttributeCodes:
-          type: array
-          items:
-            type: string
-        code:
-          type: string
-      required:
-      - code
-    BusinessDataAttributeWithName:
-      type: object
-      properties:
-        baseDataAttributes:
-          type: array
-          items:
-            $ref: "#/components/schemas/BaseDataAttributeWithName"
-        code:
-          type: string
-        name:
-          type: string
-      required:
-      - baseDataAttributes
-      - code
-      - name
-    BusinessDataSourceAttribute:
-      type: object
-      properties:
-        baseAttributes:
-          type: array
-          items:
-            $ref: "#/components/schemas/BaseDataSourceAttribute"
-        category:
-          type: string
-        code:
-          type: string
-        name:
-          type: string
-      required:
-      - category
-      - code
-      - name
-    Calculation:
-      type: string
-      enum:
-      - MEAN
-      - SUM
-    ChoroplethMapConfiguration:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractChartConfiguration"
-      - type: object
-        properties:
-          calculation:
-            $ref: "#/components/schemas/Calculation"
-          colorScheme:
-            type: string
-          geoJson:
-            type: string
-          primaryAttribute:
-            $ref: "#/components/schemas/AttributeSelection"
-          secondaryAttribute:
-            $ref: "#/components/schemas/AttributeSelection"
-      required:
-      - colorScheme
-      - primaryAttribute
-    ChoroplethMapData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/DiagramData"
-      - type: object
-        properties:
-          keyToValues:
-            type: array
-            items:
-              $ref: "#/components/schemas/KeyToValue"
-      required:
-      - keyToValues
-    CloneEvaluationRequest:
-      type: object
-      properties:
-        clonedEvaluationName:
-          type: string
-        originalEvaluationId:
-          type: string
-          format: uuid
-      required:
-      - clonedEvaluationName
-      - originalEvaluationId
-    CompletenessOfAttribute:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    CompletenessOfBaseAttribute:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/CompletenessOfAttribute"
-      - type: object
-        properties:
-          baseAttributeCode:
-            type: string
-          baseAttributeName:
-            type: string
-          businessAttributeCode:
-            type: string
-          businessAttributeName:
-            type: string
-          businessModuleName:
-            type: string
-          dataSourceId:
-            type: string
-            format: uuid
-          mandatory:
-            type: boolean
-          percentNull:
-            type: number
-          percentSum:
-            type: number
-          percentUnknown:
-            type: number
-          unknownValue:
-            type: string
-      required:
-      - baseAttributeCode
-      - baseAttributeName
-      - businessAttributeCode
-      - businessAttributeName
-      - businessModuleName
-      - dataSourceId
-      - mandatory
-      - percentNull
-      - percentSum
-    CompletenessOfBusinessAttribute:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/CompletenessOfAttribute"
-      - type: object
-        properties:
-          businessModuleName:
-            type: string
-          code:
-            type: string
-          dataSourceId:
-            type: string
-            format: uuid
-          mandatory:
-            type: boolean
-          name:
-            type: string
-          percentNull:
-            type: number
-          percentSum:
-            type: number
-          percentUnknown:
-            type: number
-          unknownValue:
-            type: string
-      required:
-      - businessModuleName
-      - code
-      - dataSourceId
-      - mandatory
-      - name
-      - percentNull
-      - percentSum
-    DataPoint:
-      type: object
-      properties:
-        x:
-          type: number
-        "y":
-          type: number
-      required:
-      - x
-      - "y"
-    DataPointGroup:
-      type: object
-      properties:
-        dataPoints:
-          type: array
-          items:
-            $ref: "#/components/schemas/DataPoint"
-        key:
-          type: string
-        trendLine:
-          $ref: "#/components/schemas/TrendLine"
-      required:
-      - dataPoints
-      - key
-    DataRow:
-      type: object
-      properties:
-        values:
-          type: array
-          items:
-            type: object
-      required:
-      - values
-    DataSource:
-      type: object
-      properties:
-        attributeCodes:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessDataAttribute"
-          maxItems: 2147483647
-          minItems: 1
-        businessModuleName:
-          type: string
-        id:
-          type: string
-          format: uuid
-      required:
-      - attributeCodes
-      - businessModuleName
-      - id
-    DataSourceSensitivity:
-      type: string
-      enum:
-      - SENSITIVE
-      - INTERNAL_USAGE
-      - ANONYMOUS
-    DataSourceWithAttributeNames:
-      type: object
-      properties:
-        businessModuleName:
-          type: string
-        dataAttributes:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessDataAttributeWithName"
-          maxItems: 2147483647
-          minItems: 1
-        dataSourceName:
-          type: string
-        id:
-          type: string
-          format: uuid
-      required:
-      - businessModuleName
-      - dataAttributes
-      - dataSourceName
-      - id
-    DateAttribute:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractTableColumnHeaderAttribute"
-      - type: object
-        properties:
-          code:
-            type: string
-          name:
-            type: string
-          valueOptions:
-            type: array
-            items:
-              $ref: "#/components/schemas/ValueOption"
-      required:
-      - code
-      - name
-    DateSpan:
-      type: object
-      properties:
-        lowerBoundary:
-          type: string
-          format: date-time
-        upperBoundary:
-          type: string
-          format: date-time
-    DecimalAttribute:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractTableColumnHeaderAttribute"
-      - type: object
-        properties:
-          code:
-            type: string
-          maxValue:
-            type: number
-          minValue:
-            type: number
-          name:
-            type: string
-          unit:
-            type: string
-          valueOptions:
-            type: array
-            items:
-              $ref: "#/components/schemas/ValueOption"
-      required:
-      - code
-      - name
-    DecimalRangeFilterParameter:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/TableColumnFilterParameter"
-      - type: object
-        properties:
-          attribute:
-            $ref: "#/components/schemas/AttributeSelection"
-          maxValueInclusive:
-            type: number
-          minValueInclusive:
-            type: number
-          withNullValues:
-            type: boolean
-      required:
-      - attribute
-      - maxValueInclusive
-      - minValueInclusive
-      - withNullValues
-    DecimalValueFilterParameter:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/TableColumnFilterParameter"
-      - type: object
-        properties:
-          attribute:
-            $ref: "#/components/schemas/AttributeSelection"
-          numericComparison:
-            $ref: "#/components/schemas/NumericComparison"
-          value:
-            type: number
-          withNullValues:
-            type: boolean
-      required:
-      - attribute
-      - numericComparison
-      - value
-      - withNullValues
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    Diagram:
-      type: object
-      properties:
-        description:
-          type: string
-        diagramData:
-          oneOf:
-          - $ref: "#/components/schemas/BarChartData"
-          - $ref: "#/components/schemas/ChoroplethMapData"
-          - $ref: "#/components/schemas/HistogramChartDataCategorized"
-          - $ref: "#/components/schemas/HistogramChartDataSimple"
-          - $ref: "#/components/schemas/LineChartDataCategorized"
-          - $ref: "#/components/schemas/LineChartDataSimple"
-          - $ref: "#/components/schemas/PieChartData"
-          - $ref: "#/components/schemas/ScatterChartDataCategorized"
-          - $ref: "#/components/schemas/ScatterChartDataSimple"
-        evaluatedDataAmount:
-          type: integer
-          format: int32
-        filters:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/BooleanFilterParameter"
-            - $ref: "#/components/schemas/DecimalRangeFilterParameter"
-            - $ref: "#/components/schemas/DecimalValueFilterParameter"
-            - $ref: "#/components/schemas/IntegerRangeFilterParameter"
-            - $ref: "#/components/schemas/IntegerValueFilterParameter"
-            - $ref: "#/components/schemas/NullFilterParameter"
-            - $ref: "#/components/schemas/TextFilterParameter"
-            - $ref: "#/components/schemas/ValueOptionFilterParameter"
-        id:
-          type: string
-          format: uuid
-        title:
-          type: string
-      required:
-      - diagramData
-      - evaluatedDataAmount
-      - filters
-      - id
-      - title
-    DiagramData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    ErrorCode:
-      type: string
-      enum:
-      - UNEXPECTED_ERROR
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - INSUFFICIENT_USER_RIGHTS
-      - NOT_FOUND
-      - CONFLICT
-      - CONSTRAINT_VIOLATION
-      - TIMEOUT
-      - DATA_INTEGRITY_VIOLATION
-      - ALREADY_EXISTS
-      - AGGREGATION_EXCEPTION
-      - INVALID_FILE
-      - NONCONFORM_PDF
-      - CORRUPT
-      - LOCKED
-      - XLSX_TOO_MANY_ROWS
-    ErrorResponseWithLocation:
-      type: object
-      properties:
-        errorCode:
-          $ref: "#/components/schemas/ErrorCode"
-        errorLocation:
-          type: string
-        message:
-          type: string
-      required:
-      - errorCode
-      - errorLocation
-    EvaluationDataSensitivity:
-      type: string
-      enum:
-      - ANONYMOUS
-      - INTERNAL_USAGE
-      - SENSITIVE
-    EvaluationInfo:
-      type: object
-      properties:
-        createdAt:
-          type: string
-          format: date-time
-        dataSensitivity:
-          $ref: "#/components/schemas/EvaluationDataSensitivity"
-        dataSourceNames:
-          type: array
-          items:
-            type: string
-          maxItems: 2147483647
-          minItems: 1
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-        state:
-          $ref: "#/components/schemas/EvaluationState"
-        timeRangeEnd:
-          type: string
-          format: date-time
-        timeRangeStart:
-          type: string
-          format: date-time
-        tooMuchDataForExport:
-          type: boolean
-        userId:
-          type: string
-          format: uuid
-      required:
-      - createdAt
-      - dataSensitivity
-      - dataSourceNames
-      - id
-      - name
-      - state
-      - timeRangeEnd
-      - timeRangeStart
-      - tooMuchDataForExport
-      - userId
-    EvaluationSortKey:
-      type: string
-      default: CREATED_AT
-      enum:
-      - NAME
-      - CREATED_AT
-      - TIME_RANGE_START
-      - TIME_RANGE_END
-    EvaluationState:
-      type: string
-      enum:
-      - COMPLETED
-      - FAILED
-      - CREATING
-      - UPDATING
-      - COPY_ONGOING
-      - DELETING
-    EvaluationTemplate:
-      type: object
-      properties:
-        analysisInfos:
-          type: array
-          items:
-            $ref: "#/components/schemas/AnalysisInfo"
-        createdAt:
-          type: string
-          format: date-time
-        dataSources:
-          type: array
-          items:
-            $ref: "#/components/schemas/DataSourceWithAttributeNames"
-        description:
-          type: string
-        id:
-          type: string
-          format: uuid
-        lastUsageAt:
-          type: string
-          format: date-time
-        name:
-          type: string
-        templateSensitivityInfo:
-          $ref: "#/components/schemas/TemplateSensitivityInfo"
-        user:
-          $ref: "#/components/schemas/User"
-      required:
-      - analysisInfos
-      - createdAt
-      - dataSources
-      - id
-      - name
-      - templateSensitivityInfo
-    EvaluationTemplateDetailsFromRepository:
-      type: object
-      properties:
-        analysisInfos:
-          type: array
-          items:
-            $ref: "#/components/schemas/AnalysisInfo"
-        dataSources:
-          type: array
-          items:
-            $ref: "#/components/schemas/DataSourceWithAttributeNames"
-        repositoryMetaInfo:
-          $ref: "#/components/schemas/RepositoryMetaInfo"
-      required:
-      - analysisInfos
-      - dataSources
-      - repositoryMetaInfo
-    EvaluationTemplateFromRepository:
-      type: object
-      properties:
-        dataSourceNames:
-          type: string
-        repositoryMetaInfo:
-          $ref: "#/components/schemas/RepositoryMetaInfo"
-      required:
-      - dataSourceNames
-      - repositoryMetaInfo
-    EvaluationTemplateInfo:
-      type: object
-      properties:
-        analysisCount:
-          type: integer
-          format: int32
-          minimum: 0
-        createdAt:
-          type: string
-          format: date-time
-        dataSourceNames:
-          type: array
-          items:
-            type: string
-        id:
-          type: string
-          format: uuid
-        lastUsageAt:
-          type: string
-          format: date-time
-        name:
-          type: string
-        templateSensitivityInfo:
-          $ref: "#/components/schemas/TemplateSensitivityInfo"
-        userId:
-          type: string
-          format: uuid
-      required:
-      - analysisCount
-      - createdAt
-      - dataSourceNames
-      - id
-      - name
-      - templateSensitivityInfo
-      - userId
-    EvaluationTemplateSortKey:
-      type: string
-      default: CREATED_AT
-      enum:
-      - NAME
-      - ANALYSIS_COUNT
-      - CREATED_AT
-    ExpectedEvaluationTemplate:
-      type: object
-      properties:
-        analysisInfos:
-          type: array
-          items:
-            $ref: "#/components/schemas/AnalysisInfo"
-        dataSources:
-          type: array
-          items:
-            $ref: "#/components/schemas/DataSourceWithAttributeNames"
-      required:
-      - analysisInfos
-      - dataSources
-    FilterTemplate:
-      type: object
-      properties:
-        filters:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/BooleanFilterParameter"
-            - $ref: "#/components/schemas/DecimalRangeFilterParameter"
-            - $ref: "#/components/schemas/DecimalValueFilterParameter"
-            - $ref: "#/components/schemas/IntegerRangeFilterParameter"
-            - $ref: "#/components/schemas/IntegerValueFilterParameter"
-            - $ref: "#/components/schemas/NullFilterParameter"
-            - $ref: "#/components/schemas/TextFilterParameter"
-            - $ref: "#/components/schemas/ValueOptionFilterParameter"
-          maxItems: 2147483647
-          minItems: 1
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-      required:
-      - filters
-      - id
-      - name
-    FilterTemplateIdAndName:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-      required:
-      - id
-      - name
-    Frequency:
-      type: string
-      enum:
-      - PER_MONTH
-      - PER_THREE_MONTHS
-      - PER_HALF_YEAR
-      - PER_YEAR
-    GeoShape:
-      type: object
-      properties:
-        createdAt:
-          type: string
-          format: date-time
-        geoJson:
-          type: string
-        id:
-          type: string
-          format: uuid
-        status:
-          $ref: "#/components/schemas/GeoShapeStatus"
-        title:
-          type: string
-      required:
-      - createdAt
-      - geoJson
-      - id
-      - status
-      - title
-    GeoShapeChangeStatusRequest:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractGeoShapeChangeRequest"
-      - type: object
-        properties:
-          status:
-            $ref: "#/components/schemas/GeoShapeStatus"
-      required:
-      - status
-    GeoShapeChangeTitleRequest:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractGeoShapeChangeRequest"
-      - type: object
-        properties:
-          title:
-            type: string
-      required:
-      - title
-    GeoShapeMetaInfo:
-      type: object
-      properties:
-        createdAt:
-          type: string
-          format: date-time
-        id:
-          type: string
-          format: uuid
-        status:
-          $ref: "#/components/schemas/GeoShapeStatus"
-        title:
-          type: string
-      required:
-      - createdAt
-      - id
-      - status
-      - title
-    GeoShapeSortKey:
-      type: string
-      enum:
-      - TITLE
-      - CREATED_AT
-    GeoShapeStatus:
-      type: string
-      enum:
-      - ACTIVE
-      - ARCHIVED
-    GetAllMinimalEvaluationTemplateInfosResponse:
-      type: object
-      properties:
-        minimalEvaluationTemplateInfos:
-          type: array
-          items:
-            $ref: "#/components/schemas/MinimalEvaluationTemplateInfo"
-      required:
-      - minimalEvaluationTemplateInfos
-    GetAvailableDataSourcesResponse:
-      type: object
-      properties:
-        availableDataSources:
-          type: array
-          items:
-            $ref: "#/components/schemas/AvailableDataSource"
-        errorResponses:
-          type: array
-          items:
-            $ref: "#/components/schemas/ErrorResponseWithLocation"
-      required:
-      - availableDataSources
-      - errorResponses
-    GetCompletenessDataResponse:
-      type: object
-      properties:
-        completenessOfAttributes:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/CompletenessOfBaseAttribute"
-            - $ref: "#/components/schemas/CompletenessOfBusinessAttribute"
-        evaluationInfo:
-          $ref: "#/components/schemas/EvaluationInfo"
-      required:
-      - completenessOfAttributes
-      - evaluationInfo
-    GetDetailPageInformationResponse:
-      type: object
-      properties:
-        analyses:
-          type: array
-          items:
-            $ref: "#/components/schemas/Analysis"
-        evaluationInfo:
-          $ref: "#/components/schemas/EvaluationInfo"
-        tableColumnHeaders:
-          type: array
-          items:
-            $ref: "#/components/schemas/TableColumnHeader"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          minimum: 0
-        user:
-          $ref: "#/components/schemas/User"
-      required:
-      - analyses
-      - evaluationInfo
-      - tableColumnHeaders
-      - totalNumberOfElements
-    GetEvaluationRequest:
-      type: object
-      properties:
-        filters:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/BooleanFilterParameter"
-            - $ref: "#/components/schemas/DecimalRangeFilterParameter"
-            - $ref: "#/components/schemas/DecimalValueFilterParameter"
-            - $ref: "#/components/schemas/IntegerRangeFilterParameter"
-            - $ref: "#/components/schemas/IntegerValueFilterParameter"
-            - $ref: "#/components/schemas/NullFilterParameter"
-            - $ref: "#/components/schemas/TextFilterParameter"
-            - $ref: "#/components/schemas/ValueOptionFilterParameter"
-        page:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-        pageSize:
-          type: integer
-          format: int32
-          default: 25
-          minimum: 1
-        sortAttribute:
-          $ref: "#/components/schemas/AttributeSelection"
-        sortDirection:
-          $ref: "#/components/schemas/SortDirection"
-    GetEvaluationResponse:
-      type: object
-      properties:
-        dataRows:
-          type: array
-          items:
-            $ref: "#/components/schemas/DataRow"
-        evaluationInfo:
-          $ref: "#/components/schemas/EvaluationInfo"
-        tableColumnHeaders:
-          type: array
-          items:
-            $ref: "#/components/schemas/TableColumnHeader"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          minimum: 0
-      required:
-      - dataRows
-      - evaluationInfo
-      - tableColumnHeaders
-      - totalNumberOfElements
-    GetEvaluationTemplatesFilterOptions:
-      type: object
-      properties:
-        createdAt:
-          $ref: "#/components/schemas/DateSpan"
-        dataSourceIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-        name:
-          type: string
-    GetEvaluationTemplatesFromRepositoryResponse:
-      type: object
-      properties:
-        evaluationTemplates:
-          type: array
-          items:
-            $ref: "#/components/schemas/EvaluationTemplateFromRepository"
-      required:
-      - evaluationTemplates
-    GetEvaluationTemplatesRequest:
-      type: object
-      properties:
-        filterOptions:
-          $ref: "#/components/schemas/GetEvaluationTemplatesFilterOptions"
-        page:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-        pageSize:
-          type: integer
-          format: int32
-          default: 25
-          maximum: 200
-          minimum: 1
-        sortDirection:
-          $ref: "#/components/schemas/SortDirection"
-        sortKey:
-          $ref: "#/components/schemas/EvaluationTemplateSortKey"
-    GetEvaluationTemplatesResponse:
-      type: object
-      properties:
-        evaluationTemplates:
-          type: array
-          items:
-            $ref: "#/components/schemas/EvaluationTemplateInfo"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          minimum: 0
-      required:
-      - evaluationTemplates
-      - resolvedUsers
-      - totalNumberOfElements
-    GetEvaluationsFilterOptions:
-      type: object
-      properties:
-        dataSensitivities:
-          type: array
-          items:
-            $ref: "#/components/schemas/EvaluationDataSensitivity"
-        dataSourceIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-        end:
-          $ref: "#/components/schemas/DateSpan"
-        name:
-          type: string
-        start:
-          $ref: "#/components/schemas/DateSpan"
-        states:
-          type: array
-          items:
-            $ref: "#/components/schemas/EvaluationState"
-    GetEvaluationsRequest:
-      type: object
-      properties:
-        filterOptions:
-          $ref: "#/components/schemas/GetEvaluationsFilterOptions"
-        page:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-        pageSize:
-          type: integer
-          format: int32
-          default: 25
-          maximum: 200
-          minimum: 1
-        sortDirection:
-          $ref: "#/components/schemas/SortDirection"
-        sortKey:
-          $ref: "#/components/schemas/EvaluationSortKey"
-    GetEvaluationsResponse:
-      type: object
-      properties:
-        evaluations:
-          type: array
-          items:
-            $ref: "#/components/schemas/EvaluationInfo"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          minimum: 0
-      required:
-      - evaluations
-      - resolvedUsers
-      - totalNumberOfElements
-    GetFilterTemplatesForEvaluationResponse:
-      type: object
-      properties:
-        filterTemplateIdAndNames:
-          type: array
-          items:
-            $ref: "#/components/schemas/FilterTemplateIdAndName"
-      required:
-      - filterTemplateIdAndNames
-    GetGeoShapesResponse:
-      type: object
-      properties:
-        geoShapeMetaInfos:
-          type: array
-          items:
-            $ref: "#/components/schemas/GeoShapeMetaInfo"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          minimum: 0
-      required:
-      - geoShapeMetaInfos
-      - totalNumberOfElements
-    GetReportDetailPageResponse:
-      type: object
-      properties:
-        analyses:
-          type: array
-          items:
-            $ref: "#/components/schemas/Analysis"
-        dataSensitivity:
-          $ref: "#/components/schemas/ReportDataSensitivity"
-        description:
-          type: string
-        executionDate:
-          type: string
-          format: date
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-        numberOfReportsInSeries:
-          type: integer
-          format: int32
-          minimum: 1
-        reportSeriesId:
-          type: string
-          format: uuid
-        reportSeriesName:
-          type: string
-        reportType:
-          $ref: "#/components/schemas/ReportType"
-        tableColumnHeaders:
-          type: array
-          items:
-            $ref: "#/components/schemas/TableColumnHeader"
-        timeRangeEnd:
-          type: string
-          format: date-time
-        timeRangeStart:
-          type: string
-          format: date-time
-        tooMuchDataForExport:
-          type: boolean
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          minimum: 0
-        userReport:
-          $ref: "#/components/schemas/User"
-        userReportSeries:
-          $ref: "#/components/schemas/User"
-      required:
-      - analyses
-      - dataSensitivity
-      - executionDate
-      - id
-      - name
-      - numberOfReportsInSeries
-      - reportSeriesId
-      - reportSeriesName
-      - reportType
-      - tableColumnHeaders
-      - timeRangeEnd
-      - timeRangeStart
-      - tooMuchDataForExport
-      - totalNumberOfElements
-    GetReportSeriesEntriesOfEvaluationResponse:
-      type: object
-      properties:
-        dataSensitivity:
-          $ref: "#/components/schemas/EvaluationDataSensitivity"
-        evaluationId:
-          type: string
-          format: uuid
-        evaluationName:
-          type: string
-        reportSeriesEntries:
-          type: array
-          items:
-            $ref: "#/components/schemas/ReportSeries"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - dataSensitivity
-      - evaluationId
-      - evaluationName
-      - reportSeriesEntries
-      - resolvedUsers
-    GetReportsFilterOptions:
-      type: object
-      properties:
-        dataSensitivities:
-          type: array
-          items:
-            $ref: "#/components/schemas/ReportDataSensitivity"
-        dataSourceIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-        end:
-          $ref: "#/components/schemas/DateSpan"
-        name:
-          type: string
-        reportType:
-          $ref: "#/components/schemas/ReportType"
-        start:
-          $ref: "#/components/schemas/DateSpan"
-    GetReportsRequest:
-      type: object
-      properties:
-        filterOptions:
-          $ref: "#/components/schemas/GetReportsFilterOptions"
-        page:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-        pageSize:
-          type: integer
-          format: int32
-          default: 25
-          minimum: 1
-        sortDirection:
-          $ref: "#/components/schemas/SortDirection"
-    GetReportsResponse:
-      type: object
-      properties:
-        reportSeriesList:
-          type: array
-          items:
-            $ref: "#/components/schemas/ReportSeries"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          minimum: 0
-      required:
-      - reportSeriesList
-      - resolvedUsers
-      - totalNumberOfElements
-    GetStatisticsFeatureTogglesResponse:
-      type: object
-      properties:
-        disabledOldFeatures:
-          type: array
-          items:
-            $ref: "#/components/schemas/StatisticsFeature"
-          uniqueItems: true
-        enabledNewFeatures:
-          type: array
-          items:
-            $ref: "#/components/schemas/StatisticsFeature"
-          uniqueItems: true
-      required:
-      - disabledOldFeatures
-      - enabledNewFeatures
-    Grouping:
-      type: string
-      enum:
-      - GROUPED
-      - STACKED
-    HistogramBin:
-      type: object
-      properties:
-        lowerBound:
-          type: number
-        upperBound:
-          type: number
-      required:
-      - lowerBound
-      - upperBound
-    HistogramChartConfiguration:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractAddChartConfiguration"
-      - type: object
-        properties:
-          binningMode:
-            $ref: "#/components/schemas/BinningMode"
-          grouping:
-            $ref: "#/components/schemas/Grouping"
-          numberOfBins:
-            type: integer
-            format: int32
-            maximum: 50
-            minimum: 2
-          primaryAttribute:
-            $ref: "#/components/schemas/AttributeSelection"
-          scaling:
-            $ref: "#/components/schemas/Scaling"
-          secondaryAttribute:
-            $ref: "#/components/schemas/AttributeSelection"
-      - $ref: "#/components/schemas/AbstractChartConfiguration"
-      required:
-      - binningMode
-      - primaryAttribute
-    HistogramChartDataCategorized:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/DiagramData"
-      - type: object
-        properties:
-          histogramGroupDatas:
-            type: array
-            items:
-              $ref: "#/components/schemas/HistogramGroupDataCategorized"
-      required:
-      - histogramGroupDatas
-    HistogramChartDataSimple:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/DiagramData"
-      - type: object
-        properties:
-          histogramGroupDatas:
-            type: array
-            items:
-              $ref: "#/components/schemas/HistogramGroupDataSimple"
-      required:
-      - histogramGroupDatas
-    HistogramGroupDataCategorized:
-      type: object
-      properties:
-        histogramBin:
-          $ref: "#/components/schemas/HistogramBin"
-        keyToCounts:
-          type: array
-          items:
-            $ref: "#/components/schemas/KeyToCount"
-      required:
-      - histogramBin
-      - keyToCounts
-    HistogramGroupDataSimple:
-      type: object
-      properties:
-        count:
-          type: integer
-          format: int32
-        histogramBin:
-          $ref: "#/components/schemas/HistogramBin"
-      required:
-      - count
-      - histogramBin
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    IntegerAttribute:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractTableColumnHeaderAttribute"
-      - type: object
-        properties:
-          code:
-            type: string
-          maxValue:
-            type: integer
-            format: int32
-          minValue:
-            type: integer
-            format: int32
-          name:
-            type: string
-          unit:
-            type: string
-          valueOptions:
-            type: array
-            items:
-              $ref: "#/components/schemas/ValueOption"
-      required:
-      - code
-      - name
-    IntegerRangeFilterParameter:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/TableColumnFilterParameter"
-      - type: object
-        properties:
-          attribute:
-            $ref: "#/components/schemas/AttributeSelection"
-          maxValueInclusive:
-            type: integer
-            format: int32
-          minValueInclusive:
-            type: integer
-            format: int32
-          withNullValues:
-            type: boolean
-      required:
-      - attribute
-      - maxValueInclusive
-      - minValueInclusive
-      - withNullValues
-    IntegerValueFilterParameter:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/TableColumnFilterParameter"
-      - type: object
-        properties:
-          attribute:
-            $ref: "#/components/schemas/AttributeSelection"
-          numericComparison:
-            $ref: "#/components/schemas/NumericComparison"
-          value:
-            type: integer
-            format: int32
-          withNullValues:
-            type: boolean
-      required:
-      - attribute
-      - numericComparison
-      - value
-      - withNullValues
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    KeyToCount:
-      type: object
-      properties:
-        count:
-          type: integer
-          format: int32
-        key:
-          type: string
-      required:
-      - count
-      - key
-    KeyToValue:
-      type: object
-      properties:
-        key:
-          type: string
-        value:
-          type: number
-      required:
-      - key
-    LineChartConfiguration:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractAddChartConfiguration"
-      - type: object
-        properties:
-          range:
-            $ref: "#/components/schemas/Range"
-          secondaryAttribute:
-            $ref: "#/components/schemas/AttributeSelection"
-          xAttribute:
-            $ref: "#/components/schemas/AttributeSelection"
-          yAttribute:
-            $ref: "#/components/schemas/AttributeSelection"
-      - $ref: "#/components/schemas/AbstractChartConfiguration"
-      required:
-      - range
-      - xAttribute
-      - yAttribute
-    LineChartDataCategorized:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/DiagramData"
-      - type: object
-        properties:
-          dataPointGroups:
-            type: array
-            items:
-              $ref: "#/components/schemas/DataPointGroup"
-      required:
-      - dataPointGroups
-    LineChartDataSimple:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/DiagramData"
-      - type: object
-        properties:
-          dataPoints:
-            type: array
-            items:
-              $ref: "#/components/schemas/DataPoint"
-      required:
-      - dataPoints
-    MinimalEvaluationTemplateInfo:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-      required:
-      - id
-      - name
-    NullFilterParameter:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/TableColumnFilterParameter"
-      - type: object
-        properties:
-          attribute:
-            $ref: "#/components/schemas/AttributeSelection"
-      required:
-      - attribute
-    NumericComparison:
-      type: string
-      enum:
-      - EQUAL
-      - GREATER_EQUAL
-      - GREATER_THAN
-      - LESS_EQUAL
-      - LESS_THAN
-    Orientation:
-      type: string
-      enum:
-      - HORIZONTAL
-      - VERTICAL
-    PieChartConfiguration:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractAddChartConfiguration"
-      - type: object
-        properties:
-          attribute:
-            $ref: "#/components/schemas/AttributeSelection"
-      - $ref: "#/components/schemas/AbstractChartConfiguration"
-      required:
-      - attribute
-    PieChartData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/DiagramData"
-      - type: object
-        properties:
-          keyToCounts:
-            type: array
-            items:
-              $ref: "#/components/schemas/KeyToCount"
-      required:
-      - keyToCounts
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    ProcedureReferenceAttribute:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractTableColumnHeaderAttribute"
-      - type: object
-        properties:
-          code:
-            type: string
-          name:
-            type: string
-      required:
-      - code
-      - name
-    Range:
-      type: string
-      enum:
-      - ADAPTED
-      - ORIGIN
-    ReportDataSensitivity:
-      type: string
-      enum:
-      - ANONYMOUS
-      - INTERNAL_USAGE
-    ReportInfo:
-      type: object
-      properties:
-        dataSensitivity:
-          $ref: "#/components/schemas/ReportDataSensitivity"
-        executionDate:
-          type: string
-          format: date
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-        state:
-          $ref: "#/components/schemas/ReportState"
-        timeRangeEnd:
-          type: string
-          format: date-time
-        timeRangeStart:
-          type: string
-          format: date-time
-        tooMuchDataForExport:
-          type: boolean
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          minimum: 0
-      required:
-      - dataSensitivity
-      - executionDate
-      - id
-      - name
-      - state
-      - timeRangeEnd
-      - timeRangeStart
-      - tooMuchDataForExport
-    ReportSeries:
-      type: object
-      properties:
-        active:
-          type: boolean
-        dataSourceNames:
-          type: array
-          items:
-            type: string
-          maxItems: 2147483647
-          minItems: 1
-        description:
-          type: string
-        evaluationId:
-          type: string
-          format: uuid
-        frequency:
-          $ref: "#/components/schemas/Frequency"
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-        reportInfos:
-          type: array
-          items:
-            $ref: "#/components/schemas/ReportInfo"
-        reportType:
-          $ref: "#/components/schemas/ReportType"
-        reportingPeriod:
-          $ref: "#/components/schemas/ReportingPeriod"
-        startMonth:
-          type: integer
-          format: int32
-        timeRangeEnd:
-          type: string
-          format: date-time
-        timeRangeStart:
-          type: string
-          format: date-time
-        userId:
-          type: string
-          format: uuid
-      required:
-      - dataSourceNames
-      - evaluationId
-      - id
-      - name
-      - reportInfos
-      - reportType
-      - userId
-    ReportState:
-      type: string
-      enum:
-      - PLANNED
-      - COMPLETED
-      - FAILED
-      - CREATING
-      - DELETING
-    ReportType:
-      type: string
-      enum:
-      - MANUAL
-      - AUTO
-    ReportingPeriod:
-      type: string
-      enum:
-      - MONTH
-      - THREE_MONTHS
-      - HALF_YEAR
-      - YEAR
-    RepositoryMetaInfo:
-      type: object
-      properties:
-        changeLog:
-          type: string
-        contact:
-          type: string
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-        description:
-          type: string
-        id:
-          type: integer
-          format: int64
-        name:
-          type: string
-        version:
-          type: integer
-          format: int32
-      required:
-      - createdAt
-      - createdBy
-      - id
-      - name
-      - version
-    Scaling:
-      type: string
-      enum:
-      - ABSOLUTE
-      - RELATIVE
-    ScatterChartConfiguration:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractAddChartConfiguration"
-      - type: object
-        properties:
-          range:
-            $ref: "#/components/schemas/Range"
-          secondaryAttribute:
-            $ref: "#/components/schemas/AttributeSelection"
-          trendLine:
-            type: boolean
-          xAttribute:
-            $ref: "#/components/schemas/AttributeSelection"
-          yAttribute:
-            $ref: "#/components/schemas/AttributeSelection"
-      - $ref: "#/components/schemas/AbstractChartConfiguration"
-      required:
-      - range
-      - trendLine
-      - xAttribute
-      - yAttribute
-    ScatterChartDataCategorized:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/DiagramData"
-      - type: object
-        properties:
-          dataPointGroups:
-            type: array
-            items:
-              $ref: "#/components/schemas/DataPointGroup"
-      required:
-      - dataPointGroups
-    ScatterChartDataSimple:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/DiagramData"
-      - type: object
-        properties:
-          dataPoints:
-            type: array
-            items:
-              $ref: "#/components/schemas/DataPoint"
-          trendLine:
-            $ref: "#/components/schemas/TrendLine"
-      required:
-      - dataPoints
-    SortDirection:
-      type: string
-      default: DESC
-      enum:
-      - ASC
-      - DESC
-    StatisticsFeature:
-      type: string
-      enum:
-      - DUMMY
-    TableColumnFilterParameter:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    TableColumnHeader:
-      type: object
-      properties:
-        attribute:
-          oneOf:
-          - $ref: "#/components/schemas/BaseModuleIdAttribute"
-          - $ref: "#/components/schemas/BooleanAttribute"
-          - $ref: "#/components/schemas/DateAttribute"
-          - $ref: "#/components/schemas/DecimalAttribute"
-          - $ref: "#/components/schemas/IntegerAttribute"
-          - $ref: "#/components/schemas/ProcedureReferenceAttribute"
-          - $ref: "#/components/schemas/TextAttribute"
-          - $ref: "#/components/schemas/ValueWithOptionsAttribute"
-        businessModule:
-          type: string
-        dataSourceId:
-          type: string
-          format: uuid
-        dataSourceName:
-          type: string
-        displayName:
-          type: string
-      required:
-      - attribute
-      - businessModule
-      - dataSourceId
-      - dataSourceName
-      - displayName
-    TemplateSensitivityInfo:
-      type: object
-      properties:
-        canBeAnonymized:
-          type: boolean
-        sensitiveDataAllowed:
-          type: boolean
-        sensitivity:
-          $ref: "#/components/schemas/DataSourceSensitivity"
-      required:
-      - canBeAnonymized
-      - sensitiveDataAllowed
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
-    TextAttribute:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractTableColumnHeaderAttribute"
-      - type: object
-        properties:
-          code:
-            type: string
-          name:
-            type: string
-          valueOptions:
-            type: array
-            items:
-              $ref: "#/components/schemas/ValueOption"
-      required:
-      - code
-      - name
-    TextFilterParameter:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/TableColumnFilterParameter"
-      - type: object
-        properties:
-          attribute:
-            $ref: "#/components/schemas/AttributeSelection"
-          text:
-            type: string
-      required:
-      - attribute
-      - text
-    TimeRange:
-      type: object
-      properties:
-        end:
-          type: string
-          format: date-time
-        start:
-          type: string
-          format: date-time
-      required:
-      - end
-      - start
-    TrendLine:
-      type: object
-      properties:
-        offset:
-          type: number
-        slope:
-          type: number
-      required:
-      - offset
-      - slope
-    UpdateAnalysisRequest:
-      type: object
-      properties:
-        name:
-          type: string
-      required:
-      - name
-    UpdateDiagramRequest:
-      type: object
-      properties:
-        description:
-          type: string
-        title:
-          type: string
-      required:
-      - title
-    UpdateEvaluationNameRequest:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractUpdateEvaluationRequest"
-      - type: object
-        properties:
-          name:
-            type: string
-      required:
-      - name
-    UpdateEvaluationTemplateRequest:
-      type: object
-      properties:
-        description:
-          type: string
-        name:
-          type: string
-      required:
-      - name
-    UpdateEvaluationTimeRangeRequest:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractUpdateEvaluationRequest"
-      - type: object
-        properties:
-          timeRange:
-            $ref: "#/components/schemas/TimeRange"
-      required:
-      - timeRange
-    UpdateReportSeriesRequest:
-      type: object
-      properties:
-        description:
-          type: string
-        name:
-          type: string
-      required:
-      - name
-    User:
-      type: object
-      properties:
-        email:
-          type: string
-          description: The email address of a user.
-          example: example@mail.de
-        enabled:
-          type: boolean
-          description: "True, if the user can login"
-          example: false
-        externalChatUsername:
-          type: string
-          description: The chat username of the gematik TI-Messenger (matrix chat).
-          example: '@username:server'
-        firstName:
-          type: string
-          description: The given name(s) of a user.
-          example: John
-        lastName:
-          type: string
-          description: The last name of a user.
-          example: Doe
-        phoneNumber:
-          type: string
-          description: The phone number of a user.
-          example: "+491234567890"
-        userId:
-          type: string
-          format: uuid
-          description: The Id of the user.
-          example: fe9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        username:
-          type: string
-          description: The username which is displayed in the application and can
-            be used for the login.
-          example: testuser
-      required:
-      - enabled
-      - firstName
-      - lastName
-      - userId
-      - username
-    ValueOption:
-      type: object
-      properties:
-        meaning:
-          type: string
-        value:
-          type: string
-      required:
-      - meaning
-      - value
-    ValueOptionFilterParameter:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/TableColumnFilterParameter"
-      - type: object
-        properties:
-          attribute:
-            $ref: "#/components/schemas/AttributeSelection"
-          searchForNull:
-            type: boolean
-          searchValues:
-            type: array
-            items:
-              type: string
-      required:
-      - attribute
-      - searchForNull
-      - searchValues
-    ValueWithOptionsAttribute:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractTableColumnHeaderAttribute"
-      - type: object
-        properties:
-          code:
-            type: string
-          name:
-            type: string
-          valueOptions:
-            type: array
-            items:
-              $ref: "#/components/schemas/ValueOption"
-      required:
-      - code
-      - name
-      - valueOptions
diff --git a/backend/statistics/src/main/java/de/eshg/statistics/aggregation/DataAggregationService.java b/backend/statistics/src/main/java/de/eshg/statistics/aggregation/DataAggregationService.java
index 40ba6e6ea..2c978d219 100644
--- a/backend/statistics/src/main/java/de/eshg/statistics/aggregation/DataAggregationService.java
+++ b/backend/statistics/src/main/java/de/eshg/statistics/aggregation/DataAggregationService.java
@@ -745,7 +745,7 @@ public class DataAggregationService {
 
   private static TextEntry createTextEntry(Object value) {
     TextEntry entry = new TextEntry();
-    if (value instanceof String stringValue) {
+    if (value instanceof String stringValue && !stringValue.isBlank()) {
       entry.setTextValue(stringValue);
     }
     return entry;
@@ -868,7 +868,8 @@ public class DataAggregationService {
         unknownValue == null
             ? null
             : tableRowRepository.count(
-                TableRowSpecifications.getTextFilterSpecification(tableColumn, unknownValue)));
+                TableRowSpecifications.getTextFilterSpecificationExactly(
+                    tableColumn, unknownValue)));
     minMaxNullUnknownValues.setUnknownValue(unknownValue);
 
     return minMaxNullUnknownValues;
diff --git a/backend/statistics/src/main/java/de/eshg/statistics/aggregation/TableRowSpecifications.java b/backend/statistics/src/main/java/de/eshg/statistics/aggregation/TableRowSpecifications.java
index c47b75458..4b59726d7 100644
--- a/backend/statistics/src/main/java/de/eshg/statistics/aggregation/TableRowSpecifications.java
+++ b/backend/statistics/src/main/java/de/eshg/statistics/aggregation/TableRowSpecifications.java
@@ -39,6 +39,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.repository.query.EscapeCharacter;
 
 public class TableRowSpecifications {
   private TableRowSpecifications() {}
@@ -123,7 +124,7 @@ public class TableRowSpecifications {
               integerValueFilterParameter.withNullValues());
       case NullFilterParameterDto ignored -> getNullSpecification(tableColumn);
       case TextFilterParameterDto textFilterParameter ->
-          getTextFilterSpecification(tableColumn, textFilterParameter.text());
+          getTextFilterSpecificationSearch(tableColumn, textFilterParameter.text());
       case ValueOptionFilterParameterDto valueOptionFilterParameter ->
           getValueOptionFilterSpecification(
               tableColumn,
@@ -300,7 +301,7 @@ public class TableRowSpecifications {
     };
   }
 
-  public static Specification<TableRow> getTextFilterSpecification(
+  public static Specification<TableRow> getTextFilterSpecificationExactly(
       TableColumn tableColumn, String text) {
     return (root, query, criteriaBuilder) -> {
       Join<Object, Object> join = root.join(TableRow_.CELL_ENTRIES);
@@ -310,6 +311,19 @@ public class TableRowSpecifications {
     };
   }
 
+  public static Specification<TableRow> getTextFilterSpecificationSearch(
+      TableColumn tableColumn, String text) {
+    return (root, query, criteriaBuilder) -> {
+      Join<Object, Object> join = root.join(TableRow_.CELL_ENTRIES);
+      return criteriaBuilder.and(
+          criteriaBuilder.equal(join.get(CellEntry_.TABLE_COLUMN), tableColumn),
+          criteriaBuilder.like(
+              criteriaBuilder.lower(join.get(TextEntry_.TEXT_VALUE)),
+              "%" + EscapeCharacter.DEFAULT.escape(text.toLowerCase()) + "%",
+              EscapeCharacter.DEFAULT.getEscapeCharacter()));
+    };
+  }
+
   static Specification<TableRow> getValueOptionFilterSpecification(
       TableColumn tableColumn, List<String> valuesList, boolean searchForNull) {
     Set<String> values = new HashSet<>(valuesList);
diff --git a/backend/sti-protection/openApi.json b/backend/sti-protection/openApi.json
new file mode 100644
index 000000000..7709d6c8d
--- /dev/null
+++ b/backend/sti-protection/openApi.json
@@ -0,0 +1,7625 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is the API for the sti-protection module",
+    "title" : "STI Protection Module API",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8095"
+  } ],
+  "paths" : {
+    "/appointment-blocks/appointment-block-groups" : {
+      "get" : {
+        "operationId" : "getAppointmentBlockGroups",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/AppointmentBlockSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAppointmentBlockGroupsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all appointment block groups.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-blocks/daily-appointment-block-groups" : {
+      "post" : {
+        "operationId" : "createDailyAppointmentBlocksForGroup",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CreateAppointmentBlockGroupResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create appointment group with blocks for week days.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-blocks/daily-appointment-block-groups/validate" : {
+      "post" : {
+        "operationId" : "validateDailyAppointmentBlocksForGroup",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ValidateAppointmentBlockGroupResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create appointment group with blocks for week days.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-blocks/free-appointments" : {
+      "get" : {
+        "operationId" : "getFreeAppointments",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "appointmentType",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "earliestDate",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "physicianId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFreeAppointmentsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get free appointments for an appointment type.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-types" : {
+      "get" : {
+        "operationId" : "getAppointmentTypes",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAppointmentTypesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets all Appointment Types",
+        "tags" : [ "AppointmentType" ]
+      }
+    },
+    "/appointment-types/{id}" : {
+      "get" : {
+        "operationId" : "getOneAppointmentType",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AppointmentTypeConfig"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets one Appointment Type by ID",
+        "tags" : [ "AppointmentType" ]
+      },
+      "put" : {
+        "operationId" : "updateAppointmentType",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateAppointmentTypeRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AppointmentTypeConfig"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modifies an existing Appointment Type",
+        "tags" : [ "AppointmentType" ]
+      }
+    },
+    "/approval-requests/{approvalRequestId}" : {
+      "get" : {
+        "operationId" : "getApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/approval-requests/{approvalRequestId}/decision" : {
+      "put" : {
+        "operationId" : "decideApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/Decision"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/archiving/config" : {
+      "get" : {
+        "operationId" : "getArchivingConfiguration",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetArchivingConfigurationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get archiving configuration",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/procedures" : {
+      "get" : {
+        "operationId" : "getArchivableProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `procedureType` is submitted, only procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `closedAtDay` is set, only procedures are returned which were closed at that date\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "closedAtDay",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `defaultArchivingRelevance` is submitted, only procedures are returned which have one of the submitted default archiving relevances.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "defaultArchivingRelevance",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ArchivingRelevance"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CLOSED_AT`: Sorting by closedAt attribute\n- `PROCEDURE_TYPE`: Sorting by procedureType attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetArchivableProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetArchivableProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetArchivableProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get archivable procedures",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/procedures/bulk-update-archiving-relevance" : {
+      "post" : {
+        "operationId" : "bulkUpdateProceduresArchivingRelevance",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/BulkUpdateProceduresArchivingRelevanceRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/BulkUpdateProceduresArchivingRelevanceResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Bulk update procedures archiving relevance",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/relevant-procedures" : {
+      "get" : {
+        "operationId" : "getRelevantArchivableProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `closedAtDay` is set, only procedures are returned which were closed at that date\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "closedAtDay",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `exported` is true, only procedures are returned which have already been exported.\n- If `exported` is false, only procedures are returned which have not been exported, yet.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "exported",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CLOSED_AT`: Sorting by closedAt attribute\n- `EXPORTED_AT`: Sorting by exportedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetRelevantArchivableProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetRelevantArchivableProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRelevantArchivableProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get relevant archivable procedures",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/relevant-procedures/export" : {
+      "post" : {
+        "operationId" : "exportRelevantProcedures",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ExportArchivingRelevantProceduresRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/files/{fileId}" : {
+      "delete" : {
+        "operationId" : "deleteFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Soft deletes the specified file",
+        "tags" : [ "File" ]
+      },
+      "get" : {
+        "operationId" : "getFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/Image"
+                  }, {
+                    "$ref" : "#/components/schemas/Mail"
+                  }, {
+                    "$ref" : "#/components/schemas/Pdf"
+                  } ]
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Retrieves the meta data of the specified file",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/deletion-request" : {
+      "post" : {
+        "operationId" : "requestFileDeletion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateApprovalRequestRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Request deletion of a file entry",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/download" : {
+      "get" : {
+        "operationId" : "downloadFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/meta-data" : {
+      "put" : {
+        "operationId" : "updateFileMetaData",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "oneOf" : [ {
+                  "$ref" : "#/components/schemas/ImageMetaData"
+                }, {
+                  "$ref" : "#/components/schemas/MailMetaData"
+                }, {
+                  "$ref" : "#/components/schemas/PdfMetaData"
+                } ]
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/Image"
+                  }, {
+                    "$ref" : "#/components/schemas/Mail"
+                  }, {
+                    "$ref" : "#/components/schemas/Pdf"
+                  } ]
+                }
+              }
+            },
+            "description" : "Updated file"
+          }
+        },
+        "summary" : "Updates the meta data of the specified file",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/meta-data/history" : {
+      "get" : {
+        "operationId" : "getMetaDataHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetMetaDataHistoryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "File" ]
+      }
+    },
+    "/gdpr-validation-tasks" : {
+      "get" : {
+        "operationId" : "getAllGdprValidationTasks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "status",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAllValidationTasksResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all GDPR validation tasks",
+        "tags" : [ "GdprValidationTask" ]
+      },
+      "post" : {
+        "operationId" : "addGdprValidationTask",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddGdprValidationTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "Add a GDPR validation task"
+          }
+        },
+        "summary" : "Add a GDPR validation task",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/notification-banner" : {
+      "get" : {
+        "operationId" : "getGdprNotificationBanner",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprNotificationBannerResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get data for GDPR notification banner",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}" : {
+      "delete" : {
+        "operationId" : "deleteGdprValidationTaskAndDownloadPackages",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/DeleteDownloadPackagesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the GDPR validation task with gdprProcedureId and GDPR download packages with ids from request",
+        "tags" : [ "GdprValidationTask" ]
+      },
+      "get" : {
+        "operationId" : "getGdprValidationTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprValidationTaskResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get Gdpr Validation Task by Gdpr Procedure Id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures" : {
+      "get" : {
+        "operationId" : "getGdprValidationTaskDetails",
+        "parameters" : [ {
+          "description" : "The Id of the GDPR procedure.",
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprValidationTaskDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a GDPR validation task by id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}" : {
+      "delete" : {
+        "operationId" : "deleteBusinessProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "businessProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the businessProcedure with businessProcedureId for validationTask with gdprProcedureId with type right of erasure",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}/downloadPackage" : {
+      "post" : {
+        "operationId" : "addDownloadPackage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "businessProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Creates a downloadPackage for validationTask with gdprProcedureId with the data from the procedure with businessProcedureId",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/close" : {
+      "post" : {
+        "operationId" : "closeGdprValidationTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Close a GDPR validation task"
+          }
+        },
+        "summary" : "Close a GDPR validation task",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/download-packages" : {
+      "get" : {
+        "operationId" : "getGdprDownloadPackagesInfo",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprDownloadPackagesInfoResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get approved Gdpr Download Packages by Gdpr Procedure Id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}" : {
+      "get" : {
+        "operationId" : "getGdprDownloadPackage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "downloadId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get Gdpr Download Package by the gdprProcedureId and its downloadId",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/inbox-procedures" : {
+      "get" : {
+        "description" : "Get all inbox procedures with filter, sort, and pagination options\n",
+        "operationId" : "getInboxProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `inboxProcedureType` is submitted, only inbox procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "inboxProcedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If true, inbox procedures which have no type are returned in addition to the types specified by 'inboxProcedureType'.\n- If false or not submitted, inbox procedures which have no type are not returned.\n",
+          "in" : "query",
+          "name" : "includeUntyped",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `inboxProcedureStatus` is submitted, only inbox procedures are returned which have one of the submitted statuses.\n- If not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "inboxProcedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InboxProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CREATED_AT`: Sorting by createdAt attribute\n- `MODIFIED_AT`: Sorting by modifiedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetInboxProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetInboxProceduresSortOrder"
+          }
+        }, {
+          "description" : "Number of the requested page",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        }, {
+          "description" : "Amount of requested inbox procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInboxProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get inbox procedures",
+        "tags" : [ "InboxProcedure" ]
+      },
+      "post" : {
+        "description" : "Creates an inbox procedure with an optional file upload.\n\n       Permitted file formats:\n        - Image formats: jpeg, png\n        - PDF formats: pdf/a\n        - Mail formats: eml",
+        "operationId" : "addInboxProcedure",
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "createInboxProcedureRequest" : {
+                    "$ref" : "#/components/schemas/CreateInboxProcedureRequest"
+                  },
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  }
+                },
+                "required" : [ "createInboxProcedureRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InboxProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add inbox procedure",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/inbox-procedures/{inboxProcedureId}" : {
+      "get" : {
+        "operationId" : "getInboxProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inboxProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInboxProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get inbox procedure with detailed information",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/inbox-procedures/{inboxProcedureId}/inbox-procedure-status" : {
+      "put" : {
+        "operationId" : "updateInboxProcedureStatus",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inboxProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InboxProcedureStatus"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InboxProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update status of inbox procedure",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/procedure-metrics" : {
+      "get" : {
+        "operationId" : "getProcedureMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of procedures"
+          }
+        },
+        "summary" : "Get procedure metrics for procedures created in the given time range",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures" : {
+      "get" : {
+        "description" : "GET operation for retrieving basic information of procedures for the procedure overview.\n",
+        "operationId" : "getProcedures",
+        "parameters" : [ {
+          "description" : "Only procedures are returned where the assigneeId of at least one task equals the `assignedToId`.\nIf not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "assignedToId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureType` is submitted, only procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CREATED_AT`: Sorting by createdAt attribute\n- `MODIFIED_AT`: Sorting by modifiedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/check-file-state-usage" : {
+      "post" : {
+        "operationId" : "checkFileStateUsage",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CheckFileStateUsageRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CheckFileStateUsageResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Identify which file state IDs are still used by active procedures.",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/recent" : {
+      "get" : {
+        "operationId" : "getRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "userId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/recent/self" : {
+      "get" : {
+        "operationId" : "getSelfRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the current users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for the current user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/search" : {
+      "get" : {
+        "operationId" : "searchProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "query",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}" : {
+      "get" : {
+        "operationId" : "getDetailedProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetDetailedProcedureResponse"
+                }
+              }
+            },
+            "description" : "a single procedure with details"
+          }
+        },
+        "summary" : "Get a single procedure with details",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}/approval-requests" : {
+      "get" : {
+        "operationId" : "getApprovalRequests",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureApprovalRequestsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all approval requests related to this procedure",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}/files" : {
+      "get" : {
+        "description" : "This returns all relevant (highest version per keydocument type and non-deleted) files sorted by descending creation date.\nThat is:\n * if an progress entry has a keydocument type set, then its files are only returned if it also has the highest keydocument version of the respective key document type.\n * if an progress entry does not have a keydocument type, then its files are always returned.\n",
+        "operationId" : "getProcedureFileDetails",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureFileDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get relevant procedure files",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries" : {
+      "get" : {
+        "operationId" : "getProgressEntries",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Filter on progressEntryType",
+          "in" : "query",
+          "name" : "progressEntryType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        }, {
+          "description" : "Filter on child class of progressEntry",
+          "in" : "query",
+          "name" : "progressEntryClass",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProgressEntryClass"
+            }
+          }
+        }, {
+          "description" : "If `initiatedBy` is set with a `userId` then the following is returned:\n* Only progressEntries with `createdBy`=`userId` in case `ManualProgressEntry` or `ProcessedInboxProgressEntry`\n* Only progressEntries with `triggeredBy`=`userId` in case `SystemProgressEntry`\n",
+          "in" : "query",
+          "name" : "initiatedBy",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "description" : "Filter on triggerType.\nIf this is set, only SystemProgressEntries are returned since only SystemProgressEntries have this attribute.\n",
+          "in" : "query",
+          "name" : "triggerType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TriggerType"
+            }
+          }
+        }, {
+          "description" : "Sorting on either modifiedAt or createdAt ",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProgressEntrySortBy"
+          }
+        }, {
+          "description" : "Sorting order. Possible options  \"ASC\" for ascending and \"DESC\" for descending.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProgressEntrySortOrder"
+          }
+        }, {
+          "description" : "Maximum number of elements to return",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Index of page to be returned",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProgressEntriesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get list of procedure's progress entries",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "post" : {
+        "description" : "Creates a manual progress entry with an optional file upload.\n\n       Permitted file formats:\n        - Image formats: jpeg, png\n        - PDF formats: pdf/a\n        - Mail formats: eml",
+        "operationId" : "addProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "createManualProgressEntryRequest" : {
+                    "$ref" : "#/components/schemas/CreateManualProgressEntryRequest"
+                  },
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  }
+                },
+                "required" : [ "createManualProgressEntryRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ManualProgressEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}" : {
+      "delete" : {
+        "operationId" : "removeProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Remove a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "get" : {
+        "operationId" : "getProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProgressEntryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a progress entry",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "patch" : {
+        "operationId" : "patchProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchManualProgressEntryRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ManualProgressEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modify a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}/deletion-request" : {
+      "post" : {
+        "operationId" : "requestProgressEntryDeletion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateApprovalRequestRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Request deletion of a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}/history" : {
+      "get" : {
+        "operationId" : "getManualProgressEntryHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetManualProgressEntryHistoryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the history of a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/sti-procedures" : {
+      "get" : {
+        "operationId" : "getStiProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetStiProtectionProceduresSortBy"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetStiProtectionProceduresSortOrder"
+          }
+        }, {
+          "description" : "The page to be returned",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        }, {
+          "description" : "The number of items to be returned",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresOverviewResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get sorted and paginated STI procedures.",
+        "tags" : [ "StiProtectionProcedure" ]
+      },
+      "post" : {
+        "operationId" : "createProcedure",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateProcedureRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CreateProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "StiProtectionProcedure" ]
+      }
+    },
+    "/sti-procedures/medical-history-document/consultation-de" : {
+      "get" : {
+        "operationId" : "getConsultationDEDocument",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the printable document for sti hiv consultation in DE locale.",
+        "tags" : [ "MedicalHistoryDocument" ]
+      }
+    },
+    "/sti-procedures/medical-history-document/consultation-en" : {
+      "get" : {
+        "operationId" : "getConsultationENDocument",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the printable document for sti hiv consultation in EN locale.",
+        "tags" : [ "MedicalHistoryDocument" ]
+      }
+    },
+    "/sti-procedures/medical-history-document/sexwork-de" : {
+      "get" : {
+        "operationId" : "getSexworkDEDocument",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the printable document for sexwork in DE locale.",
+        "tags" : [ "MedicalHistoryDocument" ]
+      }
+    },
+    "/sti-procedures/medical-history-document/sexwork-en" : {
+      "get" : {
+        "operationId" : "getSexworkENDocument",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the printable document for sexwork in EN locale.",
+        "tags" : [ "MedicalHistoryDocument" ]
+      }
+    },
+    "/sti-procedures/text-templates" : {
+      "get" : {
+        "operationId" : "getTextTemplates",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If 'context' is submitted, only text templates are returned which belong to one of the provided contexts.\n- If no 'context' is submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "context",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TextTemplateContext"
+            }
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTextTemplatesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a list of text templates",
+        "tags" : [ "TextTemplate" ]
+      },
+      "post" : {
+        "operationId" : "createTextTemplate",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateTextTemplateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CreateTextTemplateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a new text template",
+        "tags" : [ "TextTemplate" ]
+      }
+    },
+    "/sti-procedures/text-templates/{textTemplateId}" : {
+      "delete" : {
+        "operationId" : "deleteTextTemplate",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "textTemplateId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete an existing text template",
+        "tags" : [ "TextTemplate" ]
+      },
+      "get" : {
+        "operationId" : "getTextTemplate",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "textTemplateId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TextTemplate"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get an existing text template",
+        "tags" : [ "TextTemplate" ]
+      },
+      "put" : {
+        "operationId" : "updateTextTemplate",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "textTemplateId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TextTemplate"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update an existing text template",
+        "tags" : [ "TextTemplate" ]
+      }
+    },
+    "/sti-procedures/waiting-room-procedures" : {
+      "get" : {
+        "operationId" : "getWaitingRoomProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/WaitingRoomSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetWaitingRoomProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get waiting rooms.",
+        "tags" : [ "WaitingRoom" ]
+      }
+    },
+    "/sti-procedures/{id}" : {
+      "delete" : {
+        "operationId" : "deleteProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "StiProtectionProcedure" ]
+      },
+      "get" : {
+        "operationId" : "getStiProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/StiProtectionProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get STI protection procedure by id.",
+        "tags" : [ "StiProtectionProcedure" ]
+      }
+    },
+    "/sti-procedures/{id}/anon-ident-document" : {
+      "get" : {
+        "operationId" : "getAnonymousIdentificationDocument",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/pdf" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get an anonymous identification document",
+        "tags" : [ "StiProtectionProcedure" ]
+      }
+    },
+    "/sti-procedures/{id}/appointment" : {
+      "post" : {
+        "operationId" : "createAppointment",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateAppointmentRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a new appointment to an STI procedure.",
+        "tags" : [ "StiProtectionProcedure" ]
+      },
+      "put" : {
+        "operationId" : "updateAppointment",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateAppointmentRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update current appointment of an STI procedure.",
+        "tags" : [ "StiProtectionProcedure" ]
+      }
+    },
+    "/sti-procedures/{id}/appointment/cancel" : {
+      "post" : {
+        "operationId" : "cancelAppointment",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Cancel current appointment of an STI procedure.",
+        "tags" : [ "StiProtectionProcedure" ]
+      }
+    },
+    "/sti-procedures/{id}/close" : {
+      "put" : {
+        "operationId" : "closeProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Close an STI procedure.",
+        "tags" : [ "StiProtectionProcedure" ]
+      }
+    },
+    "/sti-procedures/{id}/follow-up" : {
+      "post" : {
+        "operationId" : "createFollowUpProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateFollowUpProcedureRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CreateFollowUpProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "StiProtectionProcedure" ]
+      }
+    },
+    "/sti-procedures/{id}/person" : {
+      "put" : {
+        "operationId" : "updatePersonDetails",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdatePersonDetailsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update the person details of an STI procedure.",
+        "tags" : [ "StiProtectionProcedure" ]
+      }
+    },
+    "/sti-procedures/{id}/reopen" : {
+      "put" : {
+        "operationId" : "reopenProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Re-open an STI procedure.",
+        "tags" : [ "StiProtectionProcedure" ]
+      }
+    },
+    "/sti-procedures/{id}/verify-pin" : {
+      "post" : {
+        "operationId" : "verifyAnonymousUserPin",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/VerifyAnonymousUserPinRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Verify anonymous user PIN for a given STI procedure.",
+        "tags" : [ "StiProtectionProcedure" ]
+      }
+    },
+    "/sti-procedures/{procedureId}/consultation" : {
+      "get" : {
+        "operationId" : "getConsultation",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Consultation"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get consultation documentation.",
+        "tags" : [ "Consultation" ]
+      },
+      "put" : {
+        "operationId" : "updateConsultation",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/Consultation"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Upsert consultation documentation for a STI protection procedure.",
+        "tags" : [ "Consultation" ]
+      }
+    },
+    "/sti-procedures/{procedureId}/diagnosis" : {
+      "get" : {
+        "operationId" : "getDiagnosis",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Diagnosis"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get diagnosis.",
+        "tags" : [ "Diagnosis" ]
+      },
+      "put" : {
+        "operationId" : "updateDiagnosis",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/Diagnosis"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update or insert diagnosis data of STI protection procedure.",
+        "tags" : [ "Diagnosis" ]
+      }
+    },
+    "/sti-procedures/{procedureId}/examination/laboratory-test" : {
+      "get" : {
+        "operationId" : "getLaboratoryTestExamination",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/LaboratoryTestExamination"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all external laboratory tests within an examination.",
+        "tags" : [ "Examination" ]
+      },
+      "put" : {
+        "operationId" : "updateLaboratoryTestExamination",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/LaboratoryTestExamination"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update all external laboratory tests.",
+        "tags" : [ "Examination" ]
+      }
+    },
+    "/sti-procedures/{procedureId}/examination/rapid-test" : {
+      "get" : {
+        "operationId" : "getRapidTestExamination",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/RapidTestExamination"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get rapid test examination.",
+        "tags" : [ "Examination" ]
+      },
+      "put" : {
+        "operationId" : "updateRapidTestExamination",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/RapidTestExamination"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update rapid test examination of STI protection procedure.",
+        "tags" : [ "Examination" ]
+      }
+    },
+    "/sti-procedures/{procedureId}/medical-history" : {
+      "get" : {
+        "operationId" : "getMedicalHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/SexWorkMedicalHistory"
+                  }, {
+                    "$ref" : "#/components/schemas/StiConsultationMedicalHistory"
+                  } ]
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get medical history.",
+        "tags" : [ "MedicalHistory" ]
+      },
+      "put" : {
+        "operationId" : "updateMedicalHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateMedicalHistoryRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update or insert medical history of STI protection procedure.",
+        "tags" : [ "MedicalHistory" ]
+      }
+    },
+    "/sti-procedures/{procedureId}/waiting-room" : {
+      "put" : {
+        "operationId" : "updateWaitingRoomDetails",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/WaitingRoom"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update waiting room details for a procedure.",
+        "tags" : [ "WaitingRoom" ]
+      }
+    },
+    "/task-metrics" : {
+      "get" : {
+        "operationId" : "getTaskMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTaskMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of a specific procedure type"
+          }
+        },
+        "summary" : "Get tasks metrics for a procedure type of a business module for procedures created in the given time range",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks" : {
+      "get" : {
+        "operationId" : "getTasks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "assigneeId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "assignedById",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "taskTypes",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "taskStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortBy"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortOrder"
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TaskResponse"
+                }
+              }
+            },
+            "description" : "tasks"
+          }
+        },
+        "summary" : "Get tasks",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/dashboard" : {
+      "get" : {
+        "operationId" : "getTasksForDashboard",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TaskResponse"
+                }
+              }
+            },
+            "description" : "tasks"
+          }
+        },
+        "summary" : "Get tasks for the dashboard",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/team-view" : {
+      "get" : {
+        "description" : "Returns all _open_ tasks per module group member.",
+        "operationId" : "getTasksByAssignee",
+        "parameters" : [ {
+          "description" : "If provided, `assignee` must be member of the module group.\nIf not provided, all tasks for all members of the module group are returned.\n",
+          "in" : "query",
+          "name" : "assigneeId",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTaskByUserResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/{taskId}/assignment" : {
+      "put" : {
+        "operationId" : "assignTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "taskId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AssignTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Task"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/{taskId}/self-assignment" : {
+      "put" : {
+        "operationId" : "selfAssignTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "taskId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SelfAssignTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Task"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/test-helper/archiving-job" : {
+      "post" : {
+        "operationId" : "runArchivingJob",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/audit-log-storage" : {
+      "delete" : {
+        "operationId" : "clearAuditLogStorageDirectory",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/notify/overdue-procedures" : {
+      "post" : {
+        "operationId" : "notifyOfOverdueProcedures",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population/procedures" : {
+      "post" : {
+        "operationId" : "populateStiProtectionProcedures",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/StiProtectionProcedurePopulationRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/StiProtectionProcedurePopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "AbstractFile" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFileReference"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "createdAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "fileName" : {
+              "type" : "string"
+            },
+            "fileSizeBytes" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "fileType" : {
+              "$ref" : "#/components/schemas/FileType"
+            },
+            "locked" : {
+              "type" : "boolean"
+            },
+            "modifiedAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/ApprovalRequestEntity"
+        } ]
+      },
+      "AbstractFileReference" : {
+        "required" : [ "@type", "deletable", "deleted", "fileId" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "deletable" : {
+            "type" : "boolean"
+          },
+          "deleted" : {
+            "type" : "boolean"
+          },
+          "fileId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "AddGdprValidationTaskRequest" : {
+        "required" : [ "gdprProcedureId", "startedAt", "type" ],
+        "type" : "object",
+        "properties" : {
+          "gdprProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "startedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }
+      },
+      "Address" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "Appointment" : {
+        "required" : [ "end", "start" ],
+        "type" : "object",
+        "properties" : {
+          "end" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "start" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        },
+        "description" : "Appointment of a procedure."
+      },
+      "AppointmentBlockSortKey" : {
+        "type" : "string",
+        "enum" : [ "START", "END" ]
+      },
+      "AppointmentBookingType" : {
+        "type" : "string",
+        "enum" : [ "USER_DEFINED", "APPOINTMENT_BLOCK" ]
+      },
+      "AppointmentHistoryEntry" : {
+        "required" : [ "appointmentStart", "appointmentStatus", "appointmentType" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentStart" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "appointmentStatus" : {
+            "$ref" : "#/components/schemas/AppointmentStatus"
+          },
+          "appointmentType" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }
+      },
+      "AppointmentLocation" : {
+        "required" : [ "id", "name" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "AppointmentStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED", "CANCELLED" ]
+      },
+      "AppointmentType" : {
+        "type" : "string",
+        "enum" : [ "CONSULTATION", "VACCINATION", "REGULAR_EXAMINATION", "CAN_CHILD", "ENTRY_LEVEL", "SPECIAL_NEEDS", "PROOF_SUBMISSION", "HIV_STI_CONSULTATION", "SEX_WORK", "RESULTS_REVIEW", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "AppointmentTypeConfig" : {
+        "required" : [ "appointmentTypeDto", "id", "standardDurationInMinutes" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentTypeDto" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "standardDurationInMinutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "ApprovalRequest" : {
+        "required" : [ "approvalRequestId", "createdAt", "createdBy", "operation", "reason", "status" ],
+        "type" : "object",
+        "properties" : {
+          "approvalRequestId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decidedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "decidedBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decision" : {
+            "$ref" : "#/components/schemas/Decision"
+          },
+          "entity" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/ManualProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "operation" : {
+            "$ref" : "#/components/schemas/Operation"
+          },
+          "reason" : {
+            "type" : "string"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ApprovalRequestStatus"
+          }
+        }
+      },
+      "ApprovalRequestEntity" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ApprovalRequestStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "ArchivingDetails" : {
+        "required" : [ "archivingPeriodYears", "archivingRelevance" ],
+        "type" : "object",
+        "properties" : {
+          "archivingPeriodYears" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          }
+        }
+      },
+      "ArchivingRelevance" : {
+        "type" : "string",
+        "enum" : [ "DEFAULT", "RELEVANT", "IRRELEVANT" ]
+      },
+      "ArchivingRelevanceSettings" : {
+        "required" : [ "archivingRelevance", "defaultArchivingRelevance" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "defaultArchivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          }
+        }
+      },
+      "AssignTaskRequest" : {
+        "required" : [ "assignee", "taskVersion" ],
+        "type" : "object",
+        "properties" : {
+          "assignee" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "taskVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "BulkUpdateProceduresArchivingRelevanceRequest" : {
+        "required" : [ "archivingRelevance", "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "BulkUpdateProceduresArchivingRelevanceResponse" : {
+        "required" : [ "archivingRelevance", "failedProcedures", "updatedProcedures" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "failedProcedures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "updatedProcedures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "BusinessModule" : {
+        "type" : "string",
+        "enum" : [ "INSPECTION", "SCHOOL_ENTRY", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY", "DENTAL", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "BusinessProcedureInclusionStatus" : {
+        "type" : "string",
+        "enum" : [ "INCLUDED", "UNDECIDED" ]
+      },
+      "BusinessProcedureWithInclusionStatus" : {
+        "required" : [ "businessProcedure", "inclusionStatus" ],
+        "type" : "object",
+        "properties" : {
+          "businessProcedure" : {
+            "$ref" : "#/components/schemas/Procedure"
+          },
+          "inclusionStatus" : {
+            "$ref" : "#/components/schemas/BusinessProcedureInclusionStatus"
+          }
+        }
+      },
+      "CheckFileStateUsageRequest" : {
+        "required" : [ "fileStatesIds" ],
+        "type" : "object",
+        "properties" : {
+          "fileStatesIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "CheckFileStateUsageResponse" : {
+        "required" : [ "inUse" ],
+        "type" : "object",
+        "properties" : {
+          "inUse" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "Concern" : {
+        "type" : "string",
+        "enum" : [ "HIV_STI_CONSULTATION", "SEX_WORK" ]
+      },
+      "Consultation" : {
+        "type" : "object",
+        "properties" : {
+          "general" : {
+            "$ref" : "#/components/schemas/ConsultationGeneralSection"
+          },
+          "pregnancy" : {
+            "$ref" : "#/components/schemas/ConsultationPregnancySection"
+          }
+        },
+        "description" : "Documents detailed patient information, including anamnesis review, medical history, and referrals."
+      },
+      "ConsultationGeneralSection" : {
+        "type" : "object",
+        "properties" : {
+          "drugUse" : {
+            "type" : "string",
+            "description" : "Records the patient's drug use or consumption.",
+            "example" : "The patient reports occasional consumption of alcohol."
+          },
+          "furtherGenderInfo" : {
+            "type" : "string",
+            "description" : "Additional gender-related information.",
+            "example" : "The patient identifies as non-binary and prefers the pronouns they/them."
+          },
+          "hasGermanHealthInsurance" : {
+            "type" : "boolean",
+            "description" : "Indicates whether the patient has German health insurance."
+          },
+          "hasHealthInsurance" : {
+            "type" : "boolean",
+            "description" : "Indicates whether the patient has any form of health insurance."
+          },
+          "hasInsecureResidence" : {
+            "type" : "boolean",
+            "description" : "Indicates whether the patient's residency status is insecure."
+          },
+          "hasSufficientGermanLanguageSkills" : {
+            "type" : "boolean",
+            "description" : "Indicates whether the patient has sufficient German language skills."
+          },
+          "hasSymptoms" : {
+            "type" : "boolean",
+            "description" : "Indicates whether the patient has any symptoms."
+          },
+          "isIlliterate" : {
+            "type" : "boolean",
+            "description" : "Indicates whether the patient is illiterate."
+          },
+          "mainReason" : {
+            "type" : "string",
+            "description" : "Primary reason for the patient's consultation.",
+            "example" : "The patient is seeking a routine check-up to address mild abdominal discomfort."
+          },
+          "notes" : {
+            "type" : "string",
+            "description" : "Optional field for additional remarks or comments during the consultation.",
+            "example" : "The patient was advised to follow up in two weeks for further monitoring of symptoms."
+          },
+          "otherKnownLanguages" : {
+            "type" : "string",
+            "description" : "Other languages the patient can speak or understand.",
+            "example" : "Spanish and French."
+          },
+          "referral" : {
+            "type" : "string",
+            "description" : "Details any referral made to another department or specialist.",
+            "example" : "The patient has been referred to the gynecology department."
+          },
+          "symptoms" : {
+            "type" : "string",
+            "description" : "Details the symptoms reported by the patient.",
+            "example" : "The patient reports persistent headaches and dizziness over the past week."
+          }
+        },
+        "description" : "General patient details, including language proficiency, gender information and health insurance data."
+      },
+      "ConsultationPregnancySection" : {
+        "type" : "object",
+        "properties" : {
+          "hasPregnancyRelatedInfo" : {
+            "type" : "boolean",
+            "description" : "Indicates whether pregnancy-related information is provided."
+          },
+          "lastCytologyTest" : {
+            "type" : "string",
+            "description" : "Date of the patient's most recent cytology test.",
+            "format" : "date",
+            "example" : "2023-05-08"
+          },
+          "numberOfBirths" : {
+            "type" : "integer",
+            "description" : "Total number of births the patient had.",
+            "format" : "int32",
+            "example" : 3
+          },
+          "numberOfEctopicPregnancies" : {
+            "type" : "integer",
+            "description" : "Number of ectopic pregnancies, developed outside the uterus.",
+            "format" : "int32",
+            "example" : 1
+          },
+          "numberOfInducedAbortions" : {
+            "type" : "integer",
+            "description" : "Number of induced abortions the patient had.",
+            "format" : "int32",
+            "example" : 2
+          },
+          "numberOfOtherAbortions" : {
+            "type" : "integer",
+            "description" : "Number of abortions due to other reasons.",
+            "format" : "int32",
+            "example" : 1
+          },
+          "numberOfPregnancies" : {
+            "type" : "integer",
+            "description" : "Total number of pregnancies the patient had.",
+            "format" : "int32",
+            "example" : 6
+          },
+          "startOfLastPeriod" : {
+            "type" : "string",
+            "description" : "Start date of the patient's last menstrual period.",
+            "format" : "date",
+            "example" : "2024-12-01"
+          }
+        },
+        "description" : "Pregnancy-related details, including the number of previous pregnancies and abortions."
+      },
+      "ContactDetails" : {
+        "required" : [ "contactType", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "$ref" : "#/components/schemas/InboxProcedureAddress"
+          },
+          "contactType" : {
+            "$ref" : "#/components/schemas/ContactType"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "emailAddress" : {
+            "type" : "string"
+          },
+          "facilityName" : {
+            "type" : "string"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "lastName" : {
+            "type" : "string"
+          },
+          "phoneNumber" : {
+            "type" : "string"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "$ref" : "#/components/schemas/Title"
+          }
+        }
+      },
+      "ContactType" : {
+        "type" : "string",
+        "enum" : [ "PRIVATE_PERSON", "FACILITY" ]
+      },
+      "CountryCode" : {
+        "type" : "string",
+        "description" : "List of country codes in ISO 3166-1 alpha-2 format. With custom extensions for stateless, non-standard countries, and unknown countries.",
+        "enum" : [ "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW", "XK", "UNKNOWN", "STATELESS" ]
+      },
+      "CreateAppointmentBlockGroupResponse" : {
+        "required" : [ "appointmentBlockIds", "id" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlockIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the AppointmentBlockGroup.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          }
+        }
+      },
+      "CreateAppointmentRequest" : {
+        "required" : [ "appointmentBookingType", "appointmentStart", "appointmentType", "durationInMinutes" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBookingType" : {
+            "$ref" : "#/components/schemas/AppointmentBookingType"
+          },
+          "appointmentStart" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "appointmentType" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          },
+          "durationInMinutes" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "CreateApprovalRequestRequest" : {
+        "required" : [ "reason" ],
+        "type" : "object",
+        "properties" : {
+          "reason" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateDailyAppointmentBlock" : {
+        "required" : [ "daysOfWeek", "end", "start" ],
+        "type" : "object",
+        "properties" : {
+          "daysOfWeek" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DayOfWeek"
+            }
+          },
+          "end" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block ends.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:45:00.123456+01:00"
+          },
+          "start" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block starts.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:00:00.123456+01:00"
+          }
+        }
+      },
+      "CreateDailyAppointmentBlockGroupRequest" : {
+        "required" : [ "appointmentBlocks", "parallelExaminations", "type" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlocks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CreateDailyAppointmentBlock"
+            }
+          },
+          "consultants" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "locationId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "mfas" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "parallelExaminations" : {
+            "maximum" : 10,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "physicians" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }
+      },
+      "CreateFollowUpProcedureRequest" : {
+        "required" : [ "appointmentBookingType", "appointmentStart", "concern", "durationInMinutes" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBookingType" : {
+            "$ref" : "#/components/schemas/AppointmentBookingType"
+          },
+          "appointmentStart" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "concern" : {
+            "$ref" : "#/components/schemas/Concern"
+          },
+          "durationInMinutes" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "CreateFollowUpProcedureResponse" : {
+        "required" : [ "pin", "procedureId" ],
+        "type" : "object",
+        "properties" : {
+          "pin" : {
+            "pattern" : "\\d{6}",
+            "type" : "string",
+            "description" : "The PIN for anonymous authorization.",
+            "example" : "654321"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "CreateInboxProcedureRequest" : {
+        "required" : [ "contactDetails", "inboxProgressEntry" ],
+        "type" : "object",
+        "properties" : {
+          "contactDetails" : {
+            "$ref" : "#/components/schemas/ContactDetails"
+          },
+          "inboxProcedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "inboxProgressEntry" : {
+            "$ref" : "#/components/schemas/CreateInboxProgressEntry"
+          }
+        }
+      },
+      "CreateInboxProgressEntry" : {
+        "required" : [ "inboxProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProgressEntryType" : {
+            "$ref" : "#/components/schemas/InboxProgressEntryType"
+          },
+          "messageText" : {
+            "type" : "string"
+          },
+          "subject" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateManualProgressEntryRequest" : {
+        "required" : [ "manualProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "keyDocumentType" : {
+            "type" : "string"
+          },
+          "manualProgressEntryType" : {
+            "$ref" : "#/components/schemas/ManualProgressEntryType"
+          },
+          "note" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateMedicalHistoryRequest" : {
+        "required" : [ "medicalHistory" ],
+        "type" : "object",
+        "properties" : {
+          "medicalHistory" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/SexWorkMedicalHistory"
+            }, {
+              "$ref" : "#/components/schemas/StiConsultationMedicalHistory"
+            } ]
+          }
+        }
+      },
+      "CreateProcedureRequest" : {
+        "required" : [ "appointmentBookingType", "appointmentStart", "concern", "durationInMinutes", "gender", "yearOfBirth" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBookingType" : {
+            "$ref" : "#/components/schemas/AppointmentBookingType"
+          },
+          "appointmentStart" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "concern" : {
+            "$ref" : "#/components/schemas/Concern"
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "durationInMinutes" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "inGermanySince" : {
+            "type" : "integer",
+            "description" : "The year since the person has been residing in Germany.",
+            "format" : "int32",
+            "example" : 2022
+          },
+          "yearOfBirth" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "CreateProcedureResponse" : {
+        "required" : [ "pin", "procedureId" ],
+        "type" : "object",
+        "properties" : {
+          "pin" : {
+            "pattern" : "\\d{6}",
+            "type" : "string",
+            "description" : "The PIN for anonymous authorization.",
+            "example" : "654321"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "CreateTextTemplateRequest" : {
+        "required" : [ "content", "context", "name" ],
+        "type" : "object",
+        "properties" : {
+          "content" : {
+            "type" : "string"
+          },
+          "context" : {
+            "$ref" : "#/components/schemas/TextTemplateContext"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateTextTemplateResponse" : {
+        "required" : [ "textTemplateId" ],
+        "type" : "object",
+        "properties" : {
+          "textTemplateId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "DataOrigin" : {
+        "type" : "string",
+        "description" : "A list of possible origins of Persons and Facility in the Central Files. EDIT will only be set automatically on changes. EXTERNAL is for entries that come, e.g., from the citizen portal. IMPORT is reserved for automatic imports. MANUAL shall be set for every creation or connection done by an employee.",
+        "enum" : [ "MANUAL", "EXTERNAL", "IMPORT", "EDIT" ]
+      },
+      "DayOfWeek" : {
+        "type" : "string",
+        "enum" : [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ]
+      },
+      "Decision" : {
+        "type" : "string",
+        "enum" : [ "GRANTED", "DENIED" ]
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "DeleteDownloadPackagesRequest" : {
+        "required" : [ "downloadIds" ],
+        "type" : "object",
+        "properties" : {
+          "downloadIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "DetailedFacility" : {
+        "required" : [ "facilityFileState", "facilityType" ],
+        "type" : "object",
+        "properties" : {
+          "facilityFileState" : {
+            "$ref" : "#/components/schemas/GetFacilityFileStateResponse"
+          },
+          "facilityType" : {
+            "$ref" : "#/components/schemas/FacilityType"
+          }
+        }
+      },
+      "DetailedPerson" : {
+        "required" : [ "person", "personType" ],
+        "type" : "object",
+        "properties" : {
+          "person" : {
+            "$ref" : "#/components/schemas/GetPersonFileStateResponse"
+          },
+          "personType" : {
+            "$ref" : "#/components/schemas/PersonType"
+          }
+        }
+      },
+      "DetailedTask" : {
+        "required" : [ "task" ],
+        "type" : "object",
+        "properties" : {
+          "assignedByName" : {
+            "type" : "string"
+          },
+          "assigneeName" : {
+            "type" : "string"
+          },
+          "task" : {
+            "$ref" : "#/components/schemas/Task"
+          }
+        }
+      },
+      "Diagnosis" : {
+        "type" : "object",
+        "properties" : {
+          "findings" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Icd10Code"
+            }
+          },
+          "generalRemarks" : {
+            "type" : "string"
+          },
+          "medications" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Medication"
+            }
+          },
+          "otherTestTypeName" : {
+            "type" : "string"
+          },
+          "results" : {
+            "type" : "string"
+          },
+          "resultsCommunicated" : {
+            "type" : "boolean"
+          },
+          "testTypes" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TestType"
+            }
+          }
+        }
+      },
+      "DomesticAddress" : {
+        "required" : [ "city", "country", "postalCode", "street" ],
+        "type" : "object",
+        "description" : "A usual domestic address.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "addressAddition" : {
+              "maxLength" : 100,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "A descriptive addition to the address.",
+              "example" : "2.OG links"
+            },
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "houseNumber" : {
+              "maxLength" : 11,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The house number of the address, including extensions.",
+              "example" : "1a"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "street" : {
+              "maxLength" : 55,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the street of the address, without the house number.",
+              "example" : "Beispielweg"
+            }
+          }
+        } ]
+      },
+      "Examination" : {
+        "type" : "object",
+        "properties" : {
+          "chlamydia" : {
+            "type" : "boolean",
+            "description" : "Indicating if the patient has been examined for Chlamydia."
+          },
+          "chlamydiaDate" : {
+            "type" : "string",
+            "description" : "Date indicating when the patient was last examined for Chlamydia.",
+            "format" : "date"
+          },
+          "gonorrhea" : {
+            "type" : "boolean",
+            "description" : "Indicating if the patient has been examined for Gonorrhea."
+          },
+          "gonorrheaDate" : {
+            "type" : "string",
+            "description" : "Date indicating when the patient was last examined for Gonorrhea.",
+            "format" : "date"
+          },
+          "hepA" : {
+            "type" : "boolean",
+            "description" : "Indicating if the patient has been examined for Hepatitis A."
+          },
+          "hepADate" : {
+            "type" : "string",
+            "description" : "Date indicating when the patient was last examined for Hepatitis A.",
+            "format" : "date"
+          },
+          "hepB" : {
+            "type" : "boolean",
+            "description" : "Indicating if the patient has been examined for Hepatitis B."
+          },
+          "hepBDate" : {
+            "type" : "string",
+            "description" : "Date indicating when the patient was last examined for Hepatitis B.",
+            "format" : "date"
+          },
+          "hepC" : {
+            "type" : "boolean",
+            "description" : "Indicating if the patient has been examined for Hepatitis C."
+          },
+          "hepCDate" : {
+            "type" : "string",
+            "description" : "Date indicating when the patient was last examined for Hepatitis C.",
+            "format" : "date"
+          },
+          "hiv" : {
+            "type" : "boolean",
+            "description" : "Indicating if the patient has been examined for HIV."
+          },
+          "hivDate" : {
+            "type" : "string",
+            "description" : "Date indicating when the patient was last examined for HIV.",
+            "format" : "date"
+          },
+          "syphilis" : {
+            "type" : "boolean",
+            "description" : "Indicating if the patient has been examined for Syphilis."
+          },
+          "syphilisDate" : {
+            "type" : "string",
+            "description" : "Date indicating when the patient was last examined for Syphilis.",
+            "format" : "date"
+          }
+        },
+        "description" : "Contains information about any examinations the patient previously undergone."
+      },
+      "ExportArchivingRelevantProceduresRequest" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "FacilityContactPerson" : {
+        "required" : [ "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "emailAddress" : {
+            "maxLength" : 254,
+            "minLength" : 6,
+            "type" : "string",
+            "description" : "The email addresses of the Contact Person.",
+            "example" : "mail1@address.de"
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Contact Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Contact Person.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "maxLength" : 23,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The phone number of the Contact Person.",
+            "example" : "+491234567890"
+          },
+          "role" : {
+            "maxLength" : 255,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The role of the Contact Person in the Facility.",
+            "example" : "CEO"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of the Contact Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "FacilityType" : {
+        "type" : "string",
+        "enum" : [ "SCHOOL", "INSPECTION", "DAYCARE", "HOSPITAL", "MEDICAL_PRACTICE", "REFUGEE_ACCOMMODATION", "OTHER" ]
+      },
+      "FileMetaData" : {
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          }
+        }
+      },
+      "FileType" : {
+        "type" : "string",
+        "enum" : [ "JPEG", "PNG", "PDF", "EML" ]
+      },
+      "GdprDownloadPackageInfo" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GdprFacility" : {
+        "required" : [ "address", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "dataTransmitterPseudonymId" : {
+              "type" : "string",
+              "description" : "The 'DatenübermittlerPseudonymId' of the MUK user",
+              "example" : "du-986b2b54ab89cf4ed674ad8c3126b966b54d4872"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Facility.",
+              "example" : "mail@address.de"
+            },
+            "name" : {
+              "maxLength" : 300,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the Facility.",
+              "example" : "123 Example Facility"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The phone number of the Facility.",
+              "example" : "+491234567890"
+            }
+          }
+        } ]
+      },
+      "GdprIdentificationData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "GdprPerson" : {
+        "required" : [ "address", "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "bpk2" : {
+              "type" : "string",
+              "description" : "The bpk2 of the BundId user",
+              "example" : "VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0"
+            },
+            "dateOfBirth" : {
+              "type" : "string",
+              "description" : "The date of birth of the Person.",
+              "format" : "date",
+              "example" : "2000-01-01"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Person.",
+              "example" : "mail@address.de"
+            },
+            "firstName" : {
+              "maxLength" : 80,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The given name(s) of the Person.",
+              "example" : "John"
+            },
+            "lastName" : {
+              "maxLength" : 120,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The last name of the Person.",
+              "example" : "Doe"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 0,
+              "type" : "string",
+              "description" : "The phone number of the Person.",
+              "example" : "+491234567890"
+            },
+            "salutation" : {
+              "$ref" : "#/components/schemas/Salutation"
+            },
+            "title" : {
+              "maxLength" : 119,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The academic title of the Person.",
+              "example" : "Prof. Dr."
+            }
+          }
+        } ]
+      },
+      "GdprProcedureType" : {
+        "type" : "string",
+        "description" : "A list of types of GDPR procedures.",
+        "enum" : [ "RIGHT_OF_ACCESS", "RIGHT_TO_ERASURE" ]
+      },
+      "GdprValidationTask" : {
+        "required" : [ "dueDate", "gdprProcedureId", "identificationData", "status", "type" ],
+        "type" : "object",
+        "properties" : {
+          "dueDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "gdprProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "identificationData" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GdprFacility"
+            }, {
+              "$ref" : "#/components/schemas/GdprPerson"
+            } ]
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }
+      },
+      "GdprValidationTaskSortKey" : {
+        "type" : "string",
+        "enum" : [ "CREATED_AT" ]
+      },
+      "GdprValidationTaskStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "Gender" : {
+        "type" : "string",
+        "description" : "The list of genders as specified in the German Personenstandsgesetz.",
+        "example" : "['FEMALE','DIVERSE']",
+        "enum" : [ "NOT_SPECIFIED", "DIVERSE", "FEMALE", "MALE" ]
+      },
+      "GenericFileReference" : {
+        "required" : [ "@type", "deletable", "deleted", "fileId" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFileReference"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "GetAllValidationTasksResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GdprValidationTask"
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetAppointmentBlock" : {
+        "required" : [ "end", "id", "numberOfBookedAppointments", "numberOfFreeAppointments", "start" ],
+        "type" : "object",
+        "properties" : {
+          "end" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block ends.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:45:00.123456+01:00"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the AppointmentBlock.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "numberOfBookedAppointments" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "numberOfFreeAppointments" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "start" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block starts.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:00:00.123456+01:00"
+          }
+        },
+        "description" : "A planned appointment block. Appointment blocks offer a set of bookable appointments at different times within the timeframe of the appointment block."
+      },
+      "GetAppointmentBlockGroup" : {
+        "required" : [ "appointmentBlocks", "id", "parallelExaminations", "type" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlocks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GetAppointmentBlock"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the AppointmentBlockGroup.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "location" : {
+            "$ref" : "#/components/schemas/AppointmentLocation"
+          },
+          "parallelExaminations" : {
+            "maximum" : 10,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }
+      },
+      "GetAppointmentBlockGroupsResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GetAppointmentBlockGroup"
+            }
+          },
+          "totalNumberOfElements" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetAppointmentTypesResponse" : {
+        "required" : [ "appointmentTypeConfigDtos" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentTypeConfigDtos" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AppointmentTypeConfig"
+            }
+          }
+        }
+      },
+      "GetArchivableProceduresResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetArchivableProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CLOSED_AT",
+        "enum" : [ "CLOSED_AT", "PROCEDURE_TYPE" ]
+      },
+      "GetArchivableProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetArchivingConfigurationResponse" : {
+        "required" : [ "archivingDetails", "gracePeriodMonths" ],
+        "type" : "object",
+        "properties" : {
+          "archivingDetails" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/ArchivingDetails"
+            }
+          },
+          "gracePeriodMonths" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetDetailedProcedureResponse" : {
+        "required" : [ "facilities", "persons", "procedure", "tasks" ],
+        "type" : "object",
+        "properties" : {
+          "facilities" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedFacility"
+            }
+          },
+          "persons" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedPerson"
+            }
+          },
+          "procedure" : {
+            "$ref" : "#/components/schemas/Procedure"
+          },
+          "tasks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedTask"
+            }
+          }
+        }
+      },
+      "GetFacilityFileStateResponse" : {
+        "required" : [ "contactPersons", "dataOrigin", "emailAddresses", "id", "name", "phoneNumbers", "referenceVersion" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Facility.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referenceFacility it is connected to.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          }
+        }
+      },
+      "GetFreeAppointmentsResponse" : {
+        "required" : [ "appointments" ],
+        "type" : "object",
+        "properties" : {
+          "appointments" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Appointment"
+            }
+          }
+        }
+      },
+      "GetGdprDownloadPackagesInfoResponse" : {
+        "required" : [ "downloadPackages" ],
+        "type" : "object",
+        "properties" : {
+          "downloadPackages" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GdprDownloadPackageInfo"
+            }
+          }
+        }
+      },
+      "GetGdprNotificationBannerResponse" : {
+        "required" : [ "openValidationTasksCount" ],
+        "type" : "object",
+        "properties" : {
+          "earliestDueDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "openValidationTasksCount" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetGdprValidationTaskDetailsResponse" : {
+        "required" : [ "proceduresWithStatus", "validationTask" ],
+        "type" : "object",
+        "properties" : {
+          "proceduresWithStatus" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessProcedureWithInclusionStatus"
+            }
+          },
+          "validationTask" : {
+            "$ref" : "#/components/schemas/GdprValidationTask"
+          }
+        }
+      },
+      "GetGdprValidationTaskResponse" : {
+        "required" : [ "status" ],
+        "type" : "object",
+        "properties" : {
+          "status" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          }
+        }
+      },
+      "GetInboxProcedureResponse" : {
+        "required" : [ "inboxProcedure", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProcedure" : {
+            "$ref" : "#/components/schemas/InboxProcedure"
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetInboxProceduresResponse" : {
+        "required" : [ "inboxProcedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProcedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InboxProcedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetInboxProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "CREATED_AT" ]
+      },
+      "GetInboxProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetManualProgressEntryHistoryResponse" : {
+        "type" : "object",
+        "properties" : {
+          "manualProgressEntryHistory" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ManualProgressEntryHistory"
+            }
+          }
+        }
+      },
+      "GetMetaDataHistoryResponse" : {
+        "type" : "object",
+        "properties" : {
+          "metaDataHistory" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ImageMetaDataHistory"
+              }, {
+                "$ref" : "#/components/schemas/MailMetaDataHistory"
+              }, {
+                "$ref" : "#/components/schemas/PdfMetaDataHistory"
+              } ]
+            }
+          }
+        }
+      },
+      "GetPersonFileStateResponse" : {
+        "required" : [ "dataOrigin", "dateOfBirth", "emailAddresses", "firstName", "gender", "id", "lastName", "phoneNumbers", "referenceVersion", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "The date of birth of the Person.",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Person.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Person.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Person.",
+            "example" : "Doe"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name at birth of the Person.",
+            "example" : "Smith"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referencePerson it is connected to. Set to 'null' if unchecked.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Person.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The place of birth (without country) of the Person.",
+            "example" : "Berlin"
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "GetProcedureApprovalRequestsResponse" : {
+        "required" : [ "approvalRequests", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "approvalRequests" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ApprovalRequest"
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetProcedureFileDetailsResponse" : {
+        "required" : [ "fileDetails", "procedureId" ],
+        "type" : "object",
+        "properties" : {
+          "fileDetails" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProgressEntryReferenceFilePair"
+            }
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GetProcedureMetricsResponse" : {
+        "required" : [ "procedureMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "procedureMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureMetric"
+            }
+          }
+        }
+      },
+      "GetProceduresOverviewResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/StiProtectionProcedureOverview"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "The total amount of elements",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "The total number of pages",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetProceduresResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "MODIFIED_AT", "CREATED_AT" ]
+      },
+      "GetProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetProgressEntriesResponse" : {
+        "required" : [ "progressEntries", "resolvedUsers", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "progressEntries" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ManualProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/ProcessedInboxProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/SystemProgressEntry"
+              } ]
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetProgressEntryResponse" : {
+        "required" : [ "progressEntry", "relatedKeyDocumentProgressEntries", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "progressEntry" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/ManualProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/ProcessedInboxProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/SystemProgressEntry"
+            } ]
+          },
+          "relatedKeyDocumentProgressEntries" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ManualProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/SystemProgressEntry"
+              } ]
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetRecentProceduresResponse" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          }
+        }
+      },
+      "GetRelevantArchivableProceduresResponse" : {
+        "required" : [ "fileSizeBytes", "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "fileSizeBytes" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetRelevantArchivableProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CLOSED_AT",
+        "enum" : [ "CLOSED_AT", "EXPORTED_AT" ]
+      },
+      "GetRelevantArchivableProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetStiProtectionProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "CREATED_AT", "STATUS", "CONCERN", "YEAR_OF_BIRTH", "GENDER", "LAB_STATUS" ]
+      },
+      "GetStiProtectionProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetTaskByUserResponse" : {
+        "required" : [ "resolvedUsers", "tasksByUser" ],
+        "type" : "object",
+        "properties" : {
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "tasksByUser" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/Task"
+              }
+            }
+          }
+        }
+      },
+      "GetTaskMetricsResponse" : {
+        "required" : [ "businessModule", "closedProcedureCount", "fastestProcedures", "procedureType", "slowestProcedures", "taskMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedProcedureCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "fastestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "slowestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "taskMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskMetric"
+            }
+          }
+        }
+      },
+      "GetTasksSortBy" : {
+        "type" : "string",
+        "enum" : [ "PRIORITY", "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "GetTasksSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetTextTemplatesResponse" : {
+        "required" : [ "textTemplates" ],
+        "type" : "object",
+        "properties" : {
+          "textTemplates" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TextTemplate"
+            }
+          }
+        }
+      },
+      "GetWaitingRoomProceduresResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/WaitingRoomProcedure"
+            }
+          },
+          "totalNumberOfElements" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "HepatitisLaboratoryTest" : {
+        "type" : "object",
+        "properties" : {
+          "infection" : {
+            "type" : "boolean",
+            "description" : "Indicates whether the test is conducted in the context of an infection."
+          },
+          "remark" : {
+            "type" : "string",
+            "description" : "Provides additional comments related to the corresponding test.",
+            "example" : "HAV-AK IgM-Test"
+          },
+          "result" : {
+            "type" : "boolean",
+            "description" : "Indicates the outcome of the laboratory test result."
+          },
+          "vaccineTitre" : {
+            "type" : "boolean",
+            "description" : "Indicates whether the test is conducted in the context of a vaccination."
+          },
+          "value" : {
+            "type" : "string",
+            "description" : "Records a specific measurement or value obtained from the laboratory test results.",
+            "example" : "1.5 U/ml"
+          }
+        },
+        "description" : "Used in the context of laboratory test examination to document test results for Hepatitis A and Hepatitis B."
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "Icd10Code" : {
+        "required" : [ "code", "isGroup", "title" ],
+        "type" : "object",
+        "properties" : {
+          "code" : {
+            "type" : "string",
+            "description" : "ICD-10 code or ICD-10 group code",
+            "example" : "A00"
+          },
+          "isGroup" : {
+            "type" : "boolean",
+            "description" : "If true, the returned code specifies an ICD-10 code group."
+          },
+          "title" : {
+            "type" : "string",
+            "description" : "ICD-10 code title",
+            "example" : "Cholera"
+          }
+        }
+      },
+      "Image" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/ImageMetaData"
+            }
+          }
+        } ]
+      },
+      "ImageMetaData" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "ImageMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "imageMetaData" : {
+              "$ref" : "#/components/schemas/ImageMetaData"
+            }
+          }
+        } ]
+      },
+      "InboxProcedure" : {
+        "required" : [ "contactDetails", "createdAt", "createdBy", "inboxProcedureId", "inboxProcedureStatus", "inboxProgressEntry" ],
+        "type" : "object",
+        "properties" : {
+          "closedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "contactDetails" : {
+            "$ref" : "#/components/schemas/ContactDetails"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProcedureStatus" : {
+            "$ref" : "#/components/schemas/InboxProcedureStatus"
+          },
+          "inboxProcedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "inboxProgressEntry" : {
+            "$ref" : "#/components/schemas/InboxProgressEntry"
+          }
+        }
+      },
+      "InboxProcedureAddress" : {
+        "type" : "object",
+        "properties" : {
+          "addressAddition" : {
+            "type" : "string"
+          },
+          "city" : {
+            "type" : "string"
+          },
+          "country" : {
+            "type" : "string"
+          },
+          "houseNumber" : {
+            "type" : "string"
+          },
+          "postalCode" : {
+            "type" : "string"
+          },
+          "postboxNumber" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "street" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InboxProcedureStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "InboxProgressEntry" : {
+        "required" : [ "inboxProgressEntryId", "inboxProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "fileReference" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GenericFileReference"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "inboxProgressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProgressEntryType" : {
+            "$ref" : "#/components/schemas/InboxProgressEntryType"
+          },
+          "messageText" : {
+            "type" : "string"
+          },
+          "subject" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InboxProgressEntryType" : {
+        "type" : "string",
+        "enum" : [ "LETTER", "PHONE_CALL", "EMAIL" ]
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "KeyDocumentAwareProgressEntry" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "keyDocumentType" : {
+            "type" : "string"
+          },
+          "keyDocumentVersion" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "LabStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "IN_PROGRESS", "CLOSED" ]
+      },
+      "LaboratoryTest" : {
+        "type" : "object",
+        "properties" : {
+          "remark" : {
+            "type" : "string",
+            "description" : "Provides additional comments related to the corresponding test.",
+            "example" : "CT-Value: 28.5"
+          },
+          "result" : {
+            "type" : "boolean",
+            "description" : "Indicates the outcome of the laboratory test result."
+          },
+          "value" : {
+            "type" : "string",
+            "description" : "Records a specific measurement or value obtained from the laboratory test results.",
+            "example" : "Chlamydia tr. rRNA Test"
+          }
+        },
+        "description" : "Used in the context of laboratory test examinations to document test results."
+      },
+      "LaboratoryTestExamination" : {
+        "type" : "object",
+        "properties" : {
+          "cancerScreeningTestData" : {
+            "$ref" : "#/components/schemas/LaboratoryTest"
+          },
+          "cancerScreeningTestRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether a Cancer Screening laboratory test is requested."
+          },
+          "chlamydiaTestRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether a Chlamydia laboratory test is requested."
+          },
+          "chlamydiaTestSamples" : {
+            "$ref" : "#/components/schemas/LaboratoryTestSamples"
+          },
+          "generalRemarks" : {
+            "type" : "string",
+            "description" : "Provides general comments related to the laboratory tests.",
+            "example" : "Sample processed at Black Mesa Diagnostics Laboratory."
+          },
+          "gonorrheaTestRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether a Gonorrhea laboratory test is requested."
+          },
+          "gonorrheaTestSamples" : {
+            "$ref" : "#/components/schemas/LaboratoryTestSamples"
+          },
+          "hadSyphilis" : {
+            "type" : "boolean",
+            "description" : "Indicates if the patient was previously infected with Syphilis."
+          },
+          "hepATestData" : {
+            "$ref" : "#/components/schemas/HepatitisLaboratoryTest"
+          },
+          "hepATestRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether a Hepatitis A laboratory test is requested."
+          },
+          "hepBTestData" : {
+            "$ref" : "#/components/schemas/HepatitisLaboratoryTest"
+          },
+          "hepBTestRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether a Hepatitis B laboratory test is requested."
+          },
+          "hepCTestData" : {
+            "$ref" : "#/components/schemas/LaboratoryTest"
+          },
+          "hepCTestRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether a Hepatitis C laboratory test is requested."
+          },
+          "hivTestData" : {
+            "$ref" : "#/components/schemas/LaboratoryTest"
+          },
+          "hivTestRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether an HIV laboratory test is requested."
+          },
+          "hpvTestData" : {
+            "$ref" : "#/components/schemas/LaboratoryTest"
+          },
+          "hpvTestRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether an HPV laboratory test is requested."
+          },
+          "mpoxTestData" : {
+            "$ref" : "#/components/schemas/LaboratoryTest"
+          },
+          "mpoxTestRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether a Mpox laboratory test is requested."
+          },
+          "mycoplasmaTestRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether a Mycoplasma laboratory test is requested."
+          },
+          "mycoplasmaTestSamples" : {
+            "$ref" : "#/components/schemas/LaboratoryTestSamples"
+          },
+          "otherTestData" : {
+            "$ref" : "#/components/schemas/LaboratoryTest"
+          },
+          "otherTestName" : {
+            "type" : "string",
+            "description" : "Records the name of the additional laboratory test.",
+            "example" : "Ethylglucuronid (LC-MS/MS)."
+          },
+          "otherTestRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether another additional laboratory test is requested."
+          },
+          "sampleBarcode" : {
+            "type" : "string",
+            "description" : "Specifies a barcode for tracking the results with the external laboratory.",
+            "example" : "4815162342"
+          },
+          "syphilisTestData" : {
+            "$ref" : "#/components/schemas/LaboratoryTest"
+          },
+          "syphilisTestRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether a Syphilis laboratory test is requested."
+          },
+          "testsConducted" : {
+            "type" : "boolean",
+            "description" : "Indicates if the tests were conducted and is used for the laboratory status."
+          },
+          "testsPayed" : {
+            "type" : "boolean",
+            "description" : "Indicates whether the patient has paid for the tests."
+          }
+        },
+        "description" : "Used to document the initial request which laboratory tests should be performed and to record the corresponding results."
+      },
+      "LaboratoryTestSamples" : {
+        "type" : "object",
+        "properties" : {
+          "analSampleData" : {
+            "$ref" : "#/components/schemas/LaboratoryTest"
+          },
+          "analSampleRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether an anal sample is requested."
+          },
+          "oralSampleData" : {
+            "$ref" : "#/components/schemas/LaboratoryTest"
+          },
+          "oralSampleRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether an oral sample is requested."
+          },
+          "urethralSampleData" : {
+            "$ref" : "#/components/schemas/LaboratoryTest"
+          },
+          "urethralSampleRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether an urethral sample is requested."
+          }
+        }
+      },
+      "Mail" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt", "removedInvalidAttachments" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/MailMetaData"
+            },
+            "removedInvalidAttachments" : {
+              "type" : "integer",
+              "format" : "int32"
+            }
+          }
+        } ]
+      },
+      "MailMetaData" : {
+        "required" : [ "mailFrom", "mailTo", "messageText", "sentDate", "subject" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "mailFrom" : {
+              "type" : "string"
+            },
+            "mailTo" : {
+              "type" : "string"
+            },
+            "messageText" : {
+              "type" : "string"
+            },
+            "sentDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "subject" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "MailMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "mailMetaData" : {
+              "$ref" : "#/components/schemas/MailMetaData"
+            }
+          }
+        } ]
+      },
+      "ManualProgressEntry" : {
+        "required" : [ "createdAt", "createdBy", "locked", "manualProgressEntryType", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "keyDocumentType" : {
+              "type" : "string"
+            },
+            "keyDocumentVersion" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "locked" : {
+              "type" : "boolean"
+            },
+            "manualProgressEntryType" : {
+              "$ref" : "#/components/schemas/ManualProgressEntryType"
+            },
+            "note" : {
+              "type" : "string"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/ApprovalRequestEntity"
+        }, {
+          "$ref" : "#/components/schemas/KeyDocumentAwareProgressEntry"
+        } ]
+      },
+      "ManualProgressEntryHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "properties" : {
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "manualProgressEntry" : {
+            "$ref" : "#/components/schemas/ManualProgressEntry"
+          }
+        }
+      },
+      "ManualProgressEntryType" : {
+        "type" : "string",
+        "enum" : [ "LETTER", "PHONE_CALL", "NOTE", "EMAIL", "IMAGE", "DOCUMENT" ]
+      },
+      "MedicalHistory" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "Medication" : {
+        "required" : [ "dose", "name", "prescriptionDate" ],
+        "type" : "object",
+        "properties" : {
+          "dose" : {
+            "type" : "string"
+          },
+          "name" : {
+            "type" : "string"
+          },
+          "prescriptionDate" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }
+      },
+      "MetaData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "description" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "MetaDataHistory" : {
+        "required" : [ "@type", "changedAt" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "Operation" : {
+        "type" : "string",
+        "enum" : [ "DELETE" ]
+      },
+      "PartnerRiskFactors" : {
+        "type" : "string",
+        "description" : "Details any know risk factors associated the patient's sexual partners.",
+        "example" : "['SEX_WORKER','STI_POSITIVE','INJECTED_DRUGS']",
+        "enum" : [ "HOMOSEXUAL", "BISEXUAL_MALE", "HIV_POSITIVE", "STI_POSITIVE", "INJECTED_DRUGS", "SEX_WORKER" ]
+      },
+      "PatchManualProgressEntryRequest" : {
+        "type" : "object",
+        "properties" : {
+          "manualProgressEntryType" : {
+            "$ref" : "#/components/schemas/ManualProgressEntryType"
+          },
+          "note" : {
+            "type" : "string",
+            "nullable" : true
+          }
+        }
+      },
+      "Pdf" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/PdfMetaData"
+            }
+          }
+        } ]
+      },
+      "PdfMetaData" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "PdfMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "pdfMetaData" : {
+              "$ref" : "#/components/schemas/PdfMetaData"
+            }
+          }
+        } ]
+      },
+      "Person" : {
+        "required" : [ "gender", "id", "yearOfBirth" ],
+        "type" : "object",
+        "properties" : {
+          "accessCode" : {
+            "type" : "string",
+            "description" : "Unique code for patient identification and login to the online portal, valid until the procedure is closed.",
+            "example" : "937ZiFaqjkfQgTBmo"
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "An unique identifier for the person.",
+            "format" : "uuid",
+            "example" : "UUID_3"
+          },
+          "inGermanySince" : {
+            "type" : "integer",
+            "description" : "The year since the person has been residing in Germany.",
+            "format" : "int32",
+            "example" : 2010
+          },
+          "yearOfBirth" : {
+            "type" : "integer",
+            "description" : "The year of birth of the person.",
+            "format" : "int32",
+            "example" : 2000
+          }
+        }
+      },
+      "PersonType" : {
+        "type" : "string",
+        "enum" : [ "PATIENT", "PARENT", "PROFESSIONAL" ]
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "PostboxAddress" : {
+        "required" : [ "city", "country", "postalCode", "postbox" ],
+        "type" : "object",
+        "description" : "An address which is a postbox.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "postbox" : {
+              "maxLength" : 21,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The number (or name) of the postbox.",
+              "example" : "123"
+            }
+          }
+        } ]
+      },
+      "Prevention" : {
+        "type" : "object",
+        "properties" : {
+          "infoAboutPrepDesired" : {
+            "type" : "boolean",
+            "description" : "Indicates whether the patient wishes to receive information about PrEP."
+          },
+          "protectionMethodsUsed" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "description" : "Lists the methods of protection the patient has used during sexual activity.",
+            "example" : "['CONDOM','PREP']",
+            "items" : {
+              "$ref" : "#/components/schemas/ProtectionMethod"
+            }
+          },
+          "safeSexPractice" : {
+            "$ref" : "#/components/schemas/SafeSexPractice"
+          },
+          "vaccinations" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "description" : "Provides information on vaccinations the patient has received.",
+            "example" : "['HEPATITIS_A', 'HPV']",
+            "items" : {
+              "$ref" : "#/components/schemas/Vaccination"
+            }
+          }
+        },
+        "description" : "Details information regarding the patient's prevention strategies and measures."
+      },
+      "PreviousIllness" : {
+        "type" : "object",
+        "properties" : {
+          "chlamydia" : {
+            "type" : "boolean",
+            "description" : "Indicates if the patient was diagnosed with or experienced Chlamydia."
+          },
+          "gonorrhea" : {
+            "type" : "boolean",
+            "description" : "Indicates if the patient was diagnosed with or experienced Gonorrhea."
+          },
+          "hepA" : {
+            "type" : "boolean",
+            "description" : "Indicates if the patient was diagnosed with or experienced Hepatitis A."
+          },
+          "hepB" : {
+            "type" : "boolean",
+            "description" : "Indicates if the patient was diagnosed with or experienced Hepatitis B."
+          },
+          "hepC" : {
+            "type" : "boolean",
+            "description" : "Indicates if the patient was diagnosed with or experienced Hepatitis C."
+          },
+          "hiv" : {
+            "type" : "boolean",
+            "description" : "Indicates if the patient was diagnosed with or experienced HIV."
+          },
+          "other" : {
+            "type" : "boolean",
+            "description" : "Indicates if the patient was diagnosed with another not listed illness."
+          },
+          "otherData" : {
+            "type" : "string",
+            "description" : "Holds additional info regarding the other illness."
+          },
+          "syphilis" : {
+            "type" : "boolean",
+            "description" : "Indicates if the patient was diagnosed with or experienced Syphilis."
+          }
+        },
+        "description" : "Lists any past illnesses the patient had."
+      },
+      "Procedure" : {
+        "required" : [ "archivingRelevanceSettings", "businessModule", "createdAt", "modifiedAt", "procedureId", "procedureStatus", "procedureType", "summary" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevanceSettings" : {
+            "$ref" : "#/components/schemas/ArchivingRelevanceSettings"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "exportedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "procedureStatus" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "pattern" : "[a-zA-Z0-9.].+",
+            "type" : "string"
+          }
+        }
+      },
+      "ProcedureMetric" : {
+        "required" : [ "abortedCount", "businessModule", "closedCount", "inProgressCount", "openOrDraftCount", "procedureType", "totalCount" ],
+        "type" : "object",
+        "properties" : {
+          "abortedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "inProgressCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "openOrDraftCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "totalCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ProcedureStatus" : {
+        "type" : "string",
+        "enum" : [ "DRAFT", "OPEN", "IN_PROGRESS", "CLOSED", "ABORTED" ]
+      },
+      "ProcedureType" : {
+        "type" : "string",
+        "enum" : [ "REGULAR_EXAMINATION", "CAN_CHILD", "ENTRY_LEVEL", "DRAFT_CITIZEN_OFFICE_IMPORT", "DRAFT_SCHOOL_IMPORT", "INSPECTION", "TM_VACCINATION_CONSULTATION", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY_ENTRY", "MEDICAL_REGISTRY_CITIZEN_DRAFT", "MEDICAL_REGISTRY_EMPLOYEE_DRAFT", "DENTAL_CHILD", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "ProcedureWithDuration" : {
+        "required" : [ "createdAt", "id" ],
+        "type" : "object",
+        "properties" : {
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "duration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ProcessedInboxProgressEntry" : {
+        "required" : [ "createdAt", "createdBy", "inboxProcedureId", "inboxProgressEntryType", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "inboxProcedureId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "inboxProgressEntryType" : {
+              "$ref" : "#/components/schemas/InboxProgressEntryType"
+            },
+            "messageText" : {
+              "type" : "string"
+            },
+            "subject" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "ProgressEntry" : {
+        "required" : [ "@type", "createdAt", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "fileReference" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GenericFileReference"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "progressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ProgressEntryClass" : {
+        "type" : "string",
+        "enum" : [ "MANUAL_PROGRESS_ENTRY", "SYSTEM_PROGRESS_ENTRY", "PROCESSED_INBOX_PROGRESS_ENTRY" ]
+      },
+      "ProgressEntryReferenceFilePair" : {
+        "required" : [ "file", "progressEntryId" ],
+        "type" : "object",
+        "properties" : {
+          "file" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "progressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ProgressEntrySortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "ProgressEntrySortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "ProtectionMethod" : {
+        "type" : "string",
+        "description" : "Lists the methods of protection the patient has used during sexual activity.",
+        "example" : "['CONDOM','PREP']",
+        "enum" : [ "CONDOM", "DENTAL_DAM", "GLOVES", "PREP", "TASP", "OTHER" ]
+      },
+      "RapidTestData" : {
+        "required" : [ "result" ],
+        "type" : "object",
+        "properties" : {
+          "number" : {
+            "type" : "string",
+            "description" : "Represents the test number, which can be numerical, alphanumerical or alphabetical.",
+            "example" : "Test-481516"
+          },
+          "result" : {
+            "type" : "boolean",
+            "description" : "Indicates the outcome of the rapid test result"
+          }
+        },
+        "description" : "Used in the context of rapid test examinations to document test results."
+      },
+      "RapidTestExamination" : {
+        "required" : [ "bloodPressureRequested", "hivRequested", "pregnancyTestRequested", "pulseRequested", "syphilisRequested", "testsPayed", "ultrasoundRequested", "urinalysisRequested" ],
+        "type" : "object",
+        "properties" : {
+          "bloodPressureData" : {
+            "type" : "string",
+            "description" : "Records the measured blood pressure values.",
+            "example" : "120/80 mmHg."
+          },
+          "bloodPressureRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether blood pressure measurement is requested."
+          },
+          "generalComments" : {
+            "type" : "string",
+            "description" : "Provides general comments related to the rapid tests.",
+            "example" : "Faint test line observed. Confirmation with laboratory test recommended."
+          },
+          "hivData" : {
+            "$ref" : "#/components/schemas/RapidTestData"
+          },
+          "hivRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether an HIV rapid test is requested."
+          },
+          "pregnancyTestData" : {
+            "$ref" : "#/components/schemas/RapidTestData"
+          },
+          "pregnancyTestRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether a pregnancy test is requested."
+          },
+          "pulseData" : {
+            "type" : "string",
+            "description" : "Is used to document the measured pulse.",
+            "example" : "72 bpm."
+          },
+          "pulseRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether pulse measurement is requested."
+          },
+          "syphilisData" : {
+            "$ref" : "#/components/schemas/RapidTestData"
+          },
+          "syphilisRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether a Syphilis rapid test is requested."
+          },
+          "testsPayed" : {
+            "type" : "boolean",
+            "description" : "Indicates whether the patient has paid for the tests."
+          },
+          "ultrasoundData" : {
+            "type" : "string",
+            "description" : "Records the results of the ultrasound examination.",
+            "example" : "Gestational age: 12 weeks 3 days."
+          },
+          "ultrasoundRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether an ultrasound examination is requested."
+          },
+          "urinalysisData" : {
+            "type" : "string",
+            "description" : "Is used to document the urinalysis information.",
+            "example" : "Appearance: Clear, Color: Yellow, pH: 6.5."
+          },
+          "urinalysisRequested" : {
+            "type" : "boolean",
+            "description" : "Specifies whether an urinalysis is requested."
+          }
+        },
+        "description" : "Used to document the initial request which laboratory tests should be performed and to record the corresponding results."
+      },
+      "RelationshipModel" : {
+        "type" : "string",
+        "description" : "Provides details on the patient's relationship model.",
+        "example" : "OPEN",
+        "enum" : [ "NO_COMMITMENT", "MONOGAMOUS", "OPEN" ]
+      },
+      "RiskContact" : {
+        "type" : "object",
+        "properties" : {
+          "numberOfSexualPartnersLast12Months" : {
+            "type" : "integer",
+            "description" : "Indicates the total number of sexual partners the patient has had within the last 12 months.",
+            "format" : "int32",
+            "example" : 2
+          },
+          "partnerRiskFactors" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "description" : "Details any know risk factors associated the patient's sexual partners.",
+            "example" : "['SEX_WORKER','STI_POSITIVE','INJECTED_DRUGS']",
+            "items" : {
+              "$ref" : "#/components/schemas/PartnerRiskFactors"
+            }
+          },
+          "sexualContacts" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "description" : "Represents the gender of the patient's sexual contacts over the specified period.",
+            "example" : "['FEMALE','DIVERSE']",
+            "items" : {
+              "$ref" : "#/components/schemas/Gender"
+            }
+          },
+          "sexualOrientation" : {
+            "$ref" : "#/components/schemas/SexualOrientation"
+          }
+        },
+        "description" : "Details information regarding the patient's contact with potentially risky partners."
+      },
+      "RiskFactors" : {
+        "type" : "object",
+        "properties" : {
+          "otherRiskActivities" : {
+            "type" : "boolean",
+            "description" : "Records if the patient engaged in other risk-related activities."
+          },
+          "otherRiskActivitiesData" : {
+            "type" : "string",
+            "description" : "Provides details on any other risk-related activities the patient has participated."
+          },
+          "riskActivityDateAnalIntercourse" : {
+            "type" : "boolean",
+            "description" : "Records if the patient engaged in anal intercourse that may pose a risk."
+          },
+          "riskActivityDateAnalIntercourseDate" : {
+            "type" : "string",
+            "description" : "Records the most recent date the patient engaged in anal intercourse.",
+            "format" : "date"
+          },
+          "riskActivityDateOralIntercourse" : {
+            "type" : "boolean",
+            "description" : "Records if the patient engaged in oral intercourse that may pose a risk."
+          },
+          "riskActivityDateOralIntercourseDate" : {
+            "type" : "string",
+            "description" : "Records the most recent date the patient engaged in oral intercourse.",
+            "format" : "date"
+          },
+          "riskActivityDateVaginalIntercourse" : {
+            "type" : "boolean",
+            "description" : "Records if the patient engaged in vaginal intercourse that may pose a risk."
+          },
+          "riskActivityDateVaginalIntercourseDate" : {
+            "type" : "string",
+            "description" : "Records the most recent date the patient engaged in vaginal intercourse.",
+            "format" : "date"
+          }
+        },
+        "description" : "Details information about the patient's behaviors or actions that may pose risk factors."
+      },
+      "SafeSexPractice" : {
+        "type" : "string",
+        "description" : "Indicates whether the patient engages in practices considered safe sex.",
+        "enum" : [ "ALWAYS", "FREQUENTLY", "OCCASIONALLY", "NEVER" ]
+      },
+      "Salutation" : {
+        "type" : "string",
+        "enum" : [ "NOT_SPECIFIED", "NEUTRAL", "FEMALE", "MALE" ]
+      },
+      "SelfAssignTaskRequest" : {
+        "required" : [ "taskVersion" ],
+        "type" : "object",
+        "properties" : {
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "taskVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "SexWorkLocation" : {
+        "type" : "string",
+        "description" : "The locations where the patient engages in sex work.",
+        "example" : "['BORDELLO','APARTMENT']",
+        "enum" : [ "BORDELLO", "CLUB", "ESCORT", "APARTMENT", "APPOINTMENT_APARTMENT", "MASSAGE_PARLOR", "TANTRA_PRACTICE", "STREET_PROSTITUTION", "OTHER" ]
+      },
+      "SexWorkMedicalHistory" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MedicalHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "additionalComments" : {
+              "type" : "string",
+              "description" : "An optional field for recording any additional remarks or comments."
+            },
+            "amountAbortions" : {
+              "type" : "integer",
+              "description" : "Specifies the total number of abortions the patient has undergone.",
+              "format" : "int32",
+              "example" : 1
+            },
+            "amountPregnancies" : {
+              "type" : "integer",
+              "description" : "Specifies the total number of pregnancies the patient had.",
+              "format" : "int32",
+              "example" : 3
+            },
+            "contactToClarifyDate" : {
+              "type" : "string",
+              "description" : "Records the date of the contact the patients wished to discuss or clarify.",
+              "format" : "date"
+            },
+            "currentSymptoms" : {
+              "type" : "string",
+              "description" : "Details the symptoms the patient is currently experiencing.",
+              "example" : "Dysuria"
+            },
+            "examinationReason" : {
+              "type" : "string",
+              "description" : "Specifies the reason for the patient's appointment.",
+              "example" : "Lower Abdominal Pain"
+            },
+            "examinations" : {
+              "$ref" : "#/components/schemas/Examination"
+            },
+            "knownOperations" : {
+              "type" : "string",
+              "description" : "A description of known past surgeries or operations.",
+              "example" : "Appendectomy in 2015."
+            },
+            "lastCancerScreeningDate" : {
+              "type" : "string",
+              "description" : "The date of the patient's most recent cancer screening.",
+              "format" : "date"
+            },
+            "lastMenstruationDate" : {
+              "type" : "string",
+              "description" : "The date when the patient last experienced menstruation.",
+              "format" : "date"
+            },
+            "medications" : {
+              "type" : "string",
+              "description" : "A list of current or relevant medications the patient is taking.",
+              "example" : "Lisinopril 10mg daily."
+            },
+            "prevention" : {
+              "$ref" : "#/components/schemas/Prevention"
+            },
+            "previousIllnesses" : {
+              "$ref" : "#/components/schemas/PreviousIllness"
+            },
+            "previouslyPregnant" : {
+              "type" : "boolean",
+              "description" : "Indicates if the patient was previously pregnant."
+            },
+            "relationshipModel" : {
+              "$ref" : "#/components/schemas/RelationshipModel"
+            },
+            "riskContacts" : {
+              "$ref" : "#/components/schemas/RiskContact"
+            },
+            "riskFactors" : {
+              "$ref" : "#/components/schemas/RiskFactors"
+            },
+            "sexWorkRiskContacts" : {
+              "$ref" : "#/components/schemas/SexWorkRiskContact"
+            }
+          }
+        } ]
+      },
+      "SexWorkRiskContact" : {
+        "type" : "object",
+        "properties" : {
+          "sexWorkLocations" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "description" : "The locations where the patient engages in sex work.",
+            "example" : "['BORDELLO','APARTMENT']",
+            "items" : {
+              "$ref" : "#/components/schemas/SexWorkLocation"
+            }
+          },
+          "startInSexWorkDate" : {
+            "type" : "string",
+            "description" : "The date when the patient began working in sex work.",
+            "format" : "date"
+          }
+        }
+      },
+      "SexualOrientation" : {
+        "type" : "string",
+        "description" : "Represents the gender of the patient's sexual contacts over the specified period.",
+        "example" : "BISEXUAL",
+        "enum" : [ "HETEROSEXUAL", "HOMOSEXUAL", "BISEXUAL", "NOT_SPECIFIED" ]
+      },
+      "SortDirection" : {
+        "type" : "string",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "StiConsultationMedicalHistory" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MedicalHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "additionalComments" : {
+              "type" : "string",
+              "description" : "An optional field for recording any additional remarks or comments."
+            },
+            "contactToClarifyDate" : {
+              "type" : "string",
+              "description" : "Records the date of the contact the patients wished to discuss or clarify.",
+              "format" : "date"
+            },
+            "currentSymptoms" : {
+              "type" : "string",
+              "description" : "Details the symptoms the patient is currently experiencing.",
+              "example" : "Dysuria"
+            },
+            "examinationReason" : {
+              "type" : "string",
+              "description" : "Specifies the reason for the patient's appointment.",
+              "example" : "Lower Abdominal Pain"
+            },
+            "examinations" : {
+              "$ref" : "#/components/schemas/Examination"
+            },
+            "prevention" : {
+              "$ref" : "#/components/schemas/Prevention"
+            },
+            "previousIllnesses" : {
+              "$ref" : "#/components/schemas/PreviousIllness"
+            },
+            "relationshipModel" : {
+              "$ref" : "#/components/schemas/RelationshipModel"
+            },
+            "riskContacts" : {
+              "$ref" : "#/components/schemas/RiskContact"
+            },
+            "riskFactors" : {
+              "$ref" : "#/components/schemas/RiskFactors"
+            }
+          }
+        } ]
+      },
+      "StiProtectionProcedure" : {
+        "required" : [ "appointmentHistory", "concern", "createdAt", "id", "isFollowUp", "labStatus", "person", "status" ],
+        "type" : "object",
+        "properties" : {
+          "appointment" : {
+            "$ref" : "#/components/schemas/Appointment"
+          },
+          "appointmentHistory" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AppointmentHistoryEntry"
+            }
+          },
+          "concern" : {
+            "$ref" : "#/components/schemas/Concern"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "isFollowUp" : {
+            "type" : "boolean"
+          },
+          "labStatus" : {
+            "$ref" : "#/components/schemas/LabStatus"
+          },
+          "person" : {
+            "$ref" : "#/components/schemas/Person"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "waitingRoom" : {
+            "$ref" : "#/components/schemas/WaitingRoom"
+          }
+        }
+      },
+      "StiProtectionProcedureOverview" : {
+        "required" : [ "accessCode", "concern", "createdAt", "gender", "id", "labStatus", "status", "yearOfBirth" ],
+        "type" : "object",
+        "properties" : {
+          "accessCode" : {
+            "type" : "string"
+          },
+          "appointment" : {
+            "$ref" : "#/components/schemas/Appointment"
+          },
+          "concern" : {
+            "$ref" : "#/components/schemas/Concern"
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "labStatus" : {
+            "$ref" : "#/components/schemas/LabStatus"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "yearOfBirth" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "StiProtectionProcedurePopulationRequest" : {
+        "required" : [ "numberOfEntitiesToPopulate" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfEntitiesToPopulate" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "StiProtectionProcedurePopulationResponse" : {
+        "required" : [ "count" ],
+        "type" : "object",
+        "properties" : {
+          "count" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "procedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CreateProcedureResponse"
+            }
+          }
+        }
+      },
+      "SystemProgressEntry" : {
+        "required" : [ "createdAt", "modifiedAt", "progressEntryId", "systemProgressEntryType", "triggerType" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "changeDescription" : {
+              "type" : "string"
+            },
+            "keyDocumentType" : {
+              "type" : "string"
+            },
+            "keyDocumentVersion" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "previousFileStateId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "systemProgressEntryType" : {
+              "type" : "string"
+            },
+            "triggerType" : {
+              "$ref" : "#/components/schemas/TriggerType"
+            },
+            "triggeredBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/KeyDocumentAwareProgressEntry"
+        } ]
+      },
+      "Task" : {
+        "required" : [ "businessModule", "createdAt", "isOverdue", "modifiedAt", "procedureId", "summary", "taskId", "taskStatus", "taskType", "version" ],
+        "type" : "object",
+        "properties" : {
+          "assignedById" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "assigneeId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "isOverdue" : {
+            "type" : "boolean"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "taskId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "taskStatus" : {
+            "$ref" : "#/components/schemas/TaskStatus"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "TaskMetric" : {
+        "required" : [ "moreThanTwoOccurrencesCount", "noOccurrencesCount", "oneOccurrenceCount", "taskType", "twoOccurrencesCount" ],
+        "type" : "object",
+        "properties" : {
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "moreThanTwoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "noOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "oneOccurrenceCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "twoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TaskResponse" : {
+        "required" : [ "count", "tasks" ],
+        "type" : "object",
+        "properties" : {
+          "count" : {
+            "type" : "integer",
+            "description" : "total number of tasks for this query",
+            "format" : "int64"
+          },
+          "tasks" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Task"
+            }
+          }
+        }
+      },
+      "TaskStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "TaskType" : {
+        "type" : "string",
+        "enum" : [ "BOOK_APPOINTMENT", "PERFORM_SCHOOL_ENTRY_EXAMINATION", "INSPECTION_PLANNING", "INSPECTION_EXECUTION", "INSPECTION_REPORT", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      },
+      "TestType" : {
+        "type" : "string",
+        "enum" : [ "WESTERN_BLOT", "P24", "PCR", "OTHER" ]
+      },
+      "TextTemplate" : {
+        "required" : [ "content", "context", "externalId", "name" ],
+        "type" : "object",
+        "properties" : {
+          "content" : {
+            "type" : "string"
+          },
+          "context" : {
+            "$ref" : "#/components/schemas/TextTemplateContext"
+          },
+          "externalId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "TextTemplateContext" : {
+        "type" : "string",
+        "enum" : [ "CONSULTATION_REASON", "CONSULTATION_REMARK", "RAPID_TESTS_REMARK", "LABORATORY_TESTS_REMARK", "DIAGNOSIS_RESULT", "DIAGNOSIS_REMARK" ]
+      },
+      "Title" : {
+        "type" : "string",
+        "enum" : [ "DR", "PROF", "PROF_DR" ]
+      },
+      "TriggerType" : {
+        "type" : "string",
+        "enum" : [ "SYSTEM_AUTOMATIC", "EMPLOYEE", "CITIZEN" ]
+      },
+      "UpdateAppointmentRequest" : {
+        "required" : [ "appointmentBookingType", "appointmentStart", "durationInMinutes" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBookingType" : {
+            "$ref" : "#/components/schemas/AppointmentBookingType"
+          },
+          "appointmentStart" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "durationInMinutes" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "UpdateAppointmentTypeRequest" : {
+        "required" : [ "standardDurationInMinutes" ],
+        "type" : "object",
+        "properties" : {
+          "standardDurationInMinutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "UpdatePersonDetailsRequest" : {
+        "required" : [ "gender", "yearOfBirth" ],
+        "type" : "object",
+        "properties" : {
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "inGermanySince" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "yearOfBirth" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "User" : {
+        "required" : [ "enabled", "firstName", "lastName", "userId", "username" ],
+        "type" : "object",
+        "properties" : {
+          "email" : {
+            "type" : "string",
+            "description" : "The email address of a user.",
+            "example" : "example@mail.de"
+          },
+          "enabled" : {
+            "type" : "boolean",
+            "description" : "True, if the user can login",
+            "example" : false
+          },
+          "externalChatUsername" : {
+            "type" : "string",
+            "description" : "The chat username of the gematik TI-Messenger (matrix chat).",
+            "example" : "@username:server"
+          },
+          "firstName" : {
+            "type" : "string",
+            "description" : "The given name(s) of a user.",
+            "example" : "John"
+          },
+          "lastName" : {
+            "type" : "string",
+            "description" : "The last name of a user.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "type" : "string",
+            "description" : "The phone number of a user.",
+            "example" : "+491234567890"
+          },
+          "userId" : {
+            "type" : "string",
+            "description" : "The Id of the user.",
+            "format" : "uuid",
+            "example" : "UUID_4"
+          },
+          "username" : {
+            "type" : "string",
+            "description" : "The username which is displayed in the application and can be used for the login.",
+            "example" : "testuser"
+          }
+        }
+      },
+      "Vaccination" : {
+        "type" : "string",
+        "description" : "Provides information on vaccinations the patient has received.",
+        "example" : "['HEPATITIS_A', 'HPV']",
+        "enum" : [ "HEPATITIS_A", "HEPATITIS_B", "HPV" ]
+      },
+      "ValidateAppointmentBlockGroupResponse" : {
+        "required" : [ "userIdsWithEventConflicts", "userIdsWithoutEventConflicts" ],
+        "type" : "object",
+        "properties" : {
+          "userIdsWithEventConflicts" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "userIdsWithoutEventConflicts" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "VerifyAnonymousUserPinRequest" : {
+        "required" : [ "pin" ],
+        "type" : "object",
+        "properties" : {
+          "pin" : {
+            "pattern" : "\\d{6}",
+            "type" : "string",
+            "description" : "The PIN for verification",
+            "example" : "654321"
+          }
+        }
+      },
+      "WaitingRoom" : {
+        "type" : "object",
+        "properties" : {
+          "info" : {
+            "maxLength" : 60,
+            "minLength" : 0,
+            "type" : "string",
+            "description" : "Optional field for additional information, such as room numbers or internal ticket system identifiers.",
+            "example" : "Waits in Room 3"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/WaitingStatus"
+          }
+        }
+      },
+      "WaitingRoomProcedure" : {
+        "required" : [ "gender", "modifiedAt", "procedureId", "waitingRoom", "yearOfBirth" ],
+        "type" : "object",
+        "properties" : {
+          "accessCode" : {
+            "type" : "string"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "waitingRoom" : {
+            "$ref" : "#/components/schemas/WaitingRoom"
+          },
+          "yearOfBirth" : {
+            "type" : "object",
+            "properties" : {
+              "leap" : {
+                "type" : "boolean"
+              },
+              "value" : {
+                "type" : "integer",
+                "format" : "int32"
+              }
+            }
+          }
+        }
+      },
+      "WaitingRoomSortKey" : {
+        "type" : "string",
+        "enum" : [ "ID", "YEAR_OF_BIRTH", "GENDER", "STATUS", "INFO", "MODIFIED_AT" ]
+      },
+      "WaitingStatus" : {
+        "type" : "string",
+        "description" : "Indicates the current status of the procedure waiting in the room.",
+        "example" : "IN_CONSULTATION",
+        "enum" : [ "WAITING_FOR_CONSULTATION", "WAITING_FOR_RESULTS_REVIEW", "WAITING_FOR_TESTS", "IN_CONSULTATION", "IN_TESTING", "CANCELLED", "DONE" ]
+      }
+    }
+  }
+}
diff --git a/backend/sti-protection/openApi.yaml b/backend/sti-protection/openApi.yaml
deleted file mode 100644
index 1640dd223..000000000
--- a/backend/sti-protection/openApi.yaml
+++ /dev/null
@@ -1,6447 +0,0 @@
-# Copyright 2025 cronn GmbH
-# SPDX-License-Identifier: AGPL-3.0-only
-
-openapi: 3.0.1
-info:
-  description: This is the API for the sti-protection module
-  title: STI Protection Module API
-  version: "0.1"
-servers:
-- url: http://localhost:8095
-paths:
-  /appointment-blocks/appointment-block-groups:
-    get:
-      operationId: getAppointmentBlockGroups
-      parameters:
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/AppointmentBlockSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAppointmentBlockGroupsResponse"
-          description: OK
-      summary: Get all appointment block groups.
-      tags:
-      - AppointmentBlock
-  /appointment-blocks/daily-appointment-block-groups:
-    post:
-      operationId: createDailyAppointmentBlocksForGroup
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CreateAppointmentBlockGroupResponse"
-          description: OK
-      summary: Create appointment group with blocks for week days.
-      tags:
-      - AppointmentBlock
-  /appointment-blocks/daily-appointment-block-groups/validate:
-    post:
-      operationId: validateDailyAppointmentBlocksForGroup
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ValidateAppointmentBlockGroupResponse"
-          description: OK
-      summary: Create appointment group with blocks for week days.
-      tags:
-      - AppointmentBlock
-  /appointment-blocks/free-appointments:
-    get:
-      operationId: getFreeAppointments
-      parameters:
-      - in: query
-        name: appointmentType
-        required: true
-        schema:
-          $ref: "#/components/schemas/AppointmentType"
-      - in: query
-        name: earliestDate
-        required: false
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: physicianId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetFreeAppointmentsResponse"
-          description: OK
-      summary: Get free appointments for an appointment type.
-      tags:
-      - AppointmentBlock
-  /appointment-types:
-    get:
-      operationId: getAppointmentTypes
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAppointmentTypesResponse"
-          description: OK
-      summary: Gets all Appointment Types
-      tags:
-      - AppointmentType
-  /appointment-types/{id}:
-    get:
-      operationId: getOneAppointmentType
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AppointmentTypeConfig"
-          description: OK
-      summary: Gets one Appointment Type by ID
-      tags:
-      - AppointmentType
-    put:
-      operationId: updateAppointmentType
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateAppointmentTypeRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AppointmentTypeConfig"
-          description: OK
-      summary: Modifies an existing Appointment Type
-      tags:
-      - AppointmentType
-  /approval-requests/{approvalRequestId}:
-    get:
-      operationId: getApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      tags:
-      - ApprovalRequest
-  /approval-requests/{approvalRequestId}/decision:
-    put:
-      operationId: decideApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/Decision"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - ApprovalRequest
-  /archiving/config:
-    get:
-      operationId: getArchivingConfiguration
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetArchivingConfigurationResponse"
-          description: OK
-      summary: Get archiving configuration
-      tags:
-      - Archiving
-  /archiving/procedures:
-    get:
-      operationId: getArchivableProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `closedAtDay` is set, only procedures are returned which were closed at that date
-          - If not submitted, no filtering takes place
-        in: query
-        name: closedAtDay
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If `defaultArchivingRelevance` is submitted, only procedures are returned which have one of the submitted default archiving relevances.
-          - If not submitted, no filtering takes place
-        in: query
-        name: defaultArchivingRelevance
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ArchivingRelevance"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CLOSED_AT`: Sorting by closedAt attribute
-          - `PROCEDURE_TYPE`: Sorting by procedureType attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetArchivableProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetArchivableProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetArchivableProceduresResponse"
-          description: OK
-      summary: Get archivable procedures
-      tags:
-      - Archiving
-  /archiving/procedures/bulk-update-archiving-relevance:
-    post:
-      operationId: bulkUpdateProceduresArchivingRelevance
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/BulkUpdateProceduresArchivingRelevanceRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/BulkUpdateProceduresArchivingRelevanceResponse"
-          description: OK
-      summary: Bulk update procedures archiving relevance
-      tags:
-      - Archiving
-  /archiving/relevant-procedures:
-    get:
-      operationId: getRelevantArchivableProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `closedAtDay` is set, only procedures are returned which were closed at that date
-          - If not submitted, no filtering takes place
-        in: query
-        name: closedAtDay
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If `exported` is true, only procedures are returned which have already been exported.
-          - If `exported` is false, only procedures are returned which have not been exported, yet.
-          - If not submitted, no filtering takes place
-        in: query
-        name: exported
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          The following sorting options are available:
-          - `CLOSED_AT`: Sorting by closedAt attribute
-          - `EXPORTED_AT`: Sorting by exportedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetRelevantArchivableProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetRelevantArchivableProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRelevantArchivableProceduresResponse"
-          description: OK
-      summary: Get relevant archivable procedures
-      tags:
-      - Archiving
-  /archiving/relevant-procedures/export:
-    post:
-      operationId: exportRelevantProcedures
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ExportArchivingRelevantProceduresRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - Archiving
-  /files/{fileId}:
-    delete:
-      operationId: deleteFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Soft deletes the specified file
-      tags:
-      - File
-    get:
-      operationId: getFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/Image"
-                - $ref: "#/components/schemas/Mail"
-                - $ref: "#/components/schemas/Pdf"
-          description: OK
-      summary: Retrieves the meta data of the specified file
-      tags:
-      - File
-  /files/{fileId}/deletion-request:
-    post:
-      operationId: requestFileDeletion
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateApprovalRequestRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      summary: Request deletion of a file entry
-      tags:
-      - File
-  /files/{fileId}/download:
-    get:
-      operationId: downloadFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - File
-  /files/{fileId}/meta-data:
-    put:
-      operationId: updateFileMetaData
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              oneOf:
-              - $ref: "#/components/schemas/ImageMetaData"
-              - $ref: "#/components/schemas/MailMetaData"
-              - $ref: "#/components/schemas/PdfMetaData"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/Image"
-                - $ref: "#/components/schemas/Mail"
-                - $ref: "#/components/schemas/Pdf"
-          description: Updated file
-      summary: Updates the meta data of the specified file
-      tags:
-      - File
-  /files/{fileId}/meta-data/history:
-    get:
-      operationId: getMetaDataHistory
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetMetaDataHistoryResponse"
-          description: OK
-      tags:
-      - File
-  /gdpr-validation-tasks:
-    get:
-      operationId: getAllGdprValidationTasks
-      parameters:
-      - in: query
-        name: status
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprValidationTaskSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAllValidationTasksResponse"
-          description: OK
-      summary: Get all GDPR validation tasks
-      tags:
-      - GdprValidationTask
-    post:
-      operationId: addGdprValidationTask
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddGdprValidationTaskRequest"
-        required: true
-      responses:
-        "200":
-          description: Add a GDPR validation task
-      summary: Add a GDPR validation task
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/notification-banner:
-    get:
-      operationId: getGdprNotificationBanner
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprNotificationBannerResponse"
-          description: OK
-      summary: Get data for GDPR notification banner
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}:
-    delete:
-      operationId: deleteGdprValidationTaskAndDownloadPackages
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/DeleteDownloadPackagesRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Delete the GDPR validation task with gdprProcedureId and GDPR download
-        packages with ids from request
-      tags:
-      - GdprValidationTask
-    get:
-      operationId: getGdprValidationTask
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprValidationTaskResponse"
-          description: OK
-      summary: Get Gdpr Validation Task by Gdpr Procedure Id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures:
-    get:
-      operationId: getGdprValidationTaskDetails
-      parameters:
-      - description: The Id of the GDPR procedure.
-        in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprValidationTaskDetailsResponse"
-          description: OK
-      summary: Get a GDPR validation task by id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}:
-    delete:
-      operationId: deleteBusinessProcedure
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: businessProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Delete the businessProcedure with businessProcedureId for validationTask
-        with gdprProcedureId with type right of erasure
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}/downloadPackage:
-    post:
-      operationId: addDownloadPackage
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: businessProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Creates a downloadPackage for validationTask with gdprProcedureId with
-        the data from the procedure with businessProcedureId
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/close:
-    post:
-      operationId: closeGdprValidationTask
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Close a GDPR validation task
-      summary: Close a GDPR validation task
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/download-packages:
-    get:
-      operationId: getGdprDownloadPackagesInfo
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprDownloadPackagesInfoResponse"
-          description: OK
-      summary: Get approved Gdpr Download Packages by Gdpr Procedure Id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}:
-    get:
-      operationId: getGdprDownloadPackage
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: downloadId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get Gdpr Download Package by the gdprProcedureId and its downloadId
-      tags:
-      - GdprValidationTask
-  /inbox-procedures:
-    get:
-      description: |
-        Get all inbox procedures with filter, sort, and pagination options
-      operationId: getInboxProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `inboxProcedureType` is submitted, only inbox procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place.
-        in: query
-        name: inboxProcedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If true, inbox procedures which have no type are returned in addition to the types specified by 'inboxProcedureType'.
-          - If false or not submitted, inbox procedures which have no type are not returned.
-        in: query
-        name: includeUntyped
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          Filter logic:
-          - If `inboxProcedureStatus` is submitted, only inbox procedures are returned which have one of the submitted statuses.
-          - If not submitted, no filtering takes place.
-        in: query
-        name: inboxProcedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/InboxProcedureStatus"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CREATED_AT`: Sorting by createdAt attribute
-          - `MODIFIED_AT`: Sorting by modifiedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetInboxProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetInboxProceduresSortOrder"
-      - description: Number of the requested page
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      - description: Amount of requested inbox procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 25
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInboxProceduresResponse"
-          description: OK
-      summary: Get inbox procedures
-      tags:
-      - InboxProcedure
-    post:
-      description: |-
-        Creates an inbox procedure with an optional file upload.
-
-               Permitted file formats:
-                - Image formats: jpeg, png
-                - PDF formats: pdf/a
-                - Mail formats: eml
-      operationId: addInboxProcedure
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                createInboxProcedureRequest:
-                  $ref: "#/components/schemas/CreateInboxProcedureRequest"
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-              required:
-              - createInboxProcedureRequest
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InboxProcedure"
-          description: OK
-      summary: Add inbox procedure
-      tags:
-      - InboxProcedure
-  /inbox-procedures/{inboxProcedureId}:
-    get:
-      operationId: getInboxProcedure
-      parameters:
-      - in: path
-        name: inboxProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInboxProcedureResponse"
-          description: OK
-      summary: Get inbox procedure with detailed information
-      tags:
-      - InboxProcedure
-  /inbox-procedures/{inboxProcedureId}/inbox-procedure-status:
-    put:
-      operationId: updateInboxProcedureStatus
-      parameters:
-      - in: path
-        name: inboxProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InboxProcedureStatus"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InboxProcedure"
-          description: OK
-      summary: Update status of inbox procedure
-      tags:
-      - InboxProcedure
-  /procedure-metrics:
-    get:
-      operationId: getProcedureMetrics
-      parameters:
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureMetricsResponse"
-          description: the metrics of procedures
-      summary: Get procedure metrics for procedures created in the given time range
-      tags:
-      - Procedure
-  /procedures:
-    get:
-      description: |
-        GET operation for retrieving basic information of procedures for the procedure overview.
-      operationId: getProcedures
-      parameters:
-      - description: |
-          Only procedures are returned where the assigneeId of at least one task equals the `assignedToId`.
-          If not submitted, no filtering takes place.
-        in: query
-        name: assignedToId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: |
-          Filter logic:
-          - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CREATED_AT`: Sorting by createdAt attribute
-          - `MODIFIED_AT`: Sorting by modifiedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for user
-      tags:
-      - Procedure
-  /procedures/check-file-state-usage:
-    post:
-      operationId: checkFileStateUsage
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CheckFileStateUsageRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CheckFileStateUsageResponse"
-          description: OK
-      summary: Identify which file state IDs are still used by active procedures.
-      tags:
-      - Procedure
-  /procedures/recent:
-    get:
-      operationId: getRecentProcedures
-      parameters:
-      - in: query
-        name: userId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRecentProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for user
-      tags:
-      - Procedure
-  /procedures/recent/self:
-    get:
-      operationId: getSelfRecentProcedures
-      parameters:
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRecentProceduresResponse"
-          description: the current users recent procedures
-      summary: Get recent procedures for the current user
-      tags:
-      - Procedure
-  /procedures/search:
-    get:
-      operationId: searchProcedures
-      parameters:
-      - in: query
-        name: query
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresResponse"
-          description: OK
-      tags:
-      - Procedure
-  /procedures/{id}:
-    get:
-      operationId: getDetailedProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetDetailedProcedureResponse"
-          description: a single procedure with details
-      summary: Get a single procedure with details
-      tags:
-      - Procedure
-  /procedures/{id}/approval-requests:
-    get:
-      operationId: getApprovalRequests
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureApprovalRequestsResponse"
-          description: OK
-      summary: Get all approval requests related to this procedure
-      tags:
-      - Procedure
-  /procedures/{id}/files:
-    get:
-      description: |
-        This returns all relevant (highest version per keydocument type and non-deleted) files sorted by descending creation date.
-        That is:
-         * if an progress entry has a keydocument type set, then its files are only returned if it also has the highest keydocument version of the respective key document type.
-         * if an progress entry does not have a keydocument type, then its files are always returned.
-      operationId: getProcedureFileDetails
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureFileDetailsResponse"
-          description: OK
-      summary: Get relevant procedure files
-      tags:
-      - Procedure
-  /procedures/{procedureId}/progress-entries:
-    get:
-      operationId: getProgressEntries
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - description: Filter on progressEntryType
-        in: query
-        name: progressEntryType
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-          uniqueItems: true
-      - description: Filter on child class of progressEntry
-        in: query
-        name: progressEntryClass
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProgressEntryClass"
-          uniqueItems: true
-      - description: |
-          If `initiatedBy` is set with a `userId` then the following is returned:
-          * Only progressEntries with `createdBy`=`userId` in case `ManualProgressEntry` or `ProcessedInboxProgressEntry`
-          * Only progressEntries with `triggeredBy`=`userId` in case `SystemProgressEntry`
-        in: query
-        name: initiatedBy
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      - description: |
-          Filter on triggerType.
-          If this is set, only SystemProgressEntries are returned since only SystemProgressEntries have this attribute.
-        in: query
-        name: triggerType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TriggerType"
-          uniqueItems: true
-      - description: 'Sorting on either modifiedAt or createdAt '
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProgressEntrySortBy"
-      - description: Sorting order. Possible options  "ASC" for ascending and "DESC"
-          for descending.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProgressEntrySortOrder"
-      - description: Maximum number of elements to return
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Index of page to be returned
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProgressEntriesResponse"
-          description: OK
-      summary: Get list of procedure's progress entries
-      tags:
-      - ProgressEntry
-    post:
-      description: |-
-        Creates a manual progress entry with an optional file upload.
-
-               Permitted file formats:
-                - Image formats: jpeg, png
-                - PDF formats: pdf/a
-                - Mail formats: eml
-      operationId: addProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                createManualProgressEntryRequest:
-                  $ref: "#/components/schemas/CreateManualProgressEntryRequest"
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-              required:
-              - createManualProgressEntryRequest
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ManualProgressEntry"
-          description: OK
-      summary: Create a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}:
-    delete:
-      operationId: removeProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Remove a manual progress entry
-      tags:
-      - ProgressEntry
-    get:
-      operationId: getProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProgressEntryResponse"
-          description: OK
-      summary: Get a progress entry
-      tags:
-      - ProgressEntry
-    patch:
-      operationId: patchProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchManualProgressEntryRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ManualProgressEntry"
-          description: OK
-      summary: Modify a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}/deletion-request:
-    post:
-      operationId: requestProgressEntryDeletion
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateApprovalRequestRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      summary: Request deletion of a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}/history:
-    get:
-      operationId: getManualProgressEntryHistory
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetManualProgressEntryHistoryResponse"
-          description: OK
-      summary: Get the history of a manual progress entry
-      tags:
-      - ProgressEntry
-  /sti-procedures:
-    get:
-      operationId: getStiProcedures
-      parameters:
-      - in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetStiProtectionProceduresSortBy"
-      - in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetStiProtectionProceduresSortOrder"
-      - description: The page to be returned
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      - description: The number of items to be returned
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 25
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresOverviewResponse"
-          description: OK
-      summary: Get sorted and paginated STI procedures.
-      tags:
-      - StiProtectionProcedure
-    post:
-      operationId: createProcedure
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateProcedureRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CreateProcedureResponse"
-          description: OK
-      tags:
-      - StiProtectionProcedure
-  /sti-procedures/medical-history-document/consultation-de:
-    get:
-      operationId: getConsultationDEDocument
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get the printable document for sti hiv consultation in DE locale.
-      tags:
-      - MedicalHistoryDocument
-  /sti-procedures/medical-history-document/consultation-en:
-    get:
-      operationId: getConsultationENDocument
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get the printable document for sti hiv consultation in EN locale.
-      tags:
-      - MedicalHistoryDocument
-  /sti-procedures/medical-history-document/sexwork-de:
-    get:
-      operationId: getSexworkDEDocument
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get the printable document for sexwork in DE locale.
-      tags:
-      - MedicalHistoryDocument
-  /sti-procedures/medical-history-document/sexwork-en:
-    get:
-      operationId: getSexworkENDocument
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get the printable document for sexwork in EN locale.
-      tags:
-      - MedicalHistoryDocument
-  /sti-procedures/text-templates:
-    get:
-      operationId: getTextTemplates
-      parameters:
-      - description: |
-          Filter logic:
-          - If 'context' is submitted, only text templates are returned which belong to one of the provided contexts.
-          - If no 'context' is submitted, no filtering takes place.
-        in: query
-        name: context
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TextTemplateContext"
-          uniqueItems: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTextTemplatesResponse"
-          description: OK
-      summary: Get a list of text templates
-      tags:
-      - TextTemplate
-    post:
-      operationId: createTextTemplate
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateTextTemplateRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CreateTextTemplateResponse"
-          description: OK
-      summary: Create a new text template
-      tags:
-      - TextTemplate
-  /sti-procedures/text-templates/{textTemplateId}:
-    delete:
-      operationId: deleteTextTemplate
-      parameters:
-      - in: path
-        name: textTemplateId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Delete an existing text template
-      tags:
-      - TextTemplate
-    get:
-      operationId: getTextTemplate
-      parameters:
-      - in: path
-        name: textTemplateId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TextTemplate"
-          description: OK
-      summary: Get an existing text template
-      tags:
-      - TextTemplate
-    put:
-      operationId: updateTextTemplate
-      parameters:
-      - in: path
-        name: textTemplateId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TextTemplate"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Update an existing text template
-      tags:
-      - TextTemplate
-  /sti-procedures/waiting-room-procedures:
-    get:
-      operationId: getWaitingRoomProcedures
-      parameters:
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/WaitingRoomSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetWaitingRoomProceduresResponse"
-          description: OK
-      summary: Get waiting rooms.
-      tags:
-      - WaitingRoom
-  /sti-procedures/{id}:
-    delete:
-      operationId: deleteProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      tags:
-      - StiProtectionProcedure
-    get:
-      operationId: getStiProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/StiProtectionProcedure"
-          description: OK
-      summary: Get STI protection procedure by id.
-      tags:
-      - StiProtectionProcedure
-  /sti-procedures/{id}/anon-ident-document:
-    get:
-      operationId: getAnonymousIdentificationDocument
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/pdf:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get an anonymous identification document
-      tags:
-      - StiProtectionProcedure
-  /sti-procedures/{id}/appointment:
-    post:
-      operationId: createAppointment
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateAppointmentRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Create a new appointment to an STI procedure.
-      tags:
-      - StiProtectionProcedure
-    put:
-      operationId: updateAppointment
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateAppointmentRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Update current appointment of an STI procedure.
-      tags:
-      - StiProtectionProcedure
-  /sti-procedures/{id}/appointment/cancel:
-    post:
-      operationId: cancelAppointment
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Cancel current appointment of an STI procedure.
-      tags:
-      - StiProtectionProcedure
-  /sti-procedures/{id}/close:
-    put:
-      operationId: closeProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Close an STI procedure.
-      tags:
-      - StiProtectionProcedure
-  /sti-procedures/{id}/person:
-    put:
-      operationId: updatePersonDetails
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdatePersonDetailsRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Update the person details of an STI procedure.
-      tags:
-      - StiProtectionProcedure
-  /sti-procedures/{id}/reopen:
-    put:
-      operationId: reopenProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Re-open an STI procedure.
-      tags:
-      - StiProtectionProcedure
-  /sti-procedures/{id}/verify-pin:
-    post:
-      operationId: verifyAnonymousUserPin
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/VerifyAnonymousUserPinRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Verify anonymous user PIN for a given STI procedure.
-      tags:
-      - StiProtectionProcedure
-  /sti-procedures/{procedureId}/consultation:
-    get:
-      operationId: getConsultation
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Consultation"
-          description: OK
-      summary: Get consultation documentation.
-      tags:
-      - Consultation
-    put:
-      operationId: updateConsultation
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/Consultation"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Upsert consultation documentation for a STI protection procedure.
-      tags:
-      - Consultation
-  /sti-procedures/{procedureId}/diagnosis:
-    get:
-      operationId: getDiagnosis
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Diagnosis"
-          description: OK
-      summary: Get diagnosis.
-      tags:
-      - Diagnosis
-    put:
-      operationId: updateDiagnosis
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/Diagnosis"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Update or insert diagnosis data of STI protection procedure.
-      tags:
-      - Diagnosis
-  /sti-procedures/{procedureId}/examination/laboratory-test:
-    get:
-      operationId: getLaboratoryTestExamination
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/LaboratoryTestExamination"
-          description: OK
-      summary: Get all external laboratory tests within an examination.
-      tags:
-      - Examination
-    put:
-      operationId: updateLaboratoryTestExamination
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/LaboratoryTestExamination"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Update all external laboratory tests.
-      tags:
-      - Examination
-  /sti-procedures/{procedureId}/examination/rapid-test:
-    get:
-      operationId: getRapidTestExamination
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/RapidTestExamination"
-          description: OK
-      summary: Get rapid test examination.
-      tags:
-      - Examination
-    put:
-      operationId: updateRapidTestExamination
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/RapidTestExamination"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Update rapid test examination of STI protection procedure.
-      tags:
-      - Examination
-  /sti-procedures/{procedureId}/medical-history:
-    get:
-      operationId: getMedicalHistory
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/SexWorkMedicalHistory"
-                - $ref: "#/components/schemas/StiConsultationMedicalHistory"
-          description: OK
-      summary: Get medical history.
-      tags:
-      - MedicalHistory
-    put:
-      operationId: updateMedicalHistory
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateMedicalHistoryRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Update or insert medical history of STI protection procedure.
-      tags:
-      - MedicalHistory
-  /sti-procedures/{procedureId}/waiting-room:
-    put:
-      operationId: updateWaitingRoomDetails
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/WaitingRoom"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Update waiting room details for a procedure.
-      tags:
-      - WaitingRoom
-  /task-metrics:
-    get:
-      operationId: getTaskMetrics
-      parameters:
-      - in: query
-        name: procedureType
-        required: true
-        schema:
-          $ref: "#/components/schemas/ProcedureType"
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTaskMetricsResponse"
-          description: the metrics of a specific procedure type
-      summary: Get tasks metrics for a procedure type of a business module for procedures
-        created in the given time range
-      tags:
-      - Task
-  /tasks:
-    get:
-      operationId: getTasks
-      parameters:
-      - in: query
-        name: assigneeId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: assignedById
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      - in: query
-        name: taskTypes
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskType"
-          uniqueItems: true
-      - in: query
-        name: taskStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskStatus"
-          uniqueItems: true
-      - in: query
-        name: sortKey
-        required: true
-        schema:
-          $ref: "#/components/schemas/GetTasksSortBy"
-      - in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetTasksSortOrder"
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TaskResponse"
-          description: tasks
-      summary: Get tasks
-      tags:
-      - Task
-  /tasks/dashboard:
-    get:
-      operationId: getTasksForDashboard
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TaskResponse"
-          description: tasks
-      summary: Get tasks for the dashboard
-      tags:
-      - Task
-  /tasks/team-view:
-    get:
-      description: Returns all _open_ tasks per module group member.
-      operationId: getTasksByAssignee
-      parameters:
-      - description: |
-          If provided, `assignee` must be member of the module group.
-          If not provided, all tasks for all members of the module group are returned.
-        in: query
-        name: assigneeId
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTaskByUserResponse"
-          description: OK
-      tags:
-      - Task
-  /tasks/{taskId}/assignment:
-    put:
-      operationId: assignTask
-      parameters:
-      - in: path
-        name: taskId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AssignTaskRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Task"
-          description: OK
-      tags:
-      - Task
-  /tasks/{taskId}/self-assignment:
-    put:
-      operationId: selfAssignTask
-      parameters:
-      - in: path
-        name: taskId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SelfAssignTaskRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Task"
-          description: OK
-      tags:
-      - Task
-  /test-helper/archiving-job:
-    post:
-      operationId: runArchivingJob
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/audit-log-storage:
-    delete:
-      operationId: clearAuditLogStorageDirectory
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/notify/overdue-procedures:
-    post:
-      operationId: notifyOfOverdueProcedures
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population/procedures:
-    post:
-      operationId: populateStiProtectionProcedures
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/StiProtectionProcedurePopulationRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/StiProtectionProcedurePopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-components:
-  schemas:
-    AbstractFile:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFileReference"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          createdAt:
-            type: string
-            format: date-time
-          createdBy:
-            type: string
-            format: uuid
-          fileName:
-            type: string
-          fileSizeBytes:
-            type: integer
-            format: int32
-          fileType:
-            $ref: "#/components/schemas/FileType"
-          locked:
-            type: boolean
-          modifiedAt:
-            type: string
-            format: date-time
-      - $ref: "#/components/schemas/ApprovalRequestEntity"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    AbstractFileReference:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        deletable:
-          type: boolean
-        deleted:
-          type: boolean
-        fileId:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - deletable
-      - deleted
-      - fileId
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    AddGdprValidationTaskRequest:
-      type: object
-      properties:
-        gdprProcedureId:
-          type: string
-          format: uuid
-        startedAt:
-          type: string
-          format: date-time
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - gdprProcedureId
-      - startedAt
-      - type
-    Address:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    Appointment:
-      type: object
-      description: Appointment of a procedure.
-      properties:
-        end:
-          type: string
-          format: date-time
-        start:
-          type: string
-          format: date-time
-      required:
-      - end
-      - start
-    AppointmentBlockSortKey:
-      type: string
-      enum:
-      - START
-      - END
-    AppointmentBookingType:
-      type: string
-      enum:
-      - USER_DEFINED
-      - APPOINTMENT_BLOCK
-    AppointmentHistoryEntry:
-      type: object
-      properties:
-        appointmentStart:
-          type: string
-          format: date-time
-        appointmentStatus:
-          $ref: "#/components/schemas/AppointmentStatus"
-        appointmentType:
-          $ref: "#/components/schemas/AppointmentType"
-      required:
-      - appointmentStart
-      - appointmentStatus
-      - appointmentType
-    AppointmentLocation:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-      required:
-      - id
-      - name
-    AppointmentStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-      - CANCELLED
-    AppointmentType:
-      type: string
-      enum:
-      - CONSULTATION
-      - VACCINATION
-      - REGULAR_EXAMINATION
-      - CAN_CHILD
-      - ENTRY_LEVEL
-      - SPECIAL_NEEDS
-      - PROOF_SUBMISSION
-      - HIV_STI_CONSULTATION
-      - SEX_WORK
-      - RESULTS_REVIEW
-      - OFFICIAL_MEDICAL_SERVICE
-    AppointmentTypeConfig:
-      type: object
-      properties:
-        appointmentTypeDto:
-          $ref: "#/components/schemas/AppointmentType"
-        id:
-          type: string
-          format: uuid
-        standardDurationInMinutes:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - appointmentTypeDto
-      - id
-      - standardDurationInMinutes
-    ApprovalRequest:
-      type: object
-      properties:
-        approvalRequestId:
-          type: string
-          format: uuid
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-          format: uuid
-        decidedAt:
-          type: string
-          format: date-time
-        decidedBy:
-          type: string
-          format: uuid
-        decision:
-          $ref: "#/components/schemas/Decision"
-        entity:
-          oneOf:
-          - $ref: "#/components/schemas/ManualProgressEntry"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        operation:
-          $ref: "#/components/schemas/Operation"
-        reason:
-          type: string
-        status:
-          $ref: "#/components/schemas/ApprovalRequestStatus"
-      required:
-      - approvalRequestId
-      - createdAt
-      - createdBy
-      - operation
-      - reason
-      - status
-    ApprovalRequestEntity:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    ApprovalRequestStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    ArchivingDetails:
-      type: object
-      properties:
-        archivingPeriodYears:
-          type: integer
-          format: int32
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-      required:
-      - archivingPeriodYears
-      - archivingRelevance
-    ArchivingRelevance:
-      type: string
-      enum:
-      - DEFAULT
-      - RELEVANT
-      - IRRELEVANT
-    ArchivingRelevanceSettings:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        defaultArchivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-      required:
-      - archivingRelevance
-      - defaultArchivingRelevance
-    AssignTaskRequest:
-      type: object
-      properties:
-        assignee:
-          type: string
-          format: uuid
-        dueAt:
-          type: string
-          format: date-time
-        taskVersion:
-          type: integer
-          format: int64
-      required:
-      - assignee
-      - taskVersion
-    BulkUpdateProceduresArchivingRelevanceRequest:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        procedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 200
-          minItems: 1
-          uniqueItems: true
-      required:
-      - archivingRelevance
-      - procedures
-    BulkUpdateProceduresArchivingRelevanceResponse:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        failedProcedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-        updatedProcedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      required:
-      - archivingRelevance
-      - failedProcedures
-      - updatedProcedures
-    BusinessModule:
-      type: string
-      enum:
-      - INSPECTION
-      - SCHOOL_ENTRY
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY
-      - DENTAL
-      - OFFICIAL_MEDICAL_SERVICE
-    BusinessProcedureInclusionStatus:
-      type: string
-      enum:
-      - INCLUDED
-      - UNDECIDED
-    BusinessProcedureWithInclusionStatus:
-      type: object
-      properties:
-        businessProcedure:
-          $ref: "#/components/schemas/Procedure"
-        inclusionStatus:
-          $ref: "#/components/schemas/BusinessProcedureInclusionStatus"
-      required:
-      - businessProcedure
-      - inclusionStatus
-    CheckFileStateUsageRequest:
-      type: object
-      properties:
-        fileStatesIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-      required:
-      - fileStatesIds
-    CheckFileStateUsageResponse:
-      type: object
-      properties:
-        inUse:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - inUse
-    Concern:
-      type: string
-      enum:
-      - HIV_STI_CONSULTATION
-      - SEX_WORK
-    Consultation:
-      type: object
-      description: "Documents detailed patient information, including anamnesis review,\
-        \ medical history, and referrals."
-      properties:
-        general:
-          $ref: "#/components/schemas/ConsultationGeneralSection"
-        pregnancy:
-          $ref: "#/components/schemas/ConsultationPregnancySection"
-    ConsultationGeneralSection:
-      type: object
-      description: "General patient details, including language proficiency, gender\
-        \ information and health insurance data."
-      properties:
-        drugUse:
-          type: string
-          description: Records the patient's drug use or consumption.
-          example: The patient reports occasional consumption of alcohol.
-        furtherGenderInfo:
-          type: string
-          description: Additional gender-related information.
-          example: The patient identifies as non-binary and prefers the pronouns they/them.
-        hasGermanHealthInsurance:
-          type: boolean
-          description: Indicates whether the patient has German health insurance.
-        hasHealthInsurance:
-          type: boolean
-          description: Indicates whether the patient has any form of health insurance.
-        hasInsecureResidence:
-          type: boolean
-          description: Indicates whether the patient's residency status is insecure.
-        hasSufficientGermanLanguageSkills:
-          type: boolean
-          description: Indicates whether the patient has sufficient German language
-            skills.
-        hasSymptoms:
-          type: boolean
-          description: Indicates whether the patient has any symptoms.
-        isIlliterate:
-          type: boolean
-          description: Indicates whether the patient is illiterate.
-        mainReason:
-          type: string
-          description: Primary reason for the patient's consultation.
-          example: The patient is seeking a routine check-up to address mild abdominal
-            discomfort.
-        notes:
-          type: string
-          description: Optional field for additional remarks or comments during the
-            consultation.
-          example: The patient was advised to follow up in two weeks for further monitoring
-            of symptoms.
-        otherKnownLanguages:
-          type: string
-          description: Other languages the patient can speak or understand.
-          example: Spanish and French.
-        referral:
-          type: string
-          description: Details any referral made to another department or specialist.
-          example: The patient has been referred to the gynecology department.
-        symptoms:
-          type: string
-          description: Details the symptoms reported by the patient.
-          example: The patient reports persistent headaches and dizziness over the
-            past week.
-    ConsultationPregnancySection:
-      type: object
-      description: "Pregnancy-related details, including the number of previous pregnancies\
-        \ and abortions."
-      properties:
-        hasPregnancyRelatedInfo:
-          type: boolean
-          description: Indicates whether pregnancy-related information is provided.
-        lastCytologyTest:
-          type: string
-          format: date
-          description: Date of the patient's most recent cytology test.
-          example: 2023-05-08
-        numberOfBirths:
-          type: integer
-          format: int32
-          description: Total number of births the patient had.
-          example: 3
-        numberOfEctopicPregnancies:
-          type: integer
-          format: int32
-          description: "Number of ectopic pregnancies, developed outside the uterus."
-          example: 1
-        numberOfInducedAbortions:
-          type: integer
-          format: int32
-          description: Number of induced abortions the patient had.
-          example: 2
-        numberOfOtherAbortions:
-          type: integer
-          format: int32
-          description: Number of abortions due to other reasons.
-          example: 1
-        numberOfPregnancies:
-          type: integer
-          format: int32
-          description: Total number of pregnancies the patient had.
-          example: 6
-        startOfLastPeriod:
-          type: string
-          format: date
-          description: Start date of the patient's last menstrual period.
-          example: 2024-12-01
-    ContactDetails:
-      type: object
-      properties:
-        address:
-          $ref: "#/components/schemas/InboxProcedureAddress"
-        contactType:
-          $ref: "#/components/schemas/ContactType"
-        dateOfBirth:
-          type: string
-          format: date
-        emailAddress:
-          type: string
-        facilityName:
-          type: string
-        firstName:
-          type: string
-        lastName:
-          type: string
-        phoneNumber:
-          type: string
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          $ref: "#/components/schemas/Title"
-      required:
-      - contactType
-      - salutation
-    ContactType:
-      type: string
-      enum:
-      - PRIVATE_PERSON
-      - FACILITY
-    CountryCode:
-      type: string
-      description: "List of country codes in ISO 3166-1 alpha-2 format. With custom\
-        \ extensions for stateless, non-standard countries, and unknown countries."
-      enum:
-      - AD
-      - AE
-      - AF
-      - AG
-      - AI
-      - AL
-      - AM
-      - AO
-      - AQ
-      - AR
-      - AS
-      - AT
-      - AU
-      - AW
-      - AX
-      - AZ
-      - BA
-      - BB
-      - BD
-      - BE
-      - BF
-      - BG
-      - BH
-      - BI
-      - BJ
-      - BL
-      - BM
-      - BN
-      - BO
-      - BQ
-      - BR
-      - BS
-      - BT
-      - BV
-      - BW
-      - BY
-      - BZ
-      - CA
-      - CC
-      - CD
-      - CF
-      - CG
-      - CH
-      - CI
-      - CK
-      - CL
-      - CM
-      - CN
-      - CO
-      - CR
-      - CU
-      - CV
-      - CW
-      - CX
-      - CY
-      - CZ
-      - DE
-      - DJ
-      - DK
-      - DM
-      - DO
-      - DZ
-      - EC
-      - EE
-      - EG
-      - EH
-      - ER
-      - ES
-      - ET
-      - FI
-      - FJ
-      - FK
-      - FM
-      - FO
-      - FR
-      - GA
-      - GB
-      - GD
-      - GE
-      - GF
-      - GG
-      - GH
-      - GI
-      - GL
-      - GM
-      - GN
-      - GP
-      - GQ
-      - GR
-      - GS
-      - GT
-      - GU
-      - GW
-      - GY
-      - HK
-      - HM
-      - HN
-      - HR
-      - HT
-      - HU
-      - ID
-      - IE
-      - IL
-      - IM
-      - IN
-      - IO
-      - IQ
-      - IR
-      - IS
-      - IT
-      - JE
-      - JM
-      - JO
-      - JP
-      - KE
-      - KG
-      - KH
-      - KI
-      - KM
-      - KN
-      - KP
-      - KR
-      - KW
-      - KY
-      - KZ
-      - LA
-      - LB
-      - LC
-      - LI
-      - LK
-      - LR
-      - LS
-      - LT
-      - LU
-      - LV
-      - LY
-      - MA
-      - MC
-      - MD
-      - ME
-      - MF
-      - MG
-      - MH
-      - MK
-      - ML
-      - MM
-      - MN
-      - MO
-      - MP
-      - MQ
-      - MR
-      - MS
-      - MT
-      - MU
-      - MV
-      - MW
-      - MX
-      - MY
-      - MZ
-      - NA
-      - NC
-      - NE
-      - NF
-      - NG
-      - NI
-      - NL
-      - "NO"
-      - NP
-      - NR
-      - NU
-      - NZ
-      - OM
-      - PA
-      - PE
-      - PF
-      - PG
-      - PH
-      - PK
-      - PL
-      - PM
-      - PN
-      - PR
-      - PS
-      - PT
-      - PW
-      - PY
-      - QA
-      - RE
-      - RO
-      - RS
-      - RU
-      - RW
-      - SA
-      - SB
-      - SC
-      - SD
-      - SE
-      - SG
-      - SH
-      - SI
-      - SJ
-      - SK
-      - SL
-      - SM
-      - SN
-      - SO
-      - SR
-      - SS
-      - ST
-      - SV
-      - SX
-      - SY
-      - SZ
-      - TC
-      - TD
-      - TF
-      - TG
-      - TH
-      - TJ
-      - TK
-      - TL
-      - TM
-      - TN
-      - TO
-      - TR
-      - TT
-      - TV
-      - TW
-      - TZ
-      - UA
-      - UG
-      - UM
-      - US
-      - UY
-      - UZ
-      - VA
-      - VC
-      - VE
-      - VG
-      - VI
-      - VN
-      - VU
-      - WF
-      - WS
-      - YE
-      - YT
-      - ZA
-      - ZM
-      - ZW
-      - XK
-      - UNKNOWN
-      - STATELESS
-    CreateAppointmentBlockGroupResponse:
-      type: object
-      properties:
-        appointmentBlockIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-        id:
-          type: string
-          format: uuid
-          description: Id of the AppointmentBlockGroup.
-          example: a765534d-760a-417d-8639-5e2fd59246e2
-      required:
-      - appointmentBlockIds
-      - id
-    CreateAppointmentRequest:
-      type: object
-      properties:
-        appointmentBookingType:
-          $ref: "#/components/schemas/AppointmentBookingType"
-        appointmentStart:
-          type: string
-          format: date-time
-        appointmentType:
-          $ref: "#/components/schemas/AppointmentType"
-        durationInMinutes:
-          type: integer
-          format: int32
-      required:
-      - appointmentBookingType
-      - appointmentStart
-      - appointmentType
-      - durationInMinutes
-    CreateApprovalRequestRequest:
-      type: object
-      properties:
-        reason:
-          type: string
-      required:
-      - reason
-    CreateDailyAppointmentBlock:
-      type: object
-      properties:
-        daysOfWeek:
-          type: array
-          items:
-            $ref: "#/components/schemas/DayOfWeek"
-        end:
-          type: string
-          format: date-time
-          description: Time at which the appointment block ends.
-          example: 2016-01-01T01:45:00.123456+01:00
-        start:
-          type: string
-          format: date-time
-          description: Time at which the appointment block starts.
-          example: 2016-01-01T01:00:00.123456+01:00
-      required:
-      - daysOfWeek
-      - end
-      - start
-    CreateDailyAppointmentBlockGroupRequest:
-      type: object
-      properties:
-        appointmentBlocks:
-          type: array
-          items:
-            $ref: "#/components/schemas/CreateDailyAppointmentBlock"
-        consultants:
-          type: array
-          items:
-            type: string
-            format: uuid
-        locationId:
-          type: string
-          format: uuid
-        mfas:
-          type: array
-          items:
-            type: string
-            format: uuid
-        parallelExaminations:
-          type: integer
-          format: int32
-          maximum: 10
-          minimum: 1
-        physicians:
-          type: array
-          items:
-            type: string
-            format: uuid
-        type:
-          $ref: "#/components/schemas/AppointmentType"
-      required:
-      - appointmentBlocks
-      - parallelExaminations
-      - type
-    CreateInboxProcedureRequest:
-      type: object
-      properties:
-        contactDetails:
-          $ref: "#/components/schemas/ContactDetails"
-        inboxProcedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        inboxProgressEntry:
-          $ref: "#/components/schemas/CreateInboxProgressEntry"
-      required:
-      - contactDetails
-      - inboxProgressEntry
-    CreateInboxProgressEntry:
-      type: object
-      properties:
-        inboxProgressEntryType:
-          $ref: "#/components/schemas/InboxProgressEntryType"
-        messageText:
-          type: string
-        subject:
-          type: string
-      required:
-      - inboxProgressEntryType
-    CreateManualProgressEntryRequest:
-      type: object
-      properties:
-        keyDocumentType:
-          type: string
-        manualProgressEntryType:
-          $ref: "#/components/schemas/ManualProgressEntryType"
-        note:
-          type: string
-      required:
-      - manualProgressEntryType
-    CreateMedicalHistoryRequest:
-      type: object
-      properties:
-        medicalHistory:
-          oneOf:
-          - $ref: "#/components/schemas/SexWorkMedicalHistory"
-          - $ref: "#/components/schemas/StiConsultationMedicalHistory"
-      required:
-      - medicalHistory
-    CreateProcedureRequest:
-      type: object
-      properties:
-        appointmentBookingType:
-          $ref: "#/components/schemas/AppointmentBookingType"
-        appointmentStart:
-          type: string
-          format: date-time
-        concern:
-          $ref: "#/components/schemas/Concern"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        durationInMinutes:
-          type: integer
-          format: int32
-        gender:
-          $ref: "#/components/schemas/Gender"
-        inGermanySince:
-          type: integer
-          format: int32
-          description: The year since the person has been residing in Germany.
-          example: 2022
-        yearOfBirth:
-          type: integer
-          format: int32
-      required:
-      - appointmentBookingType
-      - appointmentStart
-      - concern
-      - durationInMinutes
-      - gender
-      - yearOfBirth
-    CreateProcedureResponse:
-      type: object
-      properties:
-        pin:
-          type: string
-          description: The PIN for anonymous authorization.
-          example: "654321"
-          pattern: "\\d{6}"
-        procedureId:
-          type: string
-          format: uuid
-      required:
-      - pin
-      - procedureId
-    CreateTextTemplateRequest:
-      type: object
-      properties:
-        content:
-          type: string
-        context:
-          $ref: "#/components/schemas/TextTemplateContext"
-        name:
-          type: string
-      required:
-      - content
-      - context
-      - name
-    CreateTextTemplateResponse:
-      type: object
-      properties:
-        textTemplateId:
-          type: string
-          format: uuid
-      required:
-      - textTemplateId
-    DataOrigin:
-      type: string
-      description: "A list of possible origins of Persons and Facility in the Central\
-        \ Files. EDIT will only be set automatically on changes. EXTERNAL is for entries\
-        \ that come, e.g., from the citizen portal. IMPORT is reserved for automatic\
-        \ imports. MANUAL shall be set for every creation or connection done by an\
-        \ employee."
-      enum:
-      - MANUAL
-      - EXTERNAL
-      - IMPORT
-      - EDIT
-    DayOfWeek:
-      type: string
-      enum:
-      - MONDAY
-      - TUESDAY
-      - WEDNESDAY
-      - THURSDAY
-      - FRIDAY
-      - SATURDAY
-      - SUNDAY
-    Decision:
-      type: string
-      enum:
-      - GRANTED
-      - DENIED
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    DeleteDownloadPackagesRequest:
-      type: object
-      properties:
-        downloadIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - downloadIds
-    DetailedFacility:
-      type: object
-      properties:
-        facilityFileState:
-          $ref: "#/components/schemas/GetFacilityFileStateResponse"
-        facilityType:
-          $ref: "#/components/schemas/FacilityType"
-      required:
-      - facilityFileState
-      - facilityType
-    DetailedPerson:
-      type: object
-      properties:
-        person:
-          $ref: "#/components/schemas/GetPersonFileStateResponse"
-        personType:
-          $ref: "#/components/schemas/PersonType"
-      required:
-      - person
-      - personType
-    DetailedTask:
-      type: object
-      properties:
-        assignedByName:
-          type: string
-        assigneeName:
-          type: string
-        task:
-          $ref: "#/components/schemas/Task"
-      required:
-      - task
-    Diagnosis:
-      type: object
-      properties:
-        findings:
-          type: array
-          items:
-            $ref: "#/components/schemas/Icd10Code"
-        generalRemarks:
-          type: string
-        medications:
-          type: array
-          items:
-            $ref: "#/components/schemas/Medication"
-        otherTestTypeName:
-          type: string
-        results:
-          type: string
-        resultsCommunicated:
-          type: boolean
-        testTypes:
-          type: array
-          items:
-            $ref: "#/components/schemas/TestType"
-          uniqueItems: true
-    DomesticAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          addressAddition:
-            type: string
-            description: A descriptive addition to the address.
-            example: 2.OG links
-            maxLength: 100
-            minLength: 1
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          houseNumber:
-            type: string
-            description: "The house number of the address, including extensions."
-            example: 1a
-            maxLength: 11
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          street:
-            type: string
-            description: "The name of the street of the address, without the house\
-              \ number."
-            example: Beispielweg
-            maxLength: 55
-            minLength: 1
-      description: A usual domestic address.
-      required:
-      - city
-      - country
-      - postalCode
-      - street
-    Examination:
-      type: object
-      description: Contains information about any examinations the patient previously
-        undergone.
-      properties:
-        chlamydia:
-          type: boolean
-          description: Indicating if the patient has been examined for Chlamydia.
-        chlamydiaDate:
-          type: string
-          format: date
-          description: Date indicating when the patient was last examined for Chlamydia.
-        gonorrhea:
-          type: boolean
-          description: Indicating if the patient has been examined for Gonorrhea.
-        gonorrheaDate:
-          type: string
-          format: date
-          description: Date indicating when the patient was last examined for Gonorrhea.
-        hepA:
-          type: boolean
-          description: Indicating if the patient has been examined for Hepatitis A.
-        hepADate:
-          type: string
-          format: date
-          description: Date indicating when the patient was last examined for Hepatitis
-            A.
-        hepB:
-          type: boolean
-          description: Indicating if the patient has been examined for Hepatitis B.
-        hepBDate:
-          type: string
-          format: date
-          description: Date indicating when the patient was last examined for Hepatitis
-            B.
-        hepC:
-          type: boolean
-          description: Indicating if the patient has been examined for Hepatitis C.
-        hepCDate:
-          type: string
-          format: date
-          description: Date indicating when the patient was last examined for Hepatitis
-            C.
-        hiv:
-          type: boolean
-          description: Indicating if the patient has been examined for HIV.
-        hivDate:
-          type: string
-          format: date
-          description: Date indicating when the patient was last examined for HIV.
-        syphilis:
-          type: boolean
-          description: Indicating if the patient has been examined for Syphilis.
-        syphilisDate:
-          type: string
-          format: date
-          description: Date indicating when the patient was last examined for Syphilis.
-    ExportArchivingRelevantProceduresRequest:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-          uniqueItems: true
-      required:
-      - procedures
-    FacilityContactPerson:
-      type: object
-      properties:
-        emailAddress:
-          type: string
-          description: The email addresses of the Contact Person.
-          example: mail1@address.de
-          maxLength: 254
-          minLength: 6
-        firstName:
-          type: string
-          description: The given name(s) of the Contact Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: The last name of the Contact Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        phoneNumber:
-          type: string
-          description: The phone number of the Contact Person.
-          example: "+491234567890"
-          maxLength: 23
-          minLength: 1
-        role:
-          type: string
-          description: The role of the Contact Person in the Facility.
-          example: CEO
-          maxLength: 255
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of the Contact Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - lastName
-    FacilityType:
-      type: string
-      enum:
-      - SCHOOL
-      - INSPECTION
-      - DAYCARE
-      - HOSPITAL
-      - MEDICAL_PRACTICE
-      - REFUGEE_ACCOMMODATION
-      - OTHER
-    FileMetaData:
-      type: object
-      properties:
-        description:
-          type: string
-    FileType:
-      type: string
-      enum:
-      - JPEG
-      - PNG
-      - PDF
-      - EML
-    GdprDownloadPackageInfo:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-      required:
-      - id
-    GdprFacility:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          dataTransmitterPseudonymId:
-            type: string
-            description: The 'DatenübermittlerPseudonymId' of the MUK user
-            example: du-986b2b54ab89cf4ed674ad8c3126b966b54d4872
-          emailAddress:
-            type: string
-            description: The email addresses of the Facility.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          name:
-            type: string
-            description: The name of the Facility.
-            example: 123 Example Facility
-            maxLength: 300
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Facility.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 1
-      required:
-      - address
-      - name
-    GdprIdentificationData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    GdprPerson:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          bpk2:
-            type: string
-            description: The bpk2 of the BundId user
-            example: VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0
-          dateOfBirth:
-            type: string
-            format: date
-            description: The date of birth of the Person.
-            example: 2000-01-01
-          emailAddress:
-            type: string
-            description: The email addresses of the Person.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          firstName:
-            type: string
-            description: The given name(s) of the Person.
-            example: John
-            maxLength: 80
-            minLength: 1
-          lastName:
-            type: string
-            description: The last name of the Person.
-            example: Doe
-            maxLength: 120
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Person.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 0
-          salutation:
-            $ref: "#/components/schemas/Salutation"
-          title:
-            type: string
-            description: The academic title of the Person.
-            example: Prof. Dr.
-            maxLength: 119
-            minLength: 1
-      required:
-      - address
-      - dateOfBirth
-      - firstName
-      - lastName
-    GdprProcedureType:
-      type: string
-      description: A list of types of GDPR procedures.
-      enum:
-      - RIGHT_OF_ACCESS
-      - RIGHT_TO_ERASURE
-    GdprValidationTask:
-      type: object
-      properties:
-        dueDate:
-          type: string
-          format: date
-        gdprProcedureId:
-          type: string
-          format: uuid
-        identificationData:
-          oneOf:
-          - $ref: "#/components/schemas/GdprFacility"
-          - $ref: "#/components/schemas/GdprPerson"
-        status:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - dueDate
-      - gdprProcedureId
-      - identificationData
-      - status
-      - type
-    GdprValidationTaskSortKey:
-      type: string
-      enum:
-      - CREATED_AT
-    GdprValidationTaskStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    Gender:
-      type: string
-      description: The list of genders as specified in the German Personenstandsgesetz.
-      enum:
-      - NOT_SPECIFIED
-      - DIVERSE
-      - FEMALE
-      - MALE
-      example: "['FEMALE','DIVERSE']"
-    GenericFileReference:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFileReference"
-      - type: object
-        properties:
-          '@type':
-            type: string
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - deletable
-      - deleted
-      - fileId
-    GetAllValidationTasksResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/GdprValidationTask"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          minimum: 0
-      required:
-      - elements
-      - totalNumberOfElements
-    GetAppointmentBlock:
-      type: object
-      description: A planned appointment block. Appointment blocks offer a set of
-        bookable appointments at different times within the timeframe of the appointment
-        block.
-      properties:
-        end:
-          type: string
-          format: date-time
-          description: Time at which the appointment block ends.
-          example: 2016-01-01T01:45:00.123456+01:00
-        id:
-          type: string
-          format: uuid
-          description: Id of the AppointmentBlock.
-          example: a765534d-760a-417d-8639-5e2fd59246e2
-        numberOfBookedAppointments:
-          type: integer
-          format: int64
-          minimum: 0
-        numberOfFreeAppointments:
-          type: integer
-          format: int64
-          minimum: 0
-        start:
-          type: string
-          format: date-time
-          description: Time at which the appointment block starts.
-          example: 2016-01-01T01:00:00.123456+01:00
-      required:
-      - end
-      - id
-      - numberOfBookedAppointments
-      - numberOfFreeAppointments
-      - start
-    GetAppointmentBlockGroup:
-      type: object
-      properties:
-        appointmentBlocks:
-          type: array
-          items:
-            $ref: "#/components/schemas/GetAppointmentBlock"
-        id:
-          type: string
-          format: uuid
-          description: Id of the AppointmentBlockGroup.
-          example: a765534d-760a-417d-8639-5e2fd59246e2
-        location:
-          $ref: "#/components/schemas/AppointmentLocation"
-        parallelExaminations:
-          type: integer
-          format: int32
-          maximum: 10
-          minimum: 1
-        type:
-          $ref: "#/components/schemas/AppointmentType"
-      required:
-      - appointmentBlocks
-      - id
-      - parallelExaminations
-      - type
-    GetAppointmentBlockGroupsResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/GetAppointmentBlockGroup"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-      required:
-      - elements
-      - totalNumberOfElements
-    GetAppointmentTypesResponse:
-      type: object
-      properties:
-        appointmentTypeConfigDtos:
-          type: array
-          items:
-            $ref: "#/components/schemas/AppointmentTypeConfig"
-      required:
-      - appointmentTypeConfigDtos
-    GetArchivableProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetArchivableProceduresSortBy:
-      type: string
-      default: CLOSED_AT
-      enum:
-      - CLOSED_AT
-      - PROCEDURE_TYPE
-    GetArchivableProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetArchivingConfigurationResponse:
-      type: object
-      properties:
-        archivingDetails:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/ArchivingDetails"
-        gracePeriodMonths:
-          type: integer
-          format: int32
-      required:
-      - archivingDetails
-      - gracePeriodMonths
-    GetDetailedProcedureResponse:
-      type: object
-      properties:
-        facilities:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedFacility"
-        persons:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedPerson"
-        procedure:
-          $ref: "#/components/schemas/Procedure"
-        tasks:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedTask"
-      required:
-      - facilities
-      - persons
-      - procedure
-      - tasks
-    GetFacilityFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        id:
-          type: string
-          format: uuid
-          description: Id of the Facility.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referenceFacility
-            it is connected to.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-      required:
-      - contactPersons
-      - dataOrigin
-      - emailAddresses
-      - id
-      - name
-      - phoneNumbers
-      - referenceVersion
-    GetFreeAppointmentsResponse:
-      type: object
-      properties:
-        appointments:
-          type: array
-          items:
-            $ref: "#/components/schemas/Appointment"
-      required:
-      - appointments
-    GetGdprDownloadPackagesInfoResponse:
-      type: object
-      properties:
-        downloadPackages:
-          type: array
-          items:
-            $ref: "#/components/schemas/GdprDownloadPackageInfo"
-      required:
-      - downloadPackages
-    GetGdprNotificationBannerResponse:
-      type: object
-      properties:
-        earliestDueDate:
-          type: string
-          format: date
-        openValidationTasksCount:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - openValidationTasksCount
-    GetGdprValidationTaskDetailsResponse:
-      type: object
-      properties:
-        proceduresWithStatus:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessProcedureWithInclusionStatus"
-        validationTask:
-          $ref: "#/components/schemas/GdprValidationTask"
-      required:
-      - proceduresWithStatus
-      - validationTask
-    GetGdprValidationTaskResponse:
-      type: object
-      properties:
-        status:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-      required:
-      - status
-    GetInboxProcedureResponse:
-      type: object
-      properties:
-        inboxProcedure:
-          $ref: "#/components/schemas/InboxProcedure"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - inboxProcedure
-      - resolvedUsers
-    GetInboxProceduresResponse:
-      type: object
-      properties:
-        inboxProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/InboxProcedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - inboxProcedures
-      - totalElements
-      - totalPages
-    GetInboxProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - CREATED_AT
-    GetInboxProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetManualProgressEntryHistoryResponse:
-      type: object
-      properties:
-        manualProgressEntryHistory:
-          type: array
-          items:
-            $ref: "#/components/schemas/ManualProgressEntryHistory"
-    GetMetaDataHistoryResponse:
-      type: object
-      properties:
-        metaDataHistory:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ImageMetaDataHistory"
-            - $ref: "#/components/schemas/MailMetaDataHistory"
-            - $ref: "#/components/schemas/PdfMetaDataHistory"
-    GetPersonFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        dateOfBirth:
-          type: string
-          format: date
-          description: The date of birth of the Person.
-          example: 2000-01-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Person.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: The given name(s) of the Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        id:
-          type: string
-          format: uuid
-          description: Id of the Person.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        lastName:
-          type: string
-          description: The last name of the Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          description: The last name at birth of the Person.
-          example: Smith
-          maxLength: 40
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referencePerson
-            it is connected to. Set to 'null' if unchecked.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Person.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          description: The place of birth (without country) of the Person.
-          example: Berlin
-          maxLength: 50
-          minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - dataOrigin
-      - dateOfBirth
-      - emailAddresses
-      - firstName
-      - gender
-      - id
-      - lastName
-      - phoneNumbers
-      - referenceVersion
-      - salutation
-    GetProcedureApprovalRequestsResponse:
-      type: object
-      properties:
-        approvalRequests:
-          type: array
-          items:
-            $ref: "#/components/schemas/ApprovalRequest"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - approvalRequests
-      - resolvedUsers
-    GetProcedureFileDetailsResponse:
-      type: object
-      properties:
-        fileDetails:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProgressEntryReferenceFilePair"
-        procedureId:
-          type: string
-          format: uuid
-      required:
-      - fileDetails
-      - procedureId
-    GetProcedureMetricsResponse:
-      type: object
-      properties:
-        procedureMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureMetric"
-      required:
-      - procedureMetrics
-    GetProceduresOverviewResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/StiProtectionProcedureOverview"
-        totalElements:
-          type: integer
-          format: int64
-          description: The total amount of elements
-        totalPages:
-          type: integer
-          format: int32
-          description: The total number of pages
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - MODIFIED_AT
-      - CREATED_AT
-    GetProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetProgressEntriesResponse:
-      type: object
-      properties:
-        progressEntries:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ManualProgressEntry"
-            - $ref: "#/components/schemas/ProcessedInboxProgressEntry"
-            - $ref: "#/components/schemas/SystemProgressEntry"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - progressEntries
-      - totalElements
-      - totalPages
-    GetProgressEntryResponse:
-      type: object
-      properties:
-        progressEntry:
-          oneOf:
-          - $ref: "#/components/schemas/ManualProgressEntry"
-          - $ref: "#/components/schemas/ProcessedInboxProgressEntry"
-          - $ref: "#/components/schemas/SystemProgressEntry"
-        relatedKeyDocumentProgressEntries:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ManualProgressEntry"
-            - $ref: "#/components/schemas/SystemProgressEntry"
-      required:
-      - progressEntry
-      - relatedKeyDocumentProgressEntries
-    GetRecentProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-      required:
-      - procedures
-    GetRelevantArchivableProceduresResponse:
-      type: object
-      properties:
-        fileSizeBytes:
-          type: integer
-          format: int32
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - fileSizeBytes
-      - procedures
-      - totalElements
-      - totalPages
-    GetRelevantArchivableProceduresSortBy:
-      type: string
-      default: CLOSED_AT
-      enum:
-      - CLOSED_AT
-      - EXPORTED_AT
-    GetRelevantArchivableProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetStiProtectionProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - CREATED_AT
-      - STATUS
-      - CONCERN
-      - YEAR_OF_BIRTH
-      - GENDER
-      - LAB_STATUS
-    GetStiProtectionProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetTaskByUserResponse:
-      type: object
-      properties:
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-        tasksByUser:
-          type: object
-          additionalProperties:
-            type: array
-            items:
-              $ref: "#/components/schemas/Task"
-      required:
-      - resolvedUsers
-      - tasksByUser
-    GetTaskMetricsResponse:
-      type: object
-      properties:
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedProcedureCount:
-          type: integer
-          format: int64
-        fastestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        slowestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        taskMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskMetric"
-      required:
-      - businessModule
-      - closedProcedureCount
-      - fastestProcedures
-      - procedureType
-      - slowestProcedures
-      - taskMetrics
-    GetTasksSortBy:
-      type: string
-      enum:
-      - PRIORITY
-      - CREATED_AT
-      - MODIFIED_AT
-    GetTasksSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetTextTemplatesResponse:
-      type: object
-      properties:
-        textTemplates:
-          type: array
-          items:
-            $ref: "#/components/schemas/TextTemplate"
-      required:
-      - textTemplates
-    GetWaitingRoomProceduresResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/WaitingRoomProcedure"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-      required:
-      - elements
-      - totalNumberOfElements
-    HepatitisLaboratoryTest:
-      type: object
-      description: Used in the context of laboratory test examination to document
-        test results for Hepatitis A and Hepatitis B.
-      properties:
-        infection:
-          type: boolean
-          description: Indicates whether the test is conducted in the context of an
-            infection.
-        remark:
-          type: string
-          description: Provides additional comments related to the corresponding test.
-          example: HAV-AK IgM-Test
-        result:
-          type: boolean
-          description: Indicates the outcome of the laboratory test result.
-        vaccineTitre:
-          type: boolean
-          description: Indicates whether the test is conducted in the context of a
-            vaccination.
-        value:
-          type: string
-          description: Records a specific measurement or value obtained from the laboratory
-            test results.
-          example: 1.5 U/ml
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    Icd10Code:
-      type: object
-      properties:
-        code:
-          type: string
-          description: ICD-10 code or ICD-10 group code
-          example: A00
-        isGroup:
-          type: boolean
-          description: "If true, the returned code specifies an ICD-10 code group."
-        title:
-          type: string
-          description: ICD-10 code title
-          example: Cholera
-      required:
-      - code
-      - isGroup
-      - title
-    Image:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/ImageMetaData"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    ImageMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          createdDate:
-            type: string
-            format: date-time
-    ImageMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          imageMetaData:
-            $ref: "#/components/schemas/ImageMetaData"
-      required:
-      - changedAt
-    InboxProcedure:
-      type: object
-      properties:
-        closedAt:
-          type: string
-          format: date-time
-        contactDetails:
-          $ref: "#/components/schemas/ContactDetails"
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-          format: uuid
-        inboxProcedureId:
-          type: string
-          format: uuid
-        inboxProcedureStatus:
-          $ref: "#/components/schemas/InboxProcedureStatus"
-        inboxProcedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        inboxProgressEntry:
-          $ref: "#/components/schemas/InboxProgressEntry"
-      required:
-      - contactDetails
-      - createdAt
-      - createdBy
-      - inboxProcedureId
-      - inboxProcedureStatus
-      - inboxProgressEntry
-    InboxProcedureAddress:
-      type: object
-      properties:
-        addressAddition:
-          type: string
-        city:
-          type: string
-        country:
-          type: string
-        houseNumber:
-          type: string
-        postalCode:
-          type: string
-        postboxNumber:
-          type: integer
-          format: int32
-        street:
-          type: string
-    InboxProcedureStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    InboxProgressEntry:
-      type: object
-      properties:
-        fileReference:
-          oneOf:
-          - $ref: "#/components/schemas/GenericFileReference"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        inboxProgressEntryId:
-          type: string
-          format: uuid
-        inboxProgressEntryType:
-          $ref: "#/components/schemas/InboxProgressEntryType"
-        messageText:
-          type: string
-        subject:
-          type: string
-      required:
-      - inboxProgressEntryId
-      - inboxProgressEntryType
-    InboxProgressEntryType:
-      type: string
-      enum:
-      - LETTER
-      - PHONE_CALL
-      - EMAIL
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    KeyDocumentAwareProgressEntry:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        keyDocumentType:
-          type: string
-        keyDocumentVersion:
-          type: integer
-          format: int32
-      required:
-      - '@type'
-    LabStatus:
-      type: string
-      enum:
-      - OPEN
-      - IN_PROGRESS
-      - CLOSED
-    LaboratoryTest:
-      type: object
-      description: Used in the context of laboratory test examinations to document
-        test results.
-      properties:
-        remark:
-          type: string
-          description: Provides additional comments related to the corresponding test.
-          example: "CT-Value: 28.5"
-        result:
-          type: boolean
-          description: Indicates the outcome of the laboratory test result.
-        value:
-          type: string
-          description: Records a specific measurement or value obtained from the laboratory
-            test results.
-          example: Chlamydia tr. rRNA Test
-    LaboratoryTestExamination:
-      type: object
-      description: Used to document the initial request which laboratory tests should
-        be performed and to record the corresponding results.
-      properties:
-        cancerScreeningTestData:
-          $ref: "#/components/schemas/LaboratoryTest"
-        cancerScreeningTestRequested:
-          type: boolean
-          description: Specifies whether a Cancer Screening laboratory test is requested.
-        chlamydiaTestRequested:
-          type: boolean
-          description: Specifies whether a Chlamydia laboratory test is requested.
-        chlamydiaTestSamples:
-          $ref: "#/components/schemas/LaboratoryTestSamples"
-        generalRemarks:
-          type: string
-          description: Provides general comments related to the laboratory tests.
-          example: Sample processed at Black Mesa Diagnostics Laboratory.
-        gonorrheaTestRequested:
-          type: boolean
-          description: Specifies whether a Gonorrhea laboratory test is requested.
-        gonorrheaTestSamples:
-          $ref: "#/components/schemas/LaboratoryTestSamples"
-        hadSyphilis:
-          type: boolean
-          description: Indicates if the patient was previously infected with Syphilis.
-        hepATestData:
-          $ref: "#/components/schemas/HepatitisLaboratoryTest"
-        hepATestRequested:
-          type: boolean
-          description: Specifies whether a Hepatitis A laboratory test is requested.
-        hepBTestData:
-          $ref: "#/components/schemas/HepatitisLaboratoryTest"
-        hepBTestRequested:
-          type: boolean
-          description: Specifies whether a Hepatitis B laboratory test is requested.
-        hepCTestData:
-          $ref: "#/components/schemas/LaboratoryTest"
-        hepCTestRequested:
-          type: boolean
-          description: Specifies whether a Hepatitis C laboratory test is requested.
-        hivTestData:
-          $ref: "#/components/schemas/LaboratoryTest"
-        hivTestRequested:
-          type: boolean
-          description: Specifies whether an HIV laboratory test is requested.
-        hpvTestData:
-          $ref: "#/components/schemas/LaboratoryTest"
-        hpvTestRequested:
-          type: boolean
-          description: Specifies whether an HPV laboratory test is requested.
-        mpoxTestData:
-          $ref: "#/components/schemas/LaboratoryTest"
-        mpoxTestRequested:
-          type: boolean
-          description: Specifies whether a Mpox laboratory test is requested.
-        mycoplasmaTestRequested:
-          type: boolean
-          description: Specifies whether a Mycoplasma laboratory test is requested.
-        mycoplasmaTestSamples:
-          $ref: "#/components/schemas/LaboratoryTestSamples"
-        otherTestData:
-          $ref: "#/components/schemas/LaboratoryTest"
-        otherTestName:
-          type: string
-          description: Records the name of the additional laboratory test.
-          example: Ethylglucuronid (LC-MS/MS).
-        otherTestRequested:
-          type: boolean
-          description: Specifies whether another additional laboratory test is requested.
-        sampleBarcode:
-          type: string
-          description: Specifies a barcode for tracking the results with the external
-            laboratory.
-          example: "4815162342"
-        syphilisTestData:
-          $ref: "#/components/schemas/LaboratoryTest"
-        syphilisTestRequested:
-          type: boolean
-          description: Specifies whether a Syphilis laboratory test is requested.
-        testsConducted:
-          type: boolean
-          description: Indicates if the tests were conducted and is used for the laboratory
-            status.
-        testsPayed:
-          type: boolean
-          description: Indicates whether the patient has paid for the tests.
-    LaboratoryTestSamples:
-      type: object
-      properties:
-        analSampleData:
-          $ref: "#/components/schemas/LaboratoryTest"
-        analSampleRequested:
-          type: boolean
-          description: Specifies whether an anal sample is requested.
-        oralSampleData:
-          $ref: "#/components/schemas/LaboratoryTest"
-        oralSampleRequested:
-          type: boolean
-          description: Specifies whether an oral sample is requested.
-        urethralSampleData:
-          $ref: "#/components/schemas/LaboratoryTest"
-        urethralSampleRequested:
-          type: boolean
-          description: Specifies whether an urethral sample is requested.
-    Mail:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/MailMetaData"
-          removedInvalidAttachments:
-            type: integer
-            format: int32
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-      - removedInvalidAttachments
-    MailMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          mailFrom:
-            type: string
-          mailTo:
-            type: string
-          messageText:
-            type: string
-          sentDate:
-            type: string
-            format: date-time
-          subject:
-            type: string
-      required:
-      - mailFrom
-      - mailTo
-      - messageText
-      - sentDate
-      - subject
-    MailMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          mailMetaData:
-            $ref: "#/components/schemas/MailMetaData"
-      required:
-      - changedAt
-    ManualProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          createdByUserFirstName:
-            type: string
-          createdByUserLastName:
-            type: string
-          keyDocumentType:
-            type: string
-          keyDocumentVersion:
-            type: integer
-            format: int32
-          locked:
-            type: boolean
-          manualProgressEntryType:
-            $ref: "#/components/schemas/ManualProgressEntryType"
-          note:
-            type: string
-      - $ref: "#/components/schemas/ApprovalRequestEntity"
-      - $ref: "#/components/schemas/KeyDocumentAwareProgressEntry"
-      required:
-      - createdAt
-      - createdBy
-      - locked
-      - manualProgressEntryType
-      - modifiedAt
-      - progressEntryId
-    ManualProgressEntryHistory:
-      type: object
-      properties:
-        changedAt:
-          type: string
-          format: date-time
-        manualProgressEntry:
-          $ref: "#/components/schemas/ManualProgressEntry"
-      required:
-      - changedAt
-    ManualProgressEntryType:
-      type: string
-      enum:
-      - LETTER
-      - PHONE_CALL
-      - NOTE
-      - EMAIL
-      - IMAGE
-      - DOCUMENT
-    MedicalHistory:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    Medication:
-      type: object
-      properties:
-        dose:
-          type: string
-        name:
-          type: string
-        prescriptionDate:
-          type: string
-          format: date
-      required:
-      - dose
-      - name
-      - prescriptionDate
-    MetaData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        description:
-          type: string
-      required:
-      - '@type'
-    MetaDataHistory:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        changedAt:
-          type: string
-          format: date-time
-      required:
-      - '@type'
-      - changedAt
-    Operation:
-      type: string
-      enum:
-      - DELETE
-    PartnerRiskFactors:
-      type: string
-      description: Details any know risk factors associated the patient's sexual partners.
-      enum:
-      - HOMOSEXUAL
-      - BISEXUAL_MALE
-      - HIV_POSITIVE
-      - STI_POSITIVE
-      - INJECTED_DRUGS
-      - SEX_WORKER
-      example: "['SEX_WORKER','STI_POSITIVE','INJECTED_DRUGS']"
-    PatchManualProgressEntryRequest:
-      type: object
-      properties:
-        manualProgressEntryType:
-          $ref: "#/components/schemas/ManualProgressEntryType"
-        note:
-          type: string
-          nullable: true
-    Pdf:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/PdfMetaData"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    PdfMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          createdDate:
-            type: string
-            format: date-time
-    PdfMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          pdfMetaData:
-            $ref: "#/components/schemas/PdfMetaData"
-      required:
-      - changedAt
-    Person:
-      type: object
-      properties:
-        accessCode:
-          type: string
-          description: "Unique code for patient identification and login to the online\
-            \ portal, valid until the procedure is closed."
-          example: 937ZiFaqjkfQgTBmo
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        gender:
-          $ref: "#/components/schemas/Gender"
-        id:
-          type: string
-          format: uuid
-          description: An unique identifier for the person.
-          example: 25db7719-4924-4208-bb13-d0274e27279d
-        inGermanySince:
-          type: integer
-          format: int32
-          description: The year since the person has been residing in Germany.
-          example: 2010
-        yearOfBirth:
-          type: integer
-          format: int32
-          description: The year of birth of the person.
-          example: 2000
-      required:
-      - gender
-      - id
-      - yearOfBirth
-    PersonType:
-      type: string
-      enum:
-      - PATIENT
-      - PARENT
-      - PROFESSIONAL
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    PostboxAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          postbox:
-            type: string
-            description: The number (or name) of the postbox.
-            example: "123"
-            maxLength: 21
-            minLength: 1
-      description: An address which is a postbox.
-      required:
-      - city
-      - country
-      - postalCode
-      - postbox
-    Prevention:
-      type: object
-      description: Details information regarding the patient's prevention strategies
-        and measures.
-      properties:
-        infoAboutPrepDesired:
-          type: boolean
-          description: Indicates whether the patient wishes to receive information
-            about PrEP.
-        protectionMethodsUsed:
-          type: array
-          description: Lists the methods of protection the patient has used during
-            sexual activity.
-          example: "['CONDOM','PREP']"
-          items:
-            $ref: "#/components/schemas/ProtectionMethod"
-          uniqueItems: true
-        safeSexPractice:
-          $ref: "#/components/schemas/SafeSexPractice"
-        vaccinations:
-          type: array
-          description: Provides information on vaccinations the patient has received.
-          example: "['HEPATITIS_A', 'HPV']"
-          items:
-            $ref: "#/components/schemas/Vaccination"
-          uniqueItems: true
-    PreviousIllness:
-      type: object
-      description: Lists any past illnesses the patient had.
-      properties:
-        chlamydia:
-          type: boolean
-          description: Indicates if the patient was diagnosed with or experienced
-            Chlamydia.
-        gonorrhea:
-          type: boolean
-          description: Indicates if the patient was diagnosed with or experienced
-            Gonorrhea.
-        hepA:
-          type: boolean
-          description: Indicates if the patient was diagnosed with or experienced
-            Hepatitis A.
-        hepB:
-          type: boolean
-          description: Indicates if the patient was diagnosed with or experienced
-            Hepatitis B.
-        hepC:
-          type: boolean
-          description: Indicates if the patient was diagnosed with or experienced
-            Hepatitis C.
-        hiv:
-          type: boolean
-          description: Indicates if the patient was diagnosed with or experienced
-            HIV.
-        other:
-          type: boolean
-          description: Indicates if the patient was diagnosed with another not listed
-            illness.
-        otherData:
-          type: string
-          description: Holds additional info regarding the other illness.
-        syphilis:
-          type: boolean
-          description: Indicates if the patient was diagnosed with or experienced
-            Syphilis.
-    Procedure:
-      type: object
-      properties:
-        archivingRelevanceSettings:
-          $ref: "#/components/schemas/ArchivingRelevanceSettings"
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedAt:
-          type: string
-          format: date-time
-        createdAt:
-          type: string
-          format: date-time
-        exportedAt:
-          type: string
-          format: date-time
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        procedureStatus:
-          $ref: "#/components/schemas/ProcedureStatus"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-          pattern: "[a-zA-Z0-9.].+"
-      required:
-      - archivingRelevanceSettings
-      - businessModule
-      - createdAt
-      - modifiedAt
-      - procedureId
-      - procedureStatus
-      - procedureType
-      - summary
-    ProcedureMetric:
-      type: object
-      properties:
-        abortedCount:
-          type: integer
-          format: int64
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedCount:
-          type: integer
-          format: int64
-        inProgressCount:
-          type: integer
-          format: int64
-        openOrDraftCount:
-          type: integer
-          format: int64
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        totalCount:
-          type: integer
-          format: int64
-      required:
-      - abortedCount
-      - businessModule
-      - closedCount
-      - inProgressCount
-      - openOrDraftCount
-      - procedureType
-      - totalCount
-    ProcedureStatus:
-      type: string
-      enum:
-      - DRAFT
-      - OPEN
-      - IN_PROGRESS
-      - CLOSED
-      - ABORTED
-    ProcedureType:
-      type: string
-      enum:
-      - REGULAR_EXAMINATION
-      - CAN_CHILD
-      - ENTRY_LEVEL
-      - DRAFT_CITIZEN_OFFICE_IMPORT
-      - DRAFT_SCHOOL_IMPORT
-      - INSPECTION
-      - TM_VACCINATION_CONSULTATION
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY_ENTRY
-      - MEDICAL_REGISTRY_CITIZEN_DRAFT
-      - MEDICAL_REGISTRY_EMPLOYEE_DRAFT
-      - DENTAL_CHILD
-      - OFFICIAL_MEDICAL_SERVICE
-    ProcedureWithDuration:
-      type: object
-      properties:
-        createdAt:
-          type: string
-          format: date-time
-        duration:
-          type: string
-          description: A duration in ISO 8601
-        id:
-          type: string
-          format: uuid
-      required:
-      - createdAt
-      - id
-    ProcessedInboxProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          createdByUserFirstName:
-            type: string
-          createdByUserLastName:
-            type: string
-          inboxProcedureId:
-            type: string
-            format: uuid
-          inboxProgressEntryType:
-            $ref: "#/components/schemas/InboxProgressEntryType"
-          messageText:
-            type: string
-          subject:
-            type: string
-      required:
-      - createdAt
-      - createdBy
-      - inboxProcedureId
-      - inboxProgressEntryType
-      - modifiedAt
-      - progressEntryId
-    ProgressEntry:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        createdAt:
-          type: string
-          format: date-time
-        fileReference:
-          oneOf:
-          - $ref: "#/components/schemas/GenericFileReference"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        modifiedAt:
-          type: string
-          format: date-time
-        progressEntryId:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - createdAt
-      - modifiedAt
-      - progressEntryId
-    ProgressEntryClass:
-      type: string
-      enum:
-      - MANUAL_PROGRESS_ENTRY
-      - SYSTEM_PROGRESS_ENTRY
-      - PROCESSED_INBOX_PROGRESS_ENTRY
-    ProgressEntryReferenceFilePair:
-      type: object
-      properties:
-        file:
-          oneOf:
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        progressEntryId:
-          type: string
-          format: uuid
-      required:
-      - file
-      - progressEntryId
-    ProgressEntrySortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - CREATED_AT
-      - MODIFIED_AT
-    ProgressEntrySortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    ProtectionMethod:
-      type: string
-      description: Lists the methods of protection the patient has used during sexual
-        activity.
-      enum:
-      - CONDOM
-      - DENTAL_DAM
-      - GLOVES
-      - PREP
-      - TASP
-      - OTHER
-      example: "['CONDOM','PREP']"
-    RapidTestData:
-      type: object
-      description: Used in the context of rapid test examinations to document test
-        results.
-      properties:
-        number:
-          type: string
-          description: "Represents the test number, which can be numerical, alphanumerical\
-            \ or alphabetical."
-          example: Test-481516
-        result:
-          type: boolean
-          description: Indicates the outcome of the rapid test result
-      required:
-      - result
-    RapidTestExamination:
-      type: object
-      description: Used to document the initial request which laboratory tests should
-        be performed and to record the corresponding results.
-      properties:
-        bloodPressureData:
-          type: string
-          description: Records the measured blood pressure values.
-          example: 120/80 mmHg.
-        bloodPressureRequested:
-          type: boolean
-          description: Specifies whether blood pressure measurement is requested.
-        generalComments:
-          type: string
-          description: Provides general comments related to the rapid tests.
-          example: Faint test line observed. Confirmation with laboratory test recommended.
-        hivData:
-          $ref: "#/components/schemas/RapidTestData"
-        hivRequested:
-          type: boolean
-          description: Specifies whether an HIV rapid test is requested.
-        pregnancyTestData:
-          $ref: "#/components/schemas/RapidTestData"
-        pregnancyTestRequested:
-          type: boolean
-          description: Specifies whether a pregnancy test is requested.
-        pulseData:
-          type: string
-          description: Is used to document the measured pulse.
-          example: 72 bpm.
-        pulseRequested:
-          type: boolean
-          description: Specifies whether pulse measurement is requested.
-        syphilisData:
-          $ref: "#/components/schemas/RapidTestData"
-        syphilisRequested:
-          type: boolean
-          description: Specifies whether a Syphilis rapid test is requested.
-        testsPayed:
-          type: boolean
-          description: Indicates whether the patient has paid for the tests.
-        ultrasoundData:
-          type: string
-          description: Records the results of the ultrasound examination.
-          example: "Gestational age: 12 weeks 3 days."
-        ultrasoundRequested:
-          type: boolean
-          description: Specifies whether an ultrasound examination is requested.
-        urinalysisData:
-          type: string
-          description: Is used to document the urinalysis information.
-          example: "Appearance: Clear, Color: Yellow, pH: 6.5."
-        urinalysisRequested:
-          type: boolean
-          description: Specifies whether an urinalysis is requested.
-      required:
-      - bloodPressureRequested
-      - hivRequested
-      - pregnancyTestRequested
-      - pulseRequested
-      - syphilisRequested
-      - testsPayed
-      - ultrasoundRequested
-      - urinalysisRequested
-    RelationshipModel:
-      type: string
-      description: Provides details on the patient's relationship model.
-      enum:
-      - NO_COMMITMENT
-      - MONOGAMOUS
-      - OPEN
-      example: OPEN
-    RiskContact:
-      type: object
-      description: Details information regarding the patient's contact with potentially
-        risky partners.
-      properties:
-        numberOfSexualPartnersLast12Months:
-          type: integer
-          format: int32
-          description: Indicates the total number of sexual partners the patient has
-            had within the last 12 months.
-          example: 2
-        partnerRiskFactors:
-          type: array
-          description: Details any know risk factors associated the patient's sexual
-            partners.
-          example: "['SEX_WORKER','STI_POSITIVE','INJECTED_DRUGS']"
-          items:
-            $ref: "#/components/schemas/PartnerRiskFactors"
-          uniqueItems: true
-        sexualContacts:
-          type: array
-          description: Represents the gender of the patient's sexual contacts over
-            the specified period.
-          example: "['FEMALE','DIVERSE']"
-          items:
-            $ref: "#/components/schemas/Gender"
-          uniqueItems: true
-        sexualOrientation:
-          $ref: "#/components/schemas/SexualOrientation"
-    RiskFactors:
-      type: object
-      description: Details information about the patient's behaviors or actions that
-        may pose risk factors.
-      properties:
-        otherRiskActivities:
-          type: boolean
-          description: Records if the patient engaged in other risk-related activities.
-        otherRiskActivitiesData:
-          type: string
-          description: Provides details on any other risk-related activities the patient
-            has participated.
-        riskActivityDateAnalIntercourse:
-          type: boolean
-          description: Records if the patient engaged in anal intercourse that may
-            pose a risk.
-        riskActivityDateAnalIntercourseDate:
-          type: string
-          format: date
-          description: Records the most recent date the patient engaged in anal intercourse.
-        riskActivityDateOralIntercourse:
-          type: boolean
-          description: Records if the patient engaged in oral intercourse that may
-            pose a risk.
-        riskActivityDateOralIntercourseDate:
-          type: string
-          format: date
-          description: Records the most recent date the patient engaged in oral intercourse.
-        riskActivityDateVaginalIntercourse:
-          type: boolean
-          description: Records if the patient engaged in vaginal intercourse that
-            may pose a risk.
-        riskActivityDateVaginalIntercourseDate:
-          type: string
-          format: date
-          description: Records the most recent date the patient engaged in vaginal
-            intercourse.
-    SafeSexPractice:
-      type: string
-      description: Indicates whether the patient engages in practices considered safe
-        sex.
-      enum:
-      - ALWAYS
-      - FREQUENTLY
-      - OCCASIONALLY
-      - NEVER
-    Salutation:
-      type: string
-      enum:
-      - NOT_SPECIFIED
-      - NEUTRAL
-      - FEMALE
-      - MALE
-    SelfAssignTaskRequest:
-      type: object
-      properties:
-        dueAt:
-          type: string
-          format: date-time
-        taskVersion:
-          type: integer
-          format: int64
-      required:
-      - taskVersion
-    SexWorkLocation:
-      type: string
-      description: The locations where the patient engages in sex work.
-      enum:
-      - BORDELLO
-      - CLUB
-      - ESCORT
-      - APARTMENT
-      - APPOINTMENT_APARTMENT
-      - MASSAGE_PARLOR
-      - TANTRA_PRACTICE
-      - STREET_PROSTITUTION
-      - OTHER
-      example: "['BORDELLO','APARTMENT']"
-    SexWorkMedicalHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MedicalHistory"
-      - type: object
-        properties:
-          additionalComments:
-            type: string
-            description: An optional field for recording any additional remarks or
-              comments.
-          amountAbortions:
-            type: integer
-            format: int32
-            description: Specifies the total number of abortions the patient has undergone.
-            example: 1
-          amountPregnancies:
-            type: integer
-            format: int32
-            description: Specifies the total number of pregnancies the patient had.
-            example: 3
-          contactToClarifyDate:
-            type: string
-            format: date
-            description: Records the date of the contact the patients wished to discuss
-              or clarify.
-          currentSymptoms:
-            type: string
-            description: Details the symptoms the patient is currently experiencing.
-            example: Dysuria
-          examinationReason:
-            type: string
-            description: Specifies the reason for the patient's appointment.
-            example: Lower Abdominal Pain
-          examinations:
-            $ref: "#/components/schemas/Examination"
-          knownOperations:
-            type: string
-            description: A description of known past surgeries or operations.
-            example: Appendectomy in 2015.
-          lastCancerScreeningDate:
-            type: string
-            format: date
-            description: The date of the patient's most recent cancer screening.
-          lastMenstruationDate:
-            type: string
-            format: date
-            description: The date when the patient last experienced menstruation.
-          medications:
-            type: string
-            description: A list of current or relevant medications the patient is
-              taking.
-            example: Lisinopril 10mg daily.
-          prevention:
-            $ref: "#/components/schemas/Prevention"
-          previousIllnesses:
-            $ref: "#/components/schemas/PreviousIllness"
-          previouslyPregnant:
-            type: boolean
-            description: Indicates if the patient was previously pregnant.
-          relationshipModel:
-            $ref: "#/components/schemas/RelationshipModel"
-          riskContacts:
-            $ref: "#/components/schemas/RiskContact"
-          riskFactors:
-            $ref: "#/components/schemas/RiskFactors"
-          sexWorkRiskContacts:
-            $ref: "#/components/schemas/SexWorkRiskContact"
-    SexWorkRiskContact:
-      type: object
-      properties:
-        sexWorkLocations:
-          type: array
-          description: The locations where the patient engages in sex work.
-          example: "['BORDELLO','APARTMENT']"
-          items:
-            $ref: "#/components/schemas/SexWorkLocation"
-          uniqueItems: true
-        startInSexWorkDate:
-          type: string
-          format: date
-          description: The date when the patient began working in sex work.
-    SexualOrientation:
-      type: string
-      description: Represents the gender of the patient's sexual contacts over the
-        specified period.
-      enum:
-      - HETEROSEXUAL
-      - HOMOSEXUAL
-      - BISEXUAL
-      - NOT_SPECIFIED
-      example: BISEXUAL
-    SortDirection:
-      type: string
-      enum:
-      - ASC
-      - DESC
-    StiConsultationMedicalHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MedicalHistory"
-      - type: object
-        properties:
-          additionalComments:
-            type: string
-            description: An optional field for recording any additional remarks or
-              comments.
-          contactToClarifyDate:
-            type: string
-            format: date
-            description: Records the date of the contact the patients wished to discuss
-              or clarify.
-          currentSymptoms:
-            type: string
-            description: Details the symptoms the patient is currently experiencing.
-            example: Dysuria
-          examinationReason:
-            type: string
-            description: Specifies the reason for the patient's appointment.
-            example: Lower Abdominal Pain
-          examinations:
-            $ref: "#/components/schemas/Examination"
-          prevention:
-            $ref: "#/components/schemas/Prevention"
-          previousIllnesses:
-            $ref: "#/components/schemas/PreviousIllness"
-          relationshipModel:
-            $ref: "#/components/schemas/RelationshipModel"
-          riskContacts:
-            $ref: "#/components/schemas/RiskContact"
-          riskFactors:
-            $ref: "#/components/schemas/RiskFactors"
-    StiProtectionProcedure:
-      type: object
-      properties:
-        appointment:
-          $ref: "#/components/schemas/Appointment"
-        appointmentHistory:
-          type: array
-          items:
-            $ref: "#/components/schemas/AppointmentHistoryEntry"
-        concern:
-          $ref: "#/components/schemas/Concern"
-        createdAt:
-          type: string
-          format: date-time
-        id:
-          type: string
-          format: uuid
-        labStatus:
-          $ref: "#/components/schemas/LabStatus"
-        person:
-          $ref: "#/components/schemas/Person"
-        status:
-          $ref: "#/components/schemas/ProcedureStatus"
-        waitingRoom:
-          $ref: "#/components/schemas/WaitingRoom"
-      required:
-      - appointmentHistory
-      - concern
-      - createdAt
-      - id
-      - labStatus
-      - person
-      - status
-    StiProtectionProcedureOverview:
-      type: object
-      properties:
-        accessCode:
-          type: string
-        appointment:
-          $ref: "#/components/schemas/Appointment"
-        concern:
-          $ref: "#/components/schemas/Concern"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        createdAt:
-          type: string
-          format: date-time
-        gender:
-          $ref: "#/components/schemas/Gender"
-        id:
-          type: string
-          format: uuid
-        labStatus:
-          $ref: "#/components/schemas/LabStatus"
-        status:
-          $ref: "#/components/schemas/ProcedureStatus"
-        yearOfBirth:
-          type: integer
-          format: int32
-      required:
-      - accessCode
-      - concern
-      - createdAt
-      - gender
-      - id
-      - labStatus
-      - status
-      - yearOfBirth
-    StiProtectionProcedurePopulationRequest:
-      type: object
-      properties:
-        numberOfEntitiesToPopulate:
-          type: integer
-          format: int32
-      required:
-      - numberOfEntitiesToPopulate
-    StiProtectionProcedurePopulationResponse:
-      type: object
-      properties:
-        count:
-          type: integer
-          format: int64
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/CreateProcedureResponse"
-      required:
-      - count
-    SystemProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          changeDescription:
-            type: string
-          keyDocumentType:
-            type: string
-          keyDocumentVersion:
-            type: integer
-            format: int32
-          previousFileStateId:
-            type: string
-            format: uuid
-          systemProgressEntryType:
-            type: string
-          triggerType:
-            $ref: "#/components/schemas/TriggerType"
-          triggeredBy:
-            type: string
-            format: uuid
-          triggeredByUserFirstName:
-            type: string
-          triggeredByUserLastName:
-            type: string
-      - $ref: "#/components/schemas/KeyDocumentAwareProgressEntry"
-      required:
-      - createdAt
-      - modifiedAt
-      - progressEntryId
-      - systemProgressEntryType
-      - triggerType
-    Task:
-      type: object
-      properties:
-        assignedById:
-          type: string
-          format: uuid
-        assigneeId:
-          type: string
-          format: uuid
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        createdAt:
-          type: string
-          format: date-time
-        dueAt:
-          type: string
-          format: date-time
-        isOverdue:
-          type: boolean
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-        taskId:
-          type: string
-          format: uuid
-        taskStatus:
-          $ref: "#/components/schemas/TaskStatus"
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        version:
-          type: integer
-          format: int64
-      required:
-      - businessModule
-      - createdAt
-      - isOverdue
-      - modifiedAt
-      - procedureId
-      - summary
-      - taskId
-      - taskStatus
-      - taskType
-      - version
-    TaskMetric:
-      type: object
-      properties:
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        moreThanTwoOccurrencesCount:
-          type: integer
-          format: int32
-        noOccurrencesCount:
-          type: integer
-          format: int32
-        oneOccurrenceCount:
-          type: integer
-          format: int32
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        twoOccurrencesCount:
-          type: integer
-          format: int32
-      required:
-      - moreThanTwoOccurrencesCount
-      - noOccurrencesCount
-      - oneOccurrenceCount
-      - taskType
-      - twoOccurrencesCount
-    TaskResponse:
-      type: object
-      properties:
-        count:
-          type: integer
-          format: int64
-          description: total number of tasks for this query
-        tasks:
-          type: array
-          items:
-            $ref: "#/components/schemas/Task"
-          maxItems: 200
-          minItems: 0
-      required:
-      - count
-      - tasks
-    TaskStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    TaskType:
-      type: string
-      enum:
-      - BOOK_APPOINTMENT
-      - PERFORM_SCHOOL_ENTRY_EXAMINATION
-      - INSPECTION_PLANNING
-      - INSPECTION_EXECUTION
-      - INSPECTION_REPORT
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - OFFICIAL_MEDICAL_SERVICE
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
-    TestType:
-      type: string
-      enum:
-      - WESTERN_BLOT
-      - P24
-      - PCR
-      - OTHER
-    TextTemplate:
-      type: object
-      properties:
-        content:
-          type: string
-        context:
-          $ref: "#/components/schemas/TextTemplateContext"
-        externalId:
-          type: string
-          format: uuid
-        name:
-          type: string
-      required:
-      - content
-      - context
-      - externalId
-      - name
-    TextTemplateContext:
-      type: string
-      enum:
-      - CONSULTATION_REASON
-      - CONSULTATION_REMARK
-      - RAPID_TESTS_REMARK
-      - LABORATORY_TESTS_REMARK
-      - DIAGNOSIS_RESULT
-      - DIAGNOSIS_REMARK
-    Title:
-      type: string
-      enum:
-      - DR
-      - PROF
-      - PROF_DR
-    TriggerType:
-      type: string
-      enum:
-      - SYSTEM_AUTOMATIC
-      - EMPLOYEE
-      - CITIZEN
-    UpdateAppointmentRequest:
-      type: object
-      properties:
-        appointmentBookingType:
-          $ref: "#/components/schemas/AppointmentBookingType"
-        appointmentStart:
-          type: string
-          format: date-time
-        durationInMinutes:
-          type: integer
-          format: int32
-      required:
-      - appointmentBookingType
-      - appointmentStart
-      - durationInMinutes
-    UpdateAppointmentTypeRequest:
-      type: object
-      properties:
-        standardDurationInMinutes:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - standardDurationInMinutes
-    UpdatePersonDetailsRequest:
-      type: object
-      properties:
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        gender:
-          $ref: "#/components/schemas/Gender"
-        inGermanySince:
-          type: integer
-          format: int32
-        yearOfBirth:
-          type: integer
-          format: int32
-      required:
-      - gender
-      - yearOfBirth
-    User:
-      type: object
-      properties:
-        email:
-          type: string
-          description: The email address of a user.
-          example: example@mail.de
-        enabled:
-          type: boolean
-          description: "True, if the user can login"
-          example: false
-        externalChatUsername:
-          type: string
-          description: The chat username of the gematik TI-Messenger (matrix chat).
-          example: '@username:server'
-        firstName:
-          type: string
-          description: The given name(s) of a user.
-          example: John
-        lastName:
-          type: string
-          description: The last name of a user.
-          example: Doe
-        phoneNumber:
-          type: string
-          description: The phone number of a user.
-          example: "+491234567890"
-        userId:
-          type: string
-          format: uuid
-          description: The Id of the user.
-          example: fe9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        username:
-          type: string
-          description: The username which is displayed in the application and can
-            be used for the login.
-          example: testuser
-      required:
-      - enabled
-      - firstName
-      - lastName
-      - userId
-      - username
-    Vaccination:
-      type: string
-      description: Provides information on vaccinations the patient has received.
-      enum:
-      - HEPATITIS_A
-      - HEPATITIS_B
-      - HPV
-      example: "['HEPATITIS_A', 'HPV']"
-    ValidateAppointmentBlockGroupResponse:
-      type: object
-      properties:
-        userIdsWithEventConflicts:
-          type: array
-          items:
-            type: string
-            format: uuid
-        userIdsWithoutEventConflicts:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - userIdsWithEventConflicts
-      - userIdsWithoutEventConflicts
-    VerifyAnonymousUserPinRequest:
-      type: object
-      properties:
-        pin:
-          type: string
-          description: The PIN for verification
-          example: "654321"
-          pattern: "\\d{6}"
-      required:
-      - pin
-    WaitingRoom:
-      type: object
-      properties:
-        info:
-          type: string
-          description: "Optional field for additional information, such as room numbers\
-            \ or internal ticket system identifiers."
-          example: Waits in Room 3
-          maxLength: 60
-          minLength: 0
-        status:
-          $ref: "#/components/schemas/WaitingStatus"
-    WaitingRoomProcedure:
-      type: object
-      properties:
-        accessCode:
-          type: string
-        gender:
-          $ref: "#/components/schemas/Gender"
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        waitingRoom:
-          $ref: "#/components/schemas/WaitingRoom"
-        yearOfBirth:
-          type: object
-          properties:
-            leap:
-              type: boolean
-            value:
-              type: integer
-              format: int32
-      required:
-      - gender
-      - modifiedAt
-      - procedureId
-      - waitingRoom
-      - yearOfBirth
-    WaitingRoomSortKey:
-      type: string
-      enum:
-      - ID
-      - YEAR_OF_BIRTH
-      - GENDER
-      - STATUS
-      - INFO
-      - MODIFIED_AT
-    WaitingStatus:
-      type: string
-      description: Indicates the current status of the procedure waiting in the room.
-      enum:
-      - WAITING_FOR_CONSULTATION
-      - WAITING_FOR_RESULTS_REVIEW
-      - WAITING_FOR_TESTS
-      - IN_CONSULTATION
-      - IN_TESTING
-      - CANCELLED
-      - DONE
-      example: IN_CONSULTATION
diff --git a/backend/sti-protection/src/main/java/de/eshg/stiprotection/FollowUpProcedureService.java b/backend/sti-protection/src/main/java/de/eshg/stiprotection/FollowUpProcedureService.java
new file mode 100644
index 000000000..ad0dabcf9
--- /dev/null
+++ b/backend/sti-protection/src/main/java/de/eshg/stiprotection/FollowUpProcedureService.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+package de.eshg.stiprotection;
+
+import de.eshg.stiprotection.mapper.consultation.ConsultationMapper;
+import de.eshg.stiprotection.mapper.diagnosis.DiagnosisMapper;
+import de.eshg.stiprotection.mapper.medicalhistory.MedicalHistoryMapper;
+import de.eshg.stiprotection.persistence.db.StiProtectionProcedure;
+import de.eshg.stiprotection.persistence.db.consultation.Consultation;
+import de.eshg.stiprotection.persistence.db.diagnosis.Diagnosis;
+import de.eshg.stiprotection.persistence.db.examination.LaboratoryTestExamination;
+import de.eshg.stiprotection.persistence.db.examination.LaboratoryTestSamplesData;
+import de.eshg.stiprotection.persistence.db.medicalhistory.Examination;
+import de.eshg.stiprotection.persistence.db.medicalhistory.MedicalHistory;
+import de.eshg.stiprotection.persistence.db.medicalhistory.SexWorkMedicalHistory;
+import org.springframework.stereotype.Service;
+
+@Service
+public class FollowUpProcedureService {
+
+  private final MedicalHistoryService medicalHistoryService;
+
+  public FollowUpProcedureService(MedicalHistoryService medicalHistoryService) {
+    this.medicalHistoryService = medicalHistoryService;
+  }
+
+  public void transferFollowUpData(
+      StiProtectionProcedure procedure, StiProtectionProcedure followUpProcedure) {
+    transferConsultationData(procedure, followUpProcedure);
+    transferDiagnosisData(procedure, followUpProcedure);
+    transferMedicalHistoryData(procedure, followUpProcedure);
+  }
+
+  private void transferConsultationData(
+      StiProtectionProcedure procedure, StiProtectionProcedure followUpProcedure) {
+    Consultation followUpConsultation =
+        ConsultationMapper.update(
+            ConsultationMapper.toInterfaceType(procedure.getConsultation()), new Consultation());
+    followUpProcedure.setConsultation(followUpConsultation);
+  }
+
+  private void transferDiagnosisData(
+      StiProtectionProcedure procedure, StiProtectionProcedure followUpProcedure) {
+    Diagnosis followUpDiagnosis =
+        DiagnosisMapper.toDatabaseType(DiagnosisMapper.toInterfaceType(procedure.getDiagnosis()));
+    followUpDiagnosis.setResultsCommunicated(false);
+    followUpProcedure.setDiagnosis(followUpDiagnosis);
+  }
+
+  private void transferMedicalHistoryData(
+      StiProtectionProcedure procedure, StiProtectionProcedure followUpProcedure) {
+    MedicalHistory medicalHistory = procedure.getMedicalHistory();
+
+    if (medicalHistory != null) {
+      MedicalHistory followUpMedicalHistory =
+          medicalHistoryService.getOrCreateMedicalHistory(followUpProcedure.getExternalId());
+
+      if (medicalHistory instanceof SexWorkMedicalHistory
+          && followUpMedicalHistory instanceof SexWorkMedicalHistory) {
+        MedicalHistoryMapper.update(
+            MedicalHistoryMapper.toInterfaceType(medicalHistory), followUpMedicalHistory);
+      } else {
+        MedicalHistoryMapper.updateGeneralMedicalHistory(
+            MedicalHistoryMapper.toInterfaceType(medicalHistory), followUpMedicalHistory);
+      }
+
+      transferLaboratoryTestDataToMedicalHistory(procedure, followUpProcedure);
+    }
+  }
+
+  private void transferLaboratoryTestDataToMedicalHistory(
+      StiProtectionProcedure procedure, StiProtectionProcedure followUpProcedure) {
+    LaboratoryTestExamination laboratoryTestExamination = procedure.getLaboratoryTestExamination();
+    Examination examinations = followUpProcedure.getMedicalHistory().getExaminations();
+
+    if (laboratoryTestExamination != null) {
+      if (examinations == null) {
+        examinations = new Examination();
+        followUpProcedure.getMedicalHistory().setExaminations(examinations);
+      }
+      if (laboratoryTestExamination.getHepAData() != null) {
+        examinations.setHepA(laboratoryTestExamination.getHepAData().getResult());
+        examinations.setHepADate(laboratoryTestExamination.getTestsConductedDate());
+      }
+      if (laboratoryTestExamination.getHepBData() != null) {
+        examinations.setHepB(laboratoryTestExamination.getHepBData().getResult());
+        examinations.setHepBDate(laboratoryTestExamination.getTestsConductedDate());
+      }
+      if (laboratoryTestExamination.getHepCData() != null) {
+        examinations.setHepC(laboratoryTestExamination.getHepCData().getResult());
+        examinations.setHepCDate(laboratoryTestExamination.getTestsConductedDate());
+      }
+      if (laboratoryTestExamination.getHivData() != null) {
+        examinations.setHiv(laboratoryTestExamination.getHivData().getResult());
+        examinations.setHivDate(laboratoryTestExamination.getTestsConductedDate());
+      }
+      if (laboratoryTestExamination.getSyphilisData() != null) {
+        examinations.setSyphilis(laboratoryTestExamination.getSyphilisData().getResult());
+        examinations.setSyphilisDate(laboratoryTestExamination.getTestsConductedDate());
+      }
+      if (laboratoryTestExamination.getGonorrheaTestSamples() != null) {
+        LaboratoryTestSamplesData gonorrheaTestSamples =
+            laboratoryTestExamination.getGonorrheaTestSamples();
+        boolean gonorrhea =
+            gonorrheaTestSamples.getAnalSampleData().getResult()
+                || gonorrheaTestSamples.getOralSampleData().getResult()
+                || gonorrheaTestSamples.getUrethralSampleData().getResult();
+        examinations.setGonorrhea(gonorrhea);
+        examinations.setGonorrheaDate(laboratoryTestExamination.getTestsConductedDate());
+      }
+      if (laboratoryTestExamination.getChlamydiaTestSamples() != null) {
+        LaboratoryTestSamplesData chlamydiaTestSamples =
+            laboratoryTestExamination.getChlamydiaTestSamples();
+        boolean chlamydia =
+            chlamydiaTestSamples.getAnalSampleData().getResult()
+                || chlamydiaTestSamples.getOralSampleData().getResult()
+                || chlamydiaTestSamples.getUrethralSampleData().getResult();
+        examinations.setChlamydia(chlamydia);
+        examinations.setChlamydiaDate(laboratoryTestExamination.getTestsConductedDate());
+      }
+    }
+  }
+}
diff --git a/backend/sti-protection/src/main/java/de/eshg/stiprotection/MedicalHistoryService.java b/backend/sti-protection/src/main/java/de/eshg/stiprotection/MedicalHistoryService.java
index 7d5a9945a..14518788b 100644
--- a/backend/sti-protection/src/main/java/de/eshg/stiprotection/MedicalHistoryService.java
+++ b/backend/sti-protection/src/main/java/de/eshg/stiprotection/MedicalHistoryService.java
@@ -7,6 +7,7 @@ package de.eshg.stiprotection;
 
 import de.eshg.stiprotection.persistence.db.Concern;
 import de.eshg.stiprotection.persistence.db.StiProtectionProcedure;
+import de.eshg.stiprotection.persistence.db.medicalhistory.Examination;
 import de.eshg.stiprotection.persistence.db.medicalhistory.MedicalHistory;
 import de.eshg.stiprotection.persistence.db.medicalhistory.SexWorkMedicalHistory;
 import de.eshg.stiprotection.persistence.db.medicalhistory.StiConsultationMedicalHistory;
@@ -39,10 +40,12 @@ public class MedicalHistoryService {
       if (procedure.getConcern() == Concern.HIV_STI_CONSULTATION) {
         StiConsultationMedicalHistory stiConsultationMedicalHistory =
             new StiConsultationMedicalHistory();
+        stiConsultationMedicalHistory.setExaminations(new Examination());
         procedure.setMedicalHistory(stiConsultationMedicalHistory);
         return stiConsultationMedicalHistory;
       } else {
         SexWorkMedicalHistory sexWorkMedicalHistory = new SexWorkMedicalHistory();
+        sexWorkMedicalHistory.setExaminations(new Examination());
         procedure.setMedicalHistory(sexWorkMedicalHistory);
         return sexWorkMedicalHistory;
       }
diff --git a/backend/sti-protection/src/main/java/de/eshg/stiprotection/StiProtectionProcedureController.java b/backend/sti-protection/src/main/java/de/eshg/stiprotection/StiProtectionProcedureController.java
index 760cbbc71..72d1016e6 100644
--- a/backend/sti-protection/src/main/java/de/eshg/stiprotection/StiProtectionProcedureController.java
+++ b/backend/sti-protection/src/main/java/de/eshg/stiprotection/StiProtectionProcedureController.java
@@ -5,6 +5,8 @@
 
 package de.eshg.stiprotection;
 
+import static de.eshg.stiprotection.persistence.db.StiProtectionSystemProgressEntryType.FOLLOW_UP_CREATED;
+
 import de.eshg.api.commons.InlineParameterObject;
 import de.eshg.lib.auditlog.AuditLogger;
 import de.eshg.lib.procedure.domain.model.Pdf;
@@ -13,6 +15,8 @@ import de.eshg.rest.service.security.CurrentUserHelper;
 import de.eshg.rest.service.security.config.BaseUrls;
 import de.eshg.stiprotection.annotations.ProcedureStatusTransition;
 import de.eshg.stiprotection.api.CreateAppointmentRequest;
+import de.eshg.stiprotection.api.CreateFollowUpProcedureRequest;
+import de.eshg.stiprotection.api.CreateFollowUpProcedureResponse;
 import de.eshg.stiprotection.api.CreateProcedureRequest;
 import de.eshg.stiprotection.api.CreateProcedureResponse;
 import de.eshg.stiprotection.api.GetProcedureResponse;
@@ -42,7 +46,6 @@ import jakarta.validation.Valid;
 import java.nio.charset.StandardCharsets;
 import java.util.Map;
 import java.util.UUID;
-import org.apache.commons.lang3.RandomStringUtils;
 import org.springdoc.core.annotations.ParameterObject;
 import org.springframework.http.ContentDisposition;
 import org.springframework.http.HttpHeaders;
@@ -71,6 +74,7 @@ public class StiProtectionProcedureController {
   private final StiProtectionProcedureDeletionService procedureDeletionService;
   private final StiProtectionProcedureFinder procedureFinder;
   private final ProgressEntryUtil progressEntryUtil;
+  private final FollowUpProcedureService followUpProcedureService;
 
   public StiProtectionProcedureController(
       StiProtectionProcedureService stiProtectionService,
@@ -78,13 +82,15 @@ public class StiProtectionProcedureController {
       AuditLogger auditLogger,
       StiProtectionProcedureDeletionService procedureDeletionService,
       StiProtectionProcedureFinder procedureFinder,
-      ProgressEntryUtil progressEntryUtil) {
+      ProgressEntryUtil progressEntryUtil,
+      FollowUpProcedureService followUpProcedureService) {
     this.stiProtectionService = stiProtectionService;
     this.appointmentService = appointmentService;
     this.auditLogger = auditLogger;
     this.procedureDeletionService = procedureDeletionService;
     this.procedureFinder = procedureFinder;
     this.progressEntryUtil = progressEntryUtil;
+    this.followUpProcedureService = followUpProcedureService;
   }
 
   @PostMapping
@@ -95,7 +101,7 @@ public class StiProtectionProcedureController {
         stiProtectionService.createProcedure(ConcernMapper.toDatabaseType(request.concern()));
     stiProtectionService.addPerson(procedure, PersonMapper.toDataType(request));
     appointmentService.createAppointment(procedure, AppointmentMapper.toDataType(request));
-    String pin = RandomStringUtils.secure().nextNumeric(6);
+    String pin = stiProtectionService.generatePin();
     stiProtectionService.registerAnonymousUser(procedure, pin);
     return StiProtectionProcedureMapper.toInterfaceType(procedure, pin);
   }
@@ -191,7 +197,7 @@ public class StiProtectionProcedureController {
   public void closeProcedure(@PathVariable("id") UUID procedureId) {
     StiProtectionProcedure procedure = procedureFinder.findByExternalId(procedureId);
     appointmentService.cancelAppointment(procedure);
-    stiProtectionService.closeProcedure(procedureId, procedure);
+    stiProtectionService.closeProcedure(procedure);
   }
 
   @PutMapping("/{id}/reopen")
@@ -242,4 +248,32 @@ public class StiProtectionProcedureController {
     procedureDeletionService.deleteAndWriteToCemetery(
         procedureFinder.findByExternalId(procedureId));
   }
+
+  @PostMapping("/{id}/follow-up")
+  @Transactional
+  @ProcedureStatusTransition
+  public CreateFollowUpProcedureResponse createFollowUpProcedure(
+      @PathVariable("id") UUID procedureId,
+      @Valid @RequestBody CreateFollowUpProcedureRequest request) {
+    StiProtectionProcedure procedure = procedureFinder.findByExternalId(procedureId);
+    // Todo remove old access code user
+    if (procedure.getProcedureStatus().isOpen()) {
+      appointmentService.cancelAppointment(procedure);
+      stiProtectionService.closeProcedure(procedure);
+    }
+
+    StiProtectionProcedure followUpProcedure =
+        stiProtectionService.createProcedure(ConcernMapper.toDatabaseType(request.concern()));
+    followUpProcedure.setFollowUp(true);
+    stiProtectionService.addPerson(
+        followUpProcedure, PersonMapper.toDataType(procedure.getPerson()));
+    appointmentService.createAppointment(followUpProcedure, AppointmentMapper.toDataType(request));
+    String pin = stiProtectionService.generatePin();
+    stiProtectionService.registerAnonymousUser(followUpProcedure, pin);
+
+    followUpProcedureService.transferFollowUpData(procedure, followUpProcedure);
+
+    progressEntryUtil.addProgressEntry(followUpProcedure.getExternalId(), FOLLOW_UP_CREATED);
+    return new CreateFollowUpProcedureResponse(followUpProcedure.getExternalId(), pin);
+  }
 }
diff --git a/backend/sti-protection/src/main/java/de/eshg/stiprotection/StiProtectionProcedureService.java b/backend/sti-protection/src/main/java/de/eshg/stiprotection/StiProtectionProcedureService.java
index 5b7eb4623..67db54541 100644
--- a/backend/sti-protection/src/main/java/de/eshg/stiprotection/StiProtectionProcedureService.java
+++ b/backend/sti-protection/src/main/java/de/eshg/stiprotection/StiProtectionProcedureService.java
@@ -60,6 +60,7 @@ import java.time.Clock;
 import java.time.Instant;
 import java.util.List;
 import java.util.UUID;
+import org.apache.commons.lang3.RandomStringUtils;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.jpa.domain.Specification;
@@ -196,8 +197,11 @@ public class StiProtectionProcedureService {
 
   private StiProtectionProcedureData toProcedureData(StiProtectionProcedure procedure) {
     UUID anonymousUserId = procedure.getPerson().getAnonymousUserId();
-    return new StiProtectionProcedureData(
-        procedure, citizenAccessCodeUserApi.getCitizenAccessCodeUser(anonymousUserId).accessCode());
+    String accessCode =
+        anonymousUserId != null
+            ? citizenAccessCodeUserApi.getCitizenAccessCodeUser(anonymousUserId).accessCode()
+            : null;
+    return new StiProtectionProcedureData(procedure, accessCode);
   }
 
   public StiProtectionProcedureData getProcedure(UUID procedureId) {
@@ -214,12 +218,13 @@ public class StiProtectionProcedureService {
     progressEntryUtil.addProgressEntry(procedureId, PERSON_DETAILS_UPDATED);
   }
 
-  public void closeProcedure(UUID procedureId, StiProtectionProcedure procedure) {
+  public void closeProcedure(StiProtectionProcedure procedure) {
     ProcedureStatus procedureStatus = procedure.getProcedureStatus();
     if (procedureStatus.isOpen()) {
+      deleteAnonymousUser(procedure);
       procedure.updateProcedureStatus(ProcedureStatus.CLOSED, clock, auditLogger);
     } else {
-      throw unexpectedProcedureStatus(procedureId, procedureStatus);
+      throw unexpectedProcedureStatus(procedure.getExternalId(), procedureStatus);
     }
   }
 
@@ -265,6 +270,10 @@ public class StiProtectionProcedureService {
     return accessCode;
   }
 
+  public String generatePin() {
+    return RandomStringUtils.secure().nextNumeric(6);
+  }
+
   public void registerAnonymousUser(StiProtectionProcedure procedure, String pin) {
     UUID anonymousUserId = procedure.getPerson().getAnonymousUserId();
     if (anonymousUserId != null) {
@@ -276,6 +285,15 @@ public class StiProtectionProcedureService {
     procedure.getPerson().setAnonymousUserId(user.userId());
   }
 
+  public void deleteAnonymousUser(StiProtectionProcedure procedure) {
+    UUID anonymousUserId = procedure.getPerson().getAnonymousUserId();
+    if (anonymousUserId == null) {
+      throw new BadRequestException("User already deleted.");
+    }
+    citizenAccessCodeUserApi.deleteCitizenAccessCodeUser(anonymousUserId);
+    procedure.getPerson().setAnonymousUserId(null);
+  }
+
   public void verifyAnonymousUserPin(UUID procedureId, String pin) {
     StiProtectionProcedure procedure = procedureFinder.findByExternalId(procedureId);
     Person person = procedure.getPerson();
diff --git a/backend/sti-protection/src/main/java/de/eshg/stiprotection/api/CreateFollowUpProcedureRequest.java b/backend/sti-protection/src/main/java/de/eshg/stiprotection/api/CreateFollowUpProcedureRequest.java
new file mode 100644
index 000000000..0ee7bce98
--- /dev/null
+++ b/backend/sti-protection/src/main/java/de/eshg/stiprotection/api/CreateFollowUpProcedureRequest.java
@@ -0,0 +1,16 @@
+/*
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+package de.eshg.stiprotection.api;
+
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Positive;
+import java.time.Instant;
+
+public record CreateFollowUpProcedureRequest(
+    @NotNull ConcernDto concern,
+    @NotNull AppointmentBookingTypeDto appointmentBookingType,
+    @NotNull Instant appointmentStart,
+    @NotNull @Positive Integer durationInMinutes) {}
diff --git a/backend/sti-protection/src/main/java/de/eshg/stiprotection/api/CreateFollowUpProcedureResponse.java b/backend/sti-protection/src/main/java/de/eshg/stiprotection/api/CreateFollowUpProcedureResponse.java
new file mode 100644
index 000000000..be8ae472e
--- /dev/null
+++ b/backend/sti-protection/src/main/java/de/eshg/stiprotection/api/CreateFollowUpProcedureResponse.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+package de.eshg.stiprotection.api;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
+import java.util.UUID;
+
+public record CreateFollowUpProcedureResponse(
+    @NotNull UUID procedureId,
+    @Schema(description = "The PIN for anonymous authorization.", example = "654321")
+        @NotBlank
+        @Pattern(regexp = "\\d{6}", message = "The PIN must contain exactly 6 digits")
+        String pin) {}
diff --git a/backend/sti-protection/src/main/java/de/eshg/stiprotection/api/GetProcedureResponse.java b/backend/sti-protection/src/main/java/de/eshg/stiprotection/api/GetProcedureResponse.java
index 55a60fc1c..71ba4c961 100644
--- a/backend/sti-protection/src/main/java/de/eshg/stiprotection/api/GetProcedureResponse.java
+++ b/backend/sti-protection/src/main/java/de/eshg/stiprotection/api/GetProcedureResponse.java
@@ -21,6 +21,7 @@ public record GetProcedureResponse(
     @NotNull Instant createdAt,
     @NotNull ProcedureStatusDto status,
     @NotNull ConcernDto concern,
+    @NotNull Boolean isFollowUp,
     @NotNull @Valid PersonDto person,
     @Valid AppointmentDto appointment,
     @NotNull @Valid List<AppointmentHistoryEntryDto> appointmentHistory,
diff --git a/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/AppointmentMapper.java b/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/AppointmentMapper.java
index 28e27b91c..9f1506a1e 100644
--- a/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/AppointmentMapper.java
+++ b/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/AppointmentMapper.java
@@ -10,6 +10,7 @@ import de.eshg.lib.appointmentblock.api.AppointmentDto;
 import de.eshg.lib.appointmentblock.persistence.AppointmentType;
 import de.eshg.lib.appointmentblock.persistence.entity.Appointment;
 import de.eshg.stiprotection.api.CreateAppointmentRequest;
+import de.eshg.stiprotection.api.CreateFollowUpProcedureRequest;
 import de.eshg.stiprotection.api.CreateProcedureRequest;
 import de.eshg.stiprotection.api.UpdateAppointmentRequest;
 import de.eshg.stiprotection.persistence.data.AppointmentBookingType;
@@ -67,4 +68,12 @@ public class AppointmentMapper {
         request.appointmentStart(),
         request.durationInMinutes());
   }
+
+  public static AppointmentData toDataType(CreateFollowUpProcedureRequest request) {
+    return new AppointmentData(
+        AppointmentBookingType.valueOf(request.appointmentBookingType().name()),
+        AppointmentType.valueOf(request.concern().name()),
+        request.appointmentStart(),
+        request.durationInMinutes());
+  }
 }
diff --git a/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/PersonMapper.java b/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/PersonMapper.java
index 997332ea1..08058d4bb 100644
--- a/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/PersonMapper.java
+++ b/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/PersonMapper.java
@@ -41,6 +41,14 @@ public class PersonMapper {
         request.inGermanySince());
   }
 
+  public static PersonData toDataType(Person entity) {
+    return new PersonData(
+        entity.getGender(),
+        entity.getYearOfBirth(),
+        entity.getCountryOfBirth(),
+        entity.getInGermanySince());
+  }
+
   public static Person toDatabaseType(PersonData data) {
     Person person = new Person();
     person.setGender(data.gender());
diff --git a/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/StiProtectionProcedureMapper.java b/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/StiProtectionProcedureMapper.java
index 0fbaadb9b..11196485b 100644
--- a/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/StiProtectionProcedureMapper.java
+++ b/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/StiProtectionProcedureMapper.java
@@ -28,6 +28,7 @@ public class StiProtectionProcedureMapper {
         procedureData.createdAt(),
         ProcedureMapper.toInterfaceType(procedureData.status()),
         ConcernMapper.toInterfaceType(procedureData.concern()),
+        procedureData.isFollowUp(),
         PersonMapper.toInterfaceType(procedureData.person(), procedureData.accessCode()),
         AppointmentMapper.toInterfaceType(
             procedureData.appointment(), procedureData.userDefinedAppointment()),
diff --git a/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/diagnosis/DiagnosisMapper.java b/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/diagnosis/DiagnosisMapper.java
index d0a5f48bb..ed760365d 100644
--- a/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/diagnosis/DiagnosisMapper.java
+++ b/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/diagnosis/DiagnosisMapper.java
@@ -30,6 +30,21 @@ public class DiagnosisMapper {
         entity.getResultsCommunicated());
   }
 
+  public static DiagnosisDto toInterfaceType(Diagnosis entity) {
+    if (entity == null) {
+      return new DiagnosisDto(null, null, null, null, null, null, false);
+    }
+
+    return new DiagnosisDto(
+        entity.getResults(),
+        MedicationMapper.toInterfaceType(entity.getMedications()),
+        null,
+        TestTypeMapper.toInterfaceType(entity.getTestTypes()),
+        entity.getOtherTestTypeName(),
+        entity.getGeneralRemarks(),
+        entity.getResultsCommunicated());
+  }
+
   public static Diagnosis toDatabaseType(DiagnosisDto dto) {
     if (dto == null) {
       return null;
diff --git a/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/medicalhistory/MedicalHistoryMapper.java b/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/medicalhistory/MedicalHistoryMapper.java
index e7020bb55..ccf8ccc5c 100644
--- a/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/medicalhistory/MedicalHistoryMapper.java
+++ b/backend/sti-protection/src/main/java/de/eshg/stiprotection/mapper/medicalhistory/MedicalHistoryMapper.java
@@ -106,7 +106,7 @@ public final class MedicalHistoryMapper {
     return updateGeneralMedicalHistory(dto, entity);
   }
 
-  private static MedicalHistory updateGeneralMedicalHistory(
+  public static MedicalHistory updateGeneralMedicalHistory(
       MedicalHistoryDto dto, MedicalHistory entity) {
     entity.setExaminationReason(dto.examinationReason());
     entity.setCurrentSymptoms(dto.currentSymptoms());
diff --git a/backend/sti-protection/src/main/java/de/eshg/stiprotection/persistence/data/StiProtectionProcedureData.java b/backend/sti-protection/src/main/java/de/eshg/stiprotection/persistence/data/StiProtectionProcedureData.java
index 1b6756051..c0af713ab 100644
--- a/backend/sti-protection/src/main/java/de/eshg/stiprotection/persistence/data/StiProtectionProcedureData.java
+++ b/backend/sti-protection/src/main/java/de/eshg/stiprotection/persistence/data/StiProtectionProcedureData.java
@@ -34,6 +34,10 @@ public record StiProtectionProcedureData(StiProtectionProcedure procedure, Strin
     return procedure.getConcern();
   }
 
+  public Boolean isFollowUp() {
+    return procedure.isFollowUp();
+  }
+
   public Person person() {
     return procedure.getPerson();
   }
diff --git a/backend/sti-protection/src/main/java/de/eshg/stiprotection/persistence/db/StiProtectionProcedure.java b/backend/sti-protection/src/main/java/de/eshg/stiprotection/persistence/db/StiProtectionProcedure.java
index 65169ab18..7f15f64f2 100644
--- a/backend/sti-protection/src/main/java/de/eshg/stiprotection/persistence/db/StiProtectionProcedure.java
+++ b/backend/sti-protection/src/main/java/de/eshg/stiprotection/persistence/db/StiProtectionProcedure.java
@@ -53,6 +53,10 @@ public class StiProtectionProcedure
   @Column(nullable = false)
   private Concern concern;
 
+  @DataSensitivity(SensitivityLevel.PSEUDONYMIZED)
+  @Column(nullable = false)
+  private Boolean isFollowUp = false;
+
   @DataSensitivity(SensitivityLevel.PSEUDONYMIZED)
   @OneToOne(
       mappedBy = MedicalHistory_.PROCEDURE,
@@ -144,6 +148,14 @@ public class StiProtectionProcedure
     this.concern = concern;
   }
 
+  public Boolean isFollowUp() {
+    return isFollowUp;
+  }
+
+  public void setFollowUp(Boolean followUp) {
+    isFollowUp = followUp;
+  }
+
   public MedicalHistory getMedicalHistory() {
     return medicalHistory;
   }
diff --git a/backend/sti-protection/src/main/java/de/eshg/stiprotection/persistence/db/StiProtectionSystemProgressEntryType.java b/backend/sti-protection/src/main/java/de/eshg/stiprotection/persistence/db/StiProtectionSystemProgressEntryType.java
index e7fcf1ab6..4fd39fb42 100644
--- a/backend/sti-protection/src/main/java/de/eshg/stiprotection/persistence/db/StiProtectionSystemProgressEntryType.java
+++ b/backend/sti-protection/src/main/java/de/eshg/stiprotection/persistence/db/StiProtectionSystemProgressEntryType.java
@@ -14,7 +14,8 @@ public enum StiProtectionSystemProgressEntryType {
   APPOINTMENT_CANCELLED("Ein Termin wurde storniert."),
   MEDICAL_HISTORY_UPDATED("Der Anamnesebogen wurde aktualisiert."),
   CONSULTATION_UPDATED("Die Konsultation wurde aktualisiert."),
-  DIAGNOSIS_UPDATED("Die Diagnose wurde aktualisiert.");
+  DIAGNOSIS_UPDATED("Die Diagnose wurde aktualisiert."),
+  FOLLOW_UP_CREATED("Dieser Folgevorgang wurde aus einem vorherigem Vorgang erstellt.");
 
   private final String changeDescription;
 
diff --git a/backend/sti-protection/src/main/resources/migrations/0044_add_follow_up_flag.xml b/backend/sti-protection/src/main/resources/migrations/0044_add_follow_up_flag.xml
new file mode 100644
index 000000000..1d7ad7d56
--- /dev/null
+++ b/backend/sti-protection/src/main/resources/migrations/0044_add_follow_up_flag.xml
@@ -0,0 +1,15 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<!--
+ Copyright 2025 cronn GmbH
+ SPDX-License-Identifier: AGPL-3.0-only
+-->
+
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
+    <changeSet author="GA-Lotse" id="1737720594793-1">
+        <addColumn tableName="sti_protection_procedure">
+            <column name="is_follow_up" type="BOOLEAN">
+                <constraints nullable="false"/>
+            </column>
+        </addColumn>
+    </changeSet>
+</databaseChangeLog>
diff --git a/backend/sti-protection/src/main/resources/migrations/changelog.xml b/backend/sti-protection/src/main/resources/migrations/changelog.xml
index 2407f4db3..442c59cbc 100644
--- a/backend/sti-protection/src/main/resources/migrations/changelog.xml
+++ b/backend/sti-protection/src/main/resources/migrations/changelog.xml
@@ -51,5 +51,6 @@
   <include file="migrations/0041_add_countrycodes.xml"/>
   <include file="migrations/0042_add_previous_file_state_id_to_system_progress_entry.xml"/>
   <include file="migrations/0043_add_text_templates.xml"/>
+  <include file="migrations/0044_add_follow_up_flag.xml"/>
 
 </databaseChangeLog>
diff --git a/backend/test-commons/src/main/java/de/eshg/base/PostgresContainerConstants.java b/backend/test-commons/src/main/java/de/eshg/base/PostgresContainerConstants.java
deleted file mode 100644
index 56e6a4e5e..000000000
--- a/backend/test-commons/src/main/java/de/eshg/base/PostgresContainerConstants.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright 2025 cronn GmbH
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package de.eshg.base;
-
-import java.util.Map;
-import org.testcontainers.utility.DockerImageName;
-
-public final class PostgresContainerConstants {
-
-  private PostgresContainerConstants() {}
-
-  public static final DockerImageName POSTGRES_DOCKER_IMAGE =
-      DockerImageName.parse(
-          "postgres@sha256:d0f363f8366fbc3f52d172c6e76bc27151c3d643b870e1062b4e8bfe65baf609");
-  public static final int POSTGRES_PORT = 5432;
-  public static final String POSTGRES_URL_TEMPLATE = "jdbc:postgresql://%s:%s/%s";
-  public static final String POSTGRES_PASSWORD = "testpassword";
-  public static final String POSTGRES_USER = "testuser";
-  public static final Map<String, String> TMPFS = Map.of("/var/lib/postgresql/data", "rw");
-}
diff --git a/backend/test-commons/src/main/java/de/eshg/base/PostgresTestContainer.java b/backend/test-commons/src/main/java/de/eshg/base/PostgresTestContainer.java
new file mode 100644
index 000000000..497c77b9f
--- /dev/null
+++ b/backend/test-commons/src/main/java/de/eshg/base/PostgresTestContainer.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package de.eshg.base;
+
+import java.time.Duration;
+import java.util.Map;
+import java.util.function.Consumer;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.Network;
+import org.testcontainers.containers.output.OutputFrame;
+import org.testcontainers.utility.DockerImageName;
+
+public class PostgresTestContainer {
+
+  // âš  Note âš 
+  // We explicitly use the version AND digest here to match the image name
+  // used in docker-compose.yaml
+  // Unfortunately, because of https://github.com/testcontainers/testcontainers-java/issues/4762
+  // this means that we need to use GenericContainer instead of PostgreSQLContainer.
+  private static final DockerImageName POSTGRES_DOCKER_IMAGE =
+      DockerImageName.parse(
+          "postgres:15.8@sha256:eb3747f5d0a92195ca486d2f15d9a4ee5e9461b0332fe87fbc59069490a5c659");
+  public static final int POSTGRES_PORT = 5432;
+  public static final String POSTGRES_URL_TEMPLATE = "jdbc:postgresql://%s:%s/%s";
+  private static final String POSTGRES_PASSWORD = "testpassword";
+  private static final String POSTGRES_USER = "testuser";
+  private static final Map<String, String> TMPFS = Map.of("/var/lib/postgresql/data", "rw");
+
+  private final Network network;
+  private String networkAlias;
+  private String databaseName = "database";
+  private Map<String, String> env;
+  private Consumer<OutputFrame> logConsumer;
+
+  private PostgresTestContainer(Network network) {
+    this.network = network;
+  }
+
+  public static PostgresTestContainer withDefaultNetwork() {
+    return new PostgresTestContainer(null);
+  }
+
+  public static PostgresTestContainer withNetwork(Network network) {
+    return new PostgresTestContainer(network);
+  }
+
+  public PostgresTestContainer withDatabaseName(String databaseName) {
+    this.databaseName = databaseName;
+    return this;
+  }
+
+  public PostgresTestContainer withNetworkAlias(String networkAlias) {
+    this.networkAlias = networkAlias;
+    return this;
+  }
+
+  public PostgresTestContainer withEnv(Map<String, String> env) {
+    this.env = env;
+    return this;
+  }
+
+  public PostgresTestContainer withLogConsumer(Consumer<OutputFrame> logConsumer) {
+    this.logConsumer = logConsumer;
+    return this;
+  }
+
+  public GenericContainer<?> start() {
+    // âš  Note âš  - We cannot use PostgreSQLContainer here because of
+    // https://github.com/testcontainers/testcontainers-java/issues/4762
+    @SuppressWarnings("resource") // TestContainers’ Ryuk takes care of destroying it
+    GenericContainer<?> container =
+        new GenericContainer<>(POSTGRES_DOCKER_IMAGE)
+            .withExposedPorts(POSTGRES_PORT)
+            .withTmpFs(TMPFS)
+            .withEnv("POSTGRES_DB", databaseName)
+            .withEnv("POSTGRES_USER", POSTGRES_USER)
+            .withEnv("POSTGRES_PASSWORD", POSTGRES_PASSWORD)
+            .withStartupTimeout(Duration.ofMinutes(3))
+            .withCreateContainerCmdModifier(
+                command ->
+                    command.withName(TestContainersUtil.generateName(databaseName + "-database")));
+
+    if (network != null) {
+      container = container.withNetwork(network);
+    }
+
+    if (networkAlias != null) {
+      container = container.withNetworkAliases(networkAlias);
+    }
+
+    if (env != null) {
+      container = container.withEnv(env);
+    }
+
+    if (logConsumer != null) {
+      container = container.withLogConsumer(logConsumer);
+    }
+
+    container.start();
+    return container;
+  }
+
+  public String startAndGetJdbcUrl() {
+    GenericContainer<?> container = start();
+    return getJdbcUrl(container);
+  }
+
+  public void startAndRegister(DynamicPropertyRegistry registry) {
+    String jdbcUrl = startAndGetJdbcUrl();
+    registry.add("spring.datasource.url", () -> jdbcUrl);
+    registry.add("spring.datasource.username", () -> POSTGRES_USER);
+    registry.add("spring.datasource.password", () -> POSTGRES_PASSWORD);
+  }
+
+  private String getJdbcUrl(GenericContainer<?> container) {
+    return POSTGRES_URL_TEMPLATE.formatted(
+        container.getHost(), container.getMappedPort(POSTGRES_PORT), databaseName);
+  }
+
+  public static String getJdbcUrl(String networkAlias, String databaseName) {
+    return POSTGRES_URL_TEMPLATE.formatted(networkAlias, POSTGRES_PORT, databaseName);
+  }
+}
diff --git a/backend/test-commons/src/main/java/de/eshg/base/auth/AuthorizationTestUtil.java b/backend/test-commons/src/main/java/de/eshg/base/auth/AuthorizationTestUtil.java
index cb04c690d..e73a6bdbf 100644
--- a/backend/test-commons/src/main/java/de/eshg/base/auth/AuthorizationTestUtil.java
+++ b/backend/test-commons/src/main/java/de/eshg/base/auth/AuthorizationTestUtil.java
@@ -30,7 +30,7 @@ public final class AuthorizationTestUtil {
   private static final String DEFAULT_PATH_PARAM_VALUE = "1";
 
   private static final List<String> DEFAULT_IGNORED_PATH_PREFIXES =
-      List.of("/api-docs", "/test-helper", "/simulator");
+      List.of("/v3/api-docs", "/test-helper", "/simulator");
 
   /**
    * See {@link
diff --git a/backend/test-commons/src/main/java/de/eshg/rest/RestHelper.java b/backend/test-commons/src/main/java/de/eshg/rest/RestHelper.java
index ea9d35a07..c5ccc09f5 100644
--- a/backend/test-commons/src/main/java/de/eshg/rest/RestHelper.java
+++ b/backend/test-commons/src/main/java/de/eshg/rest/RestHelper.java
@@ -6,10 +6,14 @@
 package de.eshg.rest;
 
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
 public class RestHelper {
+  public static String queryTemplate(Collection<String> queryKeys) {
+    return queryTemplate(queryKeys.toArray(new String[0]));
+  }
 
   public static String queryTemplate(String... queryVariables) {
     return Arrays.stream(queryVariables)
diff --git a/backend/travel-medicine/openApi.json b/backend/travel-medicine/openApi.json
new file mode 100644
index 000000000..1bed10406
--- /dev/null
+++ b/backend/travel-medicine/openApi.json
@@ -0,0 +1,9646 @@
+{
+  "openapi" : "3.0.1",
+  "info" : {
+    "description" : "This is the api for the travel medicine module",
+    "title" : "Travel Medicine Module Api",
+    "version" : "0.1"
+  },
+  "servers" : [ {
+    "url" : "http://localhost:8085"
+  } ],
+  "paths" : {
+    "/appointment-blocks/appointment-block-groups" : {
+      "get" : {
+        "operationId" : "getAppointmentBlockGroups",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/AppointmentBlockSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAppointmentBlockGroupsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all appointment block groups.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-blocks/daily-appointment-block-groups" : {
+      "post" : {
+        "operationId" : "createDailyAppointmentBlocksForGroup",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CreateAppointmentBlockGroupResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create appointment group with blocks for week days.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-blocks/daily-appointment-block-groups/validate" : {
+      "post" : {
+        "operationId" : "validateDailyAppointmentBlocksForGroup",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ValidateAppointmentBlockGroupResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create appointment group with blocks for week days.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-blocks/free-appointments" : {
+      "get" : {
+        "operationId" : "getFreeAppointments",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "appointmentType",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "earliestDate",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "physicianId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFreeAppointmentsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get free appointments for an appointment type.",
+        "tags" : [ "AppointmentBlock" ]
+      }
+    },
+    "/appointment-types" : {
+      "get" : {
+        "operationId" : "getAppointmentTypes",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAppointmentTypesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets all Appointment Types",
+        "tags" : [ "AppointmentType" ]
+      }
+    },
+    "/appointment-types/{id}" : {
+      "get" : {
+        "operationId" : "getOneAppointmentType",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AppointmentTypeConfig"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets one Appointment Type by ID",
+        "tags" : [ "AppointmentType" ]
+      },
+      "put" : {
+        "operationId" : "updateAppointmentType",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/UpdateAppointmentTypeRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AppointmentTypeConfig"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modifies an existing Appointment Type",
+        "tags" : [ "AppointmentType" ]
+      }
+    },
+    "/approval-requests/{approvalRequestId}" : {
+      "get" : {
+        "operationId" : "getApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/approval-requests/{approvalRequestId}/decision" : {
+      "put" : {
+        "operationId" : "decideApprovalRequest",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "approvalRequestId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/Decision"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "ApprovalRequest" ]
+      }
+    },
+    "/archiving/config" : {
+      "get" : {
+        "operationId" : "getArchivingConfiguration",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetArchivingConfigurationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get archiving configuration",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/procedures" : {
+      "get" : {
+        "operationId" : "getArchivableProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `procedureType` is submitted, only procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `closedAtDay` is set, only procedures are returned which were closed at that date\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "closedAtDay",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `defaultArchivingRelevance` is submitted, only procedures are returned which have one of the submitted default archiving relevances.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "defaultArchivingRelevance",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ArchivingRelevance"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CLOSED_AT`: Sorting by closedAt attribute\n- `PROCEDURE_TYPE`: Sorting by procedureType attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetArchivableProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetArchivableProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetArchivableProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get archivable procedures",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/procedures/bulk-update-archiving-relevance" : {
+      "post" : {
+        "operationId" : "bulkUpdateProceduresArchivingRelevance",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/BulkUpdateProceduresArchivingRelevanceRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/BulkUpdateProceduresArchivingRelevanceResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Bulk update procedures archiving relevance",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/relevant-procedures" : {
+      "get" : {
+        "operationId" : "getRelevantArchivableProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `closedAtDay` is set, only procedures are returned which were closed at that date\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "closedAtDay",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `exported` is true, only procedures are returned which have already been exported.\n- If `exported` is false, only procedures are returned which have not been exported, yet.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "exported",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CLOSED_AT`: Sorting by closedAt attribute\n- `EXPORTED_AT`: Sorting by exportedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetRelevantArchivableProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetRelevantArchivableProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRelevantArchivableProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get relevant archivable procedures",
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/archiving/relevant-procedures/export" : {
+      "post" : {
+        "operationId" : "exportRelevantProcedures",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ExportArchivingRelevantProceduresRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Archiving" ]
+      }
+    },
+    "/citizen/auth/information-statements/{informationStatementId}" : {
+      "get" : {
+        "operationId" : "getCitizenInformationStatement",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "informationStatementId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DocumentContent"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets information statement by id",
+        "tags" : [ "CitizenAuth" ]
+      },
+      "patch" : {
+        "operationId" : "patchCitizenInformationStatement",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "informationStatementId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "patchInformationStatementContent" : {
+                    "$ref" : "#/components/schemas/PatchInformationStatementRequest"
+                  },
+                  "signature" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  }
+                },
+                "required" : [ "patchInformationStatementContent", "signature" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Updates information statement content",
+        "tags" : [ "CitizenAuth" ]
+      }
+    },
+    "/citizen/auth/procedure-appointments" : {
+      "get" : {
+        "operationId" : "getProcedureAppointments",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetCitizenAppointmentOverviewResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets all procedure appointments",
+        "tags" : [ "CitizenAuth" ]
+      }
+    },
+    "/citizen/auth/vaccination-consultations/{procedureId}/procedure-steps/{procedureStepId}" : {
+      "get" : {
+        "operationId" : "getProcedureStepAppointmentDetails",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "procedureStepId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAppointmentDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets details for a procedure step appointment",
+        "tags" : [ "CitizenAuth" ]
+      }
+    },
+    "/citizen/auth/vaccination-consultations/{procedureId}/procedure-steps/{procedureStepId}/appointment" : {
+      "delete" : {
+        "operationId" : "deleteAppointmentCp",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "procedureStepId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Cancel an appointment from citizen portal.",
+        "tags" : [ "CitizenAuth" ]
+      }
+    },
+    "/citizen/auth/vaccination-consultations/{procedureId}/procedure-steps/{procedureStepId}/appointments" : {
+      "put" : {
+        "operationId" : "putAppointment",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "procedureStepId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/Appointment"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Book or rebook an appointment",
+        "tags" : [ "CitizenAuth" ]
+      }
+    },
+    "/citizen/auth/vaccination-consultations/{procedureId}/procedure-steps/{procedureStepId}/medical-history" : {
+      "get" : {
+        "operationId" : "getMedicalHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "procedureStepId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DocumentContent"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets medical history for a procedure step appointment",
+        "tags" : [ "CitizenAuth" ]
+      },
+      "patch" : {
+        "operationId" : "patchCitizenMedicalHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "procedureStepId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/DocumentContent"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Updates medical history content",
+        "tags" : [ "CitizenAuth" ]
+      }
+    },
+    "/citizen/public/appointment-types" : {
+      "get" : {
+        "operationId" : "getAppointmentTypesForCitizen",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAppointmentTypesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets all Appointment Types",
+        "tags" : [ "CitizenPublic" ]
+      }
+    },
+    "/citizen/public/department-info" : {
+      "get" : {
+        "operationId" : "getDepartmentInfo",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetDepartmentInfoResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get department info.",
+        "tags" : [ "CitizenPublic" ]
+      }
+    },
+    "/citizen/public/diseases" : {
+      "get" : {
+        "operationId" : "getPublicDiseases",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetDiseasesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets all public Diseases",
+        "tags" : [ "CitizenPublic" ]
+      }
+    },
+    "/citizen/public/documents/privacy-notice" : {
+      "get" : {
+        "operationId" : "getPrivacyNotice",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the privacy-notice document.",
+        "tags" : [ "CitizenPublic" ]
+      }
+    },
+    "/citizen/public/documents/privacy-policy" : {
+      "get" : {
+        "operationId" : "getPrivacyPolicy",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the privacy-policy document.",
+        "tags" : [ "CitizenPublic" ]
+      }
+    },
+    "/citizen/public/free-appointments" : {
+      "get" : {
+        "operationId" : "getFreeAppointmentsForCitizen",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "appointmentType",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "earliestDate",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetFreeAppointmentsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get free appointments for an appointment type.",
+        "tags" : [ "CitizenPublic" ]
+      }
+    },
+    "/citizen/public/opening-hours" : {
+      "get" : {
+        "operationId" : "getOpeningHours",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetOpeningHoursResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get opening hours.",
+        "tags" : [ "CitizenPublic" ]
+      }
+    },
+    "/citizen/public/vaccination-consultations" : {
+      "post" : {
+        "operationId" : "postVaccinationConsultationForCitizen",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostCitizenVaccinationConsultationRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "uuid"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Save a new vaccination consultation",
+        "tags" : [ "CitizenPublic" ]
+      }
+    },
+    "/diseases" : {
+      "get" : {
+        "operationId" : "getDiseases",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetDiseasesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets all Diseases",
+        "tags" : [ "Disease" ]
+      },
+      "post" : {
+        "operationId" : "postDisease",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostPutDiseaseRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Disease"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Adds a new Disease",
+        "tags" : [ "Disease" ]
+      }
+    },
+    "/diseases/{id}" : {
+      "delete" : {
+        "operationId" : "deleteDisease",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Deletes a Disease",
+        "tags" : [ "Disease" ]
+      },
+      "get" : {
+        "operationId" : "getDisease",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Disease"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets one Disease by ID",
+        "tags" : [ "Disease" ]
+      },
+      "put" : {
+        "operationId" : "putDisease",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostPutDiseaseRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Disease"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modifies an existing Disease",
+        "tags" : [ "Disease" ]
+      }
+    },
+    "/feature-toggles" : {
+      "get" : {
+        "operationId" : "getFeatureToggles",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTravelMedicineFeatureTogglesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TravelMedicineFeatureTogglesPublic" ]
+      }
+    },
+    "/files/{fileId}" : {
+      "delete" : {
+        "operationId" : "deleteFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Soft deletes the specified file",
+        "tags" : [ "File" ]
+      },
+      "get" : {
+        "operationId" : "getFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/Image"
+                  }, {
+                    "$ref" : "#/components/schemas/Mail"
+                  }, {
+                    "$ref" : "#/components/schemas/Pdf"
+                  } ]
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Retrieves the meta data of the specified file",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/deletion-request" : {
+      "post" : {
+        "operationId" : "requestFileDeletion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateApprovalRequestRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Request deletion of a file entry",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/download" : {
+      "get" : {
+        "operationId" : "downloadFile",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/meta-data" : {
+      "put" : {
+        "operationId" : "updateFileMetaData",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "oneOf" : [ {
+                  "$ref" : "#/components/schemas/ImageMetaData"
+                }, {
+                  "$ref" : "#/components/schemas/MailMetaData"
+                }, {
+                  "$ref" : "#/components/schemas/PdfMetaData"
+                } ]
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "oneOf" : [ {
+                    "$ref" : "#/components/schemas/Image"
+                  }, {
+                    "$ref" : "#/components/schemas/Mail"
+                  }, {
+                    "$ref" : "#/components/schemas/Pdf"
+                  } ]
+                }
+              }
+            },
+            "description" : "Updated file"
+          }
+        },
+        "summary" : "Updates the meta data of the specified file",
+        "tags" : [ "File" ]
+      }
+    },
+    "/files/{fileId}/meta-data/history" : {
+      "get" : {
+        "operationId" : "getMetaDataHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "fileId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetMetaDataHistoryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "File" ]
+      }
+    },
+    "/gdpr-validation-tasks" : {
+      "get" : {
+        "operationId" : "getAllGdprValidationTasks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "status",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskSortKey"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortDirection",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/SortDirection"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }, {
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAllValidationTasksResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all GDPR validation tasks",
+        "tags" : [ "GdprValidationTask" ]
+      },
+      "post" : {
+        "operationId" : "addGdprValidationTask",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AddGdprValidationTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "Add a GDPR validation task"
+          }
+        },
+        "summary" : "Add a GDPR validation task",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/notification-banner" : {
+      "get" : {
+        "operationId" : "getGdprNotificationBanner",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprNotificationBannerResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get data for GDPR notification banner",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}" : {
+      "delete" : {
+        "operationId" : "deleteGdprValidationTaskAndDownloadPackages",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/DeleteDownloadPackagesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the GDPR validation task with gdprProcedureId and GDPR download packages with ids from request",
+        "tags" : [ "GdprValidationTask" ]
+      },
+      "get" : {
+        "operationId" : "getGdprValidationTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprValidationTaskResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get Gdpr Validation Task by Gdpr Procedure Id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures" : {
+      "get" : {
+        "operationId" : "getGdprValidationTaskDetails",
+        "parameters" : [ {
+          "description" : "The Id of the GDPR procedure.",
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprValidationTaskDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a GDPR validation task by id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}" : {
+      "delete" : {
+        "operationId" : "deleteBusinessProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "businessProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete the businessProcedure with businessProcedureId for validationTask with gdprProcedureId with type right of erasure",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}/downloadPackage" : {
+      "post" : {
+        "operationId" : "addDownloadPackage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "businessProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Creates a downloadPackage for validationTask with gdprProcedureId with the data from the procedure with businessProcedureId",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/close" : {
+      "post" : {
+        "operationId" : "closeGdprValidationTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "Close a GDPR validation task"
+          }
+        },
+        "summary" : "Close a GDPR validation task",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/download-packages" : {
+      "get" : {
+        "operationId" : "getGdprDownloadPackagesInfo",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetGdprDownloadPackagesInfoResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get approved Gdpr Download Packages by Gdpr Procedure Id",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}" : {
+      "get" : {
+        "operationId" : "getGdprDownloadPackage",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "gdprProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "downloadId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get Gdpr Download Package by the gdprProcedureId and its downloadId",
+        "tags" : [ "GdprValidationTask" ]
+      }
+    },
+    "/inbox-procedures" : {
+      "get" : {
+        "description" : "Get all inbox procedures with filter, sort, and pagination options\n",
+        "operationId" : "getInboxProcedures",
+        "parameters" : [ {
+          "description" : "Filter logic:\n- If `inboxProcedureType` is submitted, only inbox procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "inboxProcedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If true, inbox procedures which have no type are returned in addition to the types specified by 'inboxProcedureType'.\n- If false or not submitted, inbox procedures which have no type are not returned.\n",
+          "in" : "query",
+          "name" : "includeUntyped",
+          "required" : false,
+          "schema" : {
+            "type" : "boolean"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `inboxProcedureStatus` is submitted, only inbox procedures are returned which have one of the submitted statuses.\n- If not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "inboxProcedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InboxProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CREATED_AT`: Sorting by createdAt attribute\n- `MODIFIED_AT`: Sorting by modifiedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetInboxProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetInboxProceduresSortOrder"
+          }
+        }, {
+          "description" : "Number of the requested page",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        }, {
+          "description" : "Amount of requested inbox procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 25
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInboxProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get inbox procedures",
+        "tags" : [ "InboxProcedure" ]
+      },
+      "post" : {
+        "description" : "Creates an inbox procedure with an optional file upload.\n\n       Permitted file formats:\n        - Image formats: jpeg, png\n        - PDF formats: pdf/a\n        - Mail formats: eml",
+        "operationId" : "addInboxProcedure",
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "createInboxProcedureRequest" : {
+                    "$ref" : "#/components/schemas/CreateInboxProcedureRequest"
+                  },
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  }
+                },
+                "required" : [ "createInboxProcedureRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InboxProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add inbox procedure",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/inbox-procedures/{inboxProcedureId}" : {
+      "get" : {
+        "operationId" : "getInboxProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inboxProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInboxProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get inbox procedure with detailed information",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/inbox-procedures/{inboxProcedureId}/inbox-procedure-status" : {
+      "put" : {
+        "operationId" : "updateInboxProcedureStatus",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "inboxProcedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InboxProcedureStatus"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InboxProcedure"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update status of inbox procedure",
+        "tags" : [ "InboxProcedure" ]
+      }
+    },
+    "/information-statement-templates" : {
+      "get" : {
+        "operationId" : "getAllInformationStatementTemplates",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInformationStatementTemplatesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets all InformationStatementTemplates",
+        "tags" : [ "InformationStatementTemplate" ]
+      },
+      "post" : {
+        "operationId" : "postInformationStatementTemplate",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InformationStatementTemplateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InformationStatementTemplate"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Adds a new InformationStatementTemplate",
+        "tags" : [ "InformationStatementTemplate" ]
+      }
+    },
+    "/information-statement-templates/{id}" : {
+      "delete" : {
+        "operationId" : "deleteInformationStatementTemplateById",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Deletes InformationStatementTemplate by ID",
+        "tags" : [ "InformationStatementTemplate" ]
+      },
+      "get" : {
+        "operationId" : "getOneInformationStatementTemplate",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InformationStatementTemplate"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets one InformationStatementTemplate by ID",
+        "tags" : [ "InformationStatementTemplate" ]
+      },
+      "put" : {
+        "operationId" : "putInformationStatementTemplate",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InformationStatementTemplateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/InformationStatementTemplate"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modifies an existing InformationStatementTemplate (unless it's FINAL)",
+        "tags" : [ "InformationStatementTemplate" ]
+      }
+    },
+    "/medical-histories/{id}" : {
+      "patch" : {
+        "operationId" : "patchMedicalHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchMedicalHistoryRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Updates medical history content",
+        "tags" : [ "MedicalHistory" ]
+      }
+    },
+    "/medical-history-templates" : {
+      "get" : {
+        "operationId" : "getAllMedicalHistoryTemplates",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetMedicalHistoryTemplatesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets all MedicalHistoryTemplates",
+        "tags" : [ "MedicalHistoryTemplate" ]
+      },
+      "post" : {
+        "operationId" : "postMedicalHistoryTemplate",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostPutMedicalHistoryTemplateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/MedicalHistoryTemplate"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Adds a new MedicalHistoryTemplate",
+        "tags" : [ "MedicalHistoryTemplate" ]
+      }
+    },
+    "/medical-history-templates/{id}" : {
+      "delete" : {
+        "operationId" : "deleteMedicalHistoryTemplateById",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Deletes MedicalHistoryTemplate by ID",
+        "tags" : [ "MedicalHistoryTemplate" ]
+      },
+      "get" : {
+        "operationId" : "getOneMedicalHistoryTemplate",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/MedicalHistoryTemplate"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets one MedicalHistoryTemplate by ID",
+        "tags" : [ "MedicalHistoryTemplate" ]
+      },
+      "put" : {
+        "operationId" : "putMedicalHistoryTemplate",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostPutMedicalHistoryTemplateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/MedicalHistoryTemplate"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modifies an existing MedicalHistoryTemplate (unless it's FINAL)",
+        "tags" : [ "MedicalHistoryTemplate" ]
+      }
+    },
+    "/medical-history-templates/{id}/follow-up-flag" : {
+      "patch" : {
+        "operationId" : "patchMedicalHistoryTemplateFollowUpFlag",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchMedicalHistoryTemplateFlagRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/MedicalHistoryTemplate"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update follow up flag of MedicalHistoryTemplate (only on FINAL)",
+        "tags" : [ "MedicalHistoryTemplate" ]
+      }
+    },
+    "/medical-history-templates/{id}/main-flag" : {
+      "patch" : {
+        "operationId" : "patchMedicalHistoryTemplateMainFlag",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchMedicalHistoryTemplateFlagRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/MedicalHistoryTemplate"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update main flag of MedicalHistoryTemplate (only on FINAL)",
+        "tags" : [ "MedicalHistoryTemplate" ]
+      }
+    },
+    "/other-service-templates" : {
+      "get" : {
+        "operationId" : "getOtherServiceTemplates",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetOtherServiceTemplatesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all other service templates",
+        "tags" : [ "OtherServiceTemplate" ]
+      },
+      "post" : {
+        "operationId" : "createOtherServiceTemplate",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostPutOtherServiceTemplateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/OtherServiceTemplate"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create an other service templates",
+        "tags" : [ "OtherServiceTemplate" ]
+      }
+    },
+    "/other-service-templates/{id}" : {
+      "delete" : {
+        "operationId" : "deleteOtherServiceTemplate",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Delete all other service templates",
+        "tags" : [ "OtherServiceTemplate" ]
+      },
+      "put" : {
+        "operationId" : "updateOtherServiceTemplate",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostPutOtherServiceTemplateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/OtherServiceTemplate"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update an other service templates",
+        "tags" : [ "OtherServiceTemplate" ]
+      }
+    },
+    "/procedure-metrics" : {
+      "get" : {
+        "operationId" : "getProcedureMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of procedures"
+          }
+        },
+        "summary" : "Get procedure metrics for procedures created in the given time range",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedure-steps/{id}/appointment" : {
+      "patch" : {
+        "operationId" : "patchAppointment",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchAppointmentRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Patches appointment data of an given procedure step",
+        "tags" : [ "ProcedureStep" ]
+      }
+    },
+    "/procedure-steps/{id}/earliest-date" : {
+      "patch" : {
+        "operationId" : "patchEarliestDate",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchEarliestDateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Patches earliest date for self booking of an given procedure step",
+        "tags" : [ "ProcedureStep" ]
+      }
+    },
+    "/procedure-steps/{id}/services" : {
+      "get" : {
+        "operationId" : "getProcedureStepServices",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureStepServicesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all services of a procedure step",
+        "tags" : [ "ProcedureStep" ]
+      }
+    },
+    "/procedure-steps/{procedureStepId}/appointment" : {
+      "delete" : {
+        "operationId" : "deleteAppointmentEp",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureStepId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Cancel an appointment from employee portal.",
+        "tags" : [ "ProcedureStep" ]
+      }
+    },
+    "/procedures" : {
+      "get" : {
+        "description" : "GET operation for retrieving basic information of procedures for the procedure overview.\n",
+        "operationId" : "getProcedures",
+        "parameters" : [ {
+          "description" : "Only procedures are returned where the assigneeId of at least one task equals the `assignedToId`.\nIf not submitted, no filtering takes place.\n",
+          "in" : "query",
+          "name" : "assignedToId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureType` is submitted, only procedures are returned which have one of the submitted types.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "description" : "Filter logic:\n- If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.\n- If not submitted, no filtering takes place\n",
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "description" : "The following sorting options are available:\n- `CREATED_AT`: Sorting by createdAt attribute\n- `MODIFIED_AT`: Sorting by modifiedAt attribute\n",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetProceduresSortBy"
+          }
+        }, {
+          "description" : "Sorting order.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetProceduresSortOrder"
+          }
+        }, {
+          "description" : "Limit of returned procedures",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Offset used for pagination",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "maximum" : 2000,
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/check-file-state-usage" : {
+      "post" : {
+        "operationId" : "checkFileStateUsage",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CheckFileStateUsageRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/CheckFileStateUsageResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Identify which file state IDs are still used by active procedures.",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/recent" : {
+      "get" : {
+        "operationId" : "getRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "userId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/recent/self" : {
+      "get" : {
+        "operationId" : "getSelfRecentProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetRecentProceduresResponse"
+                }
+              }
+            },
+            "description" : "the current users recent procedures"
+          }
+        },
+        "summary" : "Get recent procedures for the current user",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/search" : {
+      "get" : {
+        "operationId" : "searchProcedures",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "query",
+          "required" : true,
+          "schema" : {
+            "type" : "string"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProceduresResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}" : {
+      "get" : {
+        "operationId" : "getDetailedProcedure",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetDetailedProcedureResponse"
+                }
+              }
+            },
+            "description" : "a single procedure with details"
+          }
+        },
+        "summary" : "Get a single procedure with details",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}/approval-requests" : {
+      "get" : {
+        "operationId" : "getApprovalRequests",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureApprovalRequestsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get all approval requests related to this procedure",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{id}/files" : {
+      "get" : {
+        "description" : "This returns all relevant (highest version per keydocument type and non-deleted) files sorted by descending creation date.\nThat is:\n * if an progress entry has a keydocument type set, then its files are only returned if it also has the highest keydocument version of the respective key document type.\n * if an progress entry does not have a keydocument type, then its files are always returned.\n",
+        "operationId" : "getProcedureFileDetails",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProcedureFileDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get relevant procedure files",
+        "tags" : [ "Procedure" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries" : {
+      "get" : {
+        "operationId" : "getProgressEntries",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "description" : "Filter on progressEntryType",
+          "in" : "query",
+          "name" : "progressEntryType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        }, {
+          "description" : "Filter on child class of progressEntry",
+          "in" : "query",
+          "name" : "progressEntryClass",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProgressEntryClass"
+            }
+          }
+        }, {
+          "description" : "If `initiatedBy` is set with a `userId` then the following is returned:\n* Only progressEntries with `createdBy`=`userId` in case `ManualProgressEntry` or `ProcessedInboxProgressEntry`\n* Only progressEntries with `triggeredBy`=`userId` in case `SystemProgressEntry`\n",
+          "in" : "query",
+          "name" : "initiatedBy",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "description" : "Filter on triggerType.\nIf this is set, only SystemProgressEntries are returned since only SystemProgressEntries have this attribute.\n",
+          "in" : "query",
+          "name" : "triggerType",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TriggerType"
+            }
+          }
+        }, {
+          "description" : "Sorting on either modifiedAt or createdAt ",
+          "in" : "query",
+          "name" : "sortBy",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProgressEntrySortBy"
+          }
+        }, {
+          "description" : "Sorting order. Possible options  \"ASC\" for ascending and \"DESC\" for descending.",
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProgressEntrySortOrder"
+          }
+        }, {
+          "description" : "Maximum number of elements to return",
+          "in" : "query",
+          "name" : "pageSize",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        }, {
+          "description" : "Index of page to be returned",
+          "in" : "query",
+          "name" : "pageNumber",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 0
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProgressEntriesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get list of procedure's progress entries",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "post" : {
+        "description" : "Creates a manual progress entry with an optional file upload.\n\n       Permitted file formats:\n        - Image formats: jpeg, png\n        - PDF formats: pdf/a\n        - Mail formats: eml",
+        "operationId" : "addProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "multipart/form-data" : {
+              "schema" : {
+                "type" : "object",
+                "properties" : {
+                  "createManualProgressEntryRequest" : {
+                    "$ref" : "#/components/schemas/CreateManualProgressEntryRequest"
+                  },
+                  "file" : {
+                    "type" : "string",
+                    "format" : "binary"
+                  },
+                  "fileMetaData" : {
+                    "$ref" : "#/components/schemas/FileMetaData"
+                  }
+                },
+                "required" : [ "createManualProgressEntryRequest" ]
+              }
+            }
+          }
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ManualProgressEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}" : {
+      "delete" : {
+        "operationId" : "removeProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Remove a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "get" : {
+        "operationId" : "getProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetProgressEntryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get a progress entry",
+        "tags" : [ "ProgressEntry" ]
+      },
+      "patch" : {
+        "operationId" : "patchProgressEntry",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchManualProgressEntryRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ManualProgressEntry"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modify a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}/deletion-request" : {
+      "post" : {
+        "operationId" : "requestProgressEntryDeletion",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/CreateApprovalRequestRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ApprovalRequest"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Request deletion of a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/procedures/{procedureId}/progress-entries/{progressEntryId}/history" : {
+      "get" : {
+        "operationId" : "getManualProgressEntryHistory",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "progressEntryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetManualProgressEntryHistoryResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get the history of a manual progress entry",
+        "tags" : [ "ProgressEntry" ]
+      }
+    },
+    "/task-metrics" : {
+      "get" : {
+        "operationId" : "getTaskMetrics",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "procedureType",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeStart",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeRangeEnd",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTaskMetricsResponse"
+                }
+              }
+            },
+            "description" : "the metrics of a specific procedure type"
+          }
+        },
+        "summary" : "Get tasks metrics for a procedure type of a business module for procedures created in the given time range",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks" : {
+      "get" : {
+        "operationId" : "getTasks",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "assigneeId",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "query",
+          "name" : "assignedById",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "taskTypes",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskType"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "taskStatus",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskStatus"
+            }
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortKey",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortBy"
+          }
+        }, {
+          "in" : "query",
+          "name" : "sortOrder",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/GetTasksSortOrder"
+          }
+        }, {
+          "in" : "query",
+          "name" : "limit",
+          "required" : false,
+          "schema" : {
+            "maximum" : 200,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32",
+            "default" : 50
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TaskResponse"
+                }
+              }
+            },
+            "description" : "tasks"
+          }
+        },
+        "summary" : "Get tasks",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/dashboard" : {
+      "get" : {
+        "operationId" : "getTasksForDashboard",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TaskResponse"
+                }
+              }
+            },
+            "description" : "tasks"
+          }
+        },
+        "summary" : "Get tasks for the dashboard",
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/team-view" : {
+      "get" : {
+        "description" : "Returns all _open_ tasks per module group member.",
+        "operationId" : "getTasksByAssignee",
+        "parameters" : [ {
+          "description" : "If provided, `assignee` must be member of the module group.\nIf not provided, all tasks for all members of the module group are returned.\n",
+          "in" : "query",
+          "name" : "assigneeId",
+          "required" : false,
+          "schema" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetTaskByUserResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/{taskId}/assignment" : {
+      "put" : {
+        "operationId" : "assignTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "taskId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/AssignTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Task"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/tasks/{taskId}/self-assignment" : {
+      "put" : {
+        "operationId" : "selfAssignTask",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "taskId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SelfAssignTaskRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Task"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "Task" ]
+      }
+    },
+    "/test-helper/archiving-job" : {
+      "post" : {
+        "operationId" : "runArchivingJob",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/audit-log-storage" : {
+      "delete" : {
+        "operationId" : "clearAuditLogStorageDirectory",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/enabled-new-features/{featureToEnable}" : {
+      "post" : {
+        "operationId" : "enableNewFeature",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "featureToEnable",
+          "required" : true,
+          "schema" : {
+            "$ref" : "#/components/schemas/TravelMedicineFeature"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population" : {
+      "post" : {
+        "operationId" : "populateDefaults",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/DefaultPopulationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population/administrative" : {
+      "post" : {
+        "operationId" : "populateAdministrative",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/PostPopulateAdministrativeResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create administrative entities",
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/population/procedure" : {
+      "post" : {
+        "operationId" : "populateProcedure",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostPopulateProcedureRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/PostPopulateProcedureResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Create a procedure and dependent entities",
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor" : {
+      "post" : {
+        "operationId" : "interceptNextRequest",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers" : {
+      "post" : {
+        "operationId" : "addBarrier",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/AddBarrierTestHelperResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/barriers/{barrierId}/await" : {
+      "post" : {
+        "operationId" : "awaitBarrier",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "barrierId",
+          "required" : true,
+          "schema" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }, {
+          "in" : "query",
+          "name" : "timeoutInMillis",
+          "required" : false,
+          "schema" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/request-interceptor/reset" : {
+      "post" : {
+        "operationId" : "resetInterceptionsAndBarriers",
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/reset" : {
+      "post" : {
+        "operationId" : "reset",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/set-clock" : {
+      "patch" : {
+        "operationId" : "setClock",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockSetRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/test-helper/wind-clock" : {
+      "patch" : {
+        "operationId" : "windClockForward",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/TestHelperClockWindForwardRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "*/*" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/TestHelperClockUpdateResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "tags" : [ "TestHelper" ]
+      }
+    },
+    "/unused-inventory-vaccines" : {
+      "get" : {
+        "operationId" : "getInventoryVaccinesWithoutRmbiVaccine",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInventoryVaccinesWithoutRmbiVaccineResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets all inventory vaccines that are not used by any rmbi vaccine",
+        "tags" : [ "UnusedBaseInventoryVaccine" ]
+      }
+    },
+    "/vaccination-consultations" : {
+      "get" : {
+        "operationId" : "searchVaccinationConsultation",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "firstName",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "lastName",
+          "required" : false,
+          "schema" : {
+            "type" : "string"
+          }
+        }, {
+          "in" : "query",
+          "name" : "dateOfBirth",
+          "required" : false,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }, {
+          "in" : "query",
+          "name" : "procedureStatus",
+          "required" : false,
+          "schema" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/SearchVaccinationConsultationResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Search VaccinationConsultation, max. 50 results.",
+        "tags" : [ "VaccinationConsultation" ]
+      },
+      "post" : {
+        "operationId" : "postVaccinationConsultation",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostVaccinationConsultationRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "uuid"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Save a new vaccination consultation",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/appointment-overview" : {
+      "get" : {
+        "operationId" : "getAllProcedureAppointmentSummaries",
+        "parameters" : [ {
+          "in" : "query",
+          "name" : "date",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAppointmentOverviewResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get list of all procedure appointment summaries in a time range, sorted by appointment date",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{id}/procedure-steps" : {
+      "post" : {
+        "operationId" : "addProcedureStep",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostProcedureStepRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "uuid"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add procedure step to vaccination consultation with given id",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}" : {
+      "delete" : {
+        "operationId" : "abortDraftVaccinationConsultation",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Aboard a draft vaccination consultation",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/accept-draft" : {
+      "patch" : {
+        "operationId" : "acceptDraftVaccinationConsultation",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchAcceptDraftRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Accept a draft vaccination consultation",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/assignable-services" : {
+      "get" : {
+        "operationId" : "getAllAssignableServices",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAssignableServicesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get list of all assignable services, which can be assigned to a procedure step",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/available-appointments" : {
+      "get" : {
+        "operationId" : "getAllAvailableAppointments",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetAvailableAppointmentsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get list of all appointments which are available to assign services",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/certificates" : {
+      "get" : {
+        "operationId" : "getCertificates",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetCertificatesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets all certificates of a vaccination consultation",
+        "tags" : [ "VaccinationConsultation" ]
+      },
+      "post" : {
+        "operationId" : "postCertificate",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostPutCertificateRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Adds a new certificate",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/details" : {
+      "get" : {
+        "operationId" : "getVaccinationConsultationDetails",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetVaccinationConsultationDetailsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get vaccination consultation details",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/information-statements" : {
+      "get" : {
+        "operationId" : "getInformationStatements",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetInformationStatementsResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get information statements for this VaccinationConsultation.",
+        "tags" : [ "VaccinationConsultation" ]
+      },
+      "post" : {
+        "operationId" : "postInformationStatements",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostInformationStatementsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add information statements to a procedure",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/information-statements/{informationStatementId}" : {
+      "delete" : {
+        "operationId" : "deleteInformationStatement",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "informationStatementId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Remove an information statement from the procedure and delete it",
+        "tags" : [ "VaccinationConsultation" ]
+      },
+      "get" : {
+        "operationId" : "getInformationStatementPdf",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "informationStatementId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Generate information statement pdf.",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/information-statements/{informationStatementId}/reset" : {
+      "put" : {
+        "operationId" : "resetInformationStatement",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "informationStatementId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Remove all answers given so far from the sheet and reset the answered flag",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/medical-histories" : {
+      "get" : {
+        "operationId" : "getMedicalHistories",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetMedicalHistoriesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Get medical histories for this VaccinationConsultation.",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/medical-histories/{medicalHistoryId}" : {
+      "get" : {
+        "operationId" : "getMedicalHistoryPdf",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "medicalHistoryId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/octet-stream" : {
+                "schema" : {
+                  "type" : "string",
+                  "format" : "binary"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Generate medical history pdf.",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/other-services/{serviceId}" : {
+      "patch" : {
+        "operationId" : "patchOtherService",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "serviceId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchOtherServiceRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modifies an other service for a procedure step",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/patient" : {
+      "patch" : {
+        "operationId" : "updatePatient",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchVaccinationConsultationPatientRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update patient in a vaccination consultation",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/services" : {
+      "post" : {
+        "operationId" : "postServices",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostServicesRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Add a list of vaccinations and other services to a procedure",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/services/{serviceId}" : {
+      "delete" : {
+        "operationId" : "deleteService",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "serviceId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Remove a service from a procedure",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/services/{serviceId}/assign-step" : {
+      "patch" : {
+        "operationId" : "assignStepToService",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "serviceId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchServiceAssignmentRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Assign a procedure step to a service (vaccination/other service)",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/services/{serviceId}/unassign-step" : {
+      "patch" : {
+        "operationId" : "unassignStepToService",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "serviceId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Unassign a procedure step from a service (vaccination/other service)",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/status" : {
+      "get" : {
+        "operationId" : "getStatus",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/ProcedureStatus"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Retrieve the current state of the procedure.",
+        "tags" : [ "VaccinationConsultation" ]
+      },
+      "patch" : {
+        "operationId" : "patchStatus",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/ProcedureStatus"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Change the current state of the procedure.",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/stepsWithAppliedServices" : {
+      "get" : {
+        "operationId" : "getStepsWithAppliedServices",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetStepsWithAppliedServicesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Collect all services which have been applied to any of (and grouped by) the VaccinationConsultation's steps.",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/sync-person" : {
+      "put" : {
+        "operationId" : "syncPersonData",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/SyncPersonRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Synchronize patient (person) data",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/travel-details" : {
+      "patch" : {
+        "operationId" : "updateTravelDetails",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchVaccinationConsultationTravelDetailsRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Update travel details in a vaccination consultation",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccination-consultations/{procedureId}/vaccinations/{serviceId}" : {
+      "patch" : {
+        "operationId" : "patchVaccination",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "procedureId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }, {
+          "in" : "path",
+          "name" : "serviceId",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PatchVaccinationRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Adds vaccination date and batch identifier to a vaccination",
+        "tags" : [ "VaccinationConsultation" ]
+      }
+    },
+    "/vaccines" : {
+      "get" : {
+        "operationId" : "getVaccines",
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/GetVaccinesResponse"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets all Vaccines",
+        "tags" : [ "Vaccine" ]
+      },
+      "post" : {
+        "operationId" : "postVaccine",
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostPutVaccineRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Vaccine"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Adds a new Vaccine",
+        "tags" : [ "Vaccine" ]
+      }
+    },
+    "/vaccines/{id}" : {
+      "delete" : {
+        "operationId" : "deleteVaccine",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "OK"
+          }
+        },
+        "summary" : "Deletes a Vaccine",
+        "tags" : [ "Vaccine" ]
+      },
+      "get" : {
+        "operationId" : "getVaccine",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Vaccine"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Gets one Vaccine by ID",
+        "tags" : [ "Vaccine" ]
+      },
+      "put" : {
+        "operationId" : "putVaccine",
+        "parameters" : [ {
+          "in" : "path",
+          "name" : "id",
+          "required" : true,
+          "schema" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        } ],
+        "requestBody" : {
+          "content" : {
+            "application/json" : {
+              "schema" : {
+                "$ref" : "#/components/schemas/PostPutVaccineRequest"
+              }
+            }
+          },
+          "required" : true
+        },
+        "responses" : {
+          "200" : {
+            "content" : {
+              "application/json" : {
+                "schema" : {
+                  "$ref" : "#/components/schemas/Vaccine"
+                }
+              }
+            },
+            "description" : "OK"
+          }
+        },
+        "summary" : "Modifies an existing Vaccine",
+        "tags" : [ "Vaccine" ]
+      }
+    }
+  },
+  "components" : {
+    "schemas" : {
+      "AbstractFile" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFileReference"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "createdAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "fileName" : {
+              "type" : "string"
+            },
+            "fileSizeBytes" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "fileType" : {
+              "$ref" : "#/components/schemas/FileType"
+            },
+            "locked" : {
+              "type" : "boolean"
+            },
+            "modifiedAt" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/ApprovalRequestEntity"
+        } ]
+      },
+      "AbstractFileReference" : {
+        "required" : [ "@type", "deletable", "deleted", "fileId" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "deletable" : {
+            "type" : "boolean"
+          },
+          "deleted" : {
+            "type" : "boolean"
+          },
+          "fileId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AddBarrierTestHelperResponse" : {
+        "required" : [ "barrierId" ],
+        "type" : "object",
+        "properties" : {
+          "barrierId" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "AddGdprValidationTaskRequest" : {
+        "required" : [ "gdprProcedureId", "startedAt", "type" ],
+        "type" : "object",
+        "properties" : {
+          "gdprProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "startedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }
+      },
+      "Address" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "AppliedService" : {
+        "required" : [ "serviceDescription", "serviceId" ],
+        "type" : "object",
+        "properties" : {
+          "serviceDescription" : {
+            "type" : "string"
+          },
+          "serviceId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "description" : "One of the applied service in the StepWithAppliedServicesDto list"
+      },
+      "Appointment" : {
+        "required" : [ "end", "start" ],
+        "type" : "object",
+        "properties" : {
+          "end" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "start" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        },
+        "description" : "Appointment of a procedure."
+      },
+      "AppointmentBlockSortKey" : {
+        "type" : "string",
+        "enum" : [ "START", "END" ]
+      },
+      "AppointmentBookingType" : {
+        "type" : "string",
+        "enum" : [ "USER_DEFINED", "APPOINTMENT_BLOCK", "SELF_BOOKING", "CANCELLED" ]
+      },
+      "AppointmentLocation" : {
+        "required" : [ "id", "name" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "AppointmentOverviewEntry" : {
+        "required" : [ "age", "appointmentType", "createdBy", "dateOfBirth", "firstName", "lastName", "procedureId", "status" ],
+        "type" : "object",
+        "properties" : {
+          "age" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "appointment" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "appointmentBookingType" : {
+            "$ref" : "#/components/schemas/AppointmentBookingType"
+          },
+          "appointmentType" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          },
+          "createdBy" : {
+            "$ref" : "#/components/schemas/CreatedByUserType"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "earliestDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "lastName" : {
+            "type" : "string"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "travelStartDate" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }
+      },
+      "AppointmentSummary" : {
+        "required" : [ "appointmentBookingType", "appointmentType", "procedureStepId" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBookingType" : {
+            "$ref" : "#/components/schemas/AppointmentBookingType"
+          },
+          "appointmentType" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          },
+          "earliestDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "end" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureStepId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "start" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "AppointmentType" : {
+        "type" : "string",
+        "enum" : [ "CONSULTATION", "VACCINATION", "REGULAR_EXAMINATION", "CAN_CHILD", "ENTRY_LEVEL", "SPECIAL_NEEDS", "PROOF_SUBMISSION", "HIV_STI_CONSULTATION", "SEX_WORK", "RESULTS_REVIEW", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "AppointmentTypeConfig" : {
+        "required" : [ "appointmentTypeDto", "id", "standardDurationInMinutes" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentTypeDto" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "standardDurationInMinutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "ApprovalRequest" : {
+        "required" : [ "approvalRequestId", "createdAt", "createdBy", "operation", "reason", "status" ],
+        "type" : "object",
+        "properties" : {
+          "approvalRequestId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decidedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "decidedBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "decision" : {
+            "$ref" : "#/components/schemas/Decision"
+          },
+          "entity" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/ManualProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "operation" : {
+            "$ref" : "#/components/schemas/Operation"
+          },
+          "reason" : {
+            "type" : "string"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ApprovalRequestStatus"
+          }
+        }
+      },
+      "ApprovalRequestEntity" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ApprovalRequestStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "ArchivingDetails" : {
+        "required" : [ "archivingPeriodYears", "archivingRelevance" ],
+        "type" : "object",
+        "properties" : {
+          "archivingPeriodYears" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          }
+        }
+      },
+      "ArchivingRelevance" : {
+        "type" : "string",
+        "enum" : [ "DEFAULT", "RELEVANT", "IRRELEVANT" ]
+      },
+      "ArchivingRelevanceSettings" : {
+        "required" : [ "archivingRelevance", "defaultArchivingRelevance" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "defaultArchivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          }
+        }
+      },
+      "AssignTaskRequest" : {
+        "required" : [ "assignee", "taskVersion" ],
+        "type" : "object",
+        "properties" : {
+          "assignee" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "taskVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "AssignableService" : {
+        "required" : [ "serviceDescription", "serviceId" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentSuggestion" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "latency" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "serviceDescription" : {
+            "type" : "string"
+          },
+          "serviceId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "vaccinationNumber" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "BulkUpdateProceduresArchivingRelevanceRequest" : {
+        "required" : [ "archivingRelevance", "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "BulkUpdateProceduresArchivingRelevanceResponse" : {
+        "required" : [ "archivingRelevance", "failedProcedures", "updatedProcedures" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevance" : {
+            "$ref" : "#/components/schemas/ArchivingRelevance"
+          },
+          "failedProcedures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "updatedProcedures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "BusinessModule" : {
+        "type" : "string",
+        "enum" : [ "INSPECTION", "SCHOOL_ENTRY", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY", "DENTAL", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "BusinessProcedureInclusionStatus" : {
+        "type" : "string",
+        "enum" : [ "INCLUDED", "UNDECIDED" ]
+      },
+      "BusinessProcedureWithInclusionStatus" : {
+        "required" : [ "businessProcedure", "inclusionStatus" ],
+        "type" : "object",
+        "properties" : {
+          "businessProcedure" : {
+            "$ref" : "#/components/schemas/Procedure"
+          },
+          "inclusionStatus" : {
+            "$ref" : "#/components/schemas/BusinessProcedureInclusionStatus"
+          }
+        }
+      },
+      "CertificatePopulation" : {
+        "required" : [ "serviceKeys", "stepKey" ],
+        "type" : "object",
+        "properties" : {
+          "serviceKeys" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "stepKey" : {
+            "type" : "string"
+          }
+        },
+        "description" : "request the creation of a certificate for some of the services of a step/appointment"
+      },
+      "CertificateType" : {
+        "type" : "string",
+        "enum" : [ "HEALTH_INSURANCE" ]
+      },
+      "CheckFileStateUsageRequest" : {
+        "required" : [ "fileStatesIds" ],
+        "type" : "object",
+        "properties" : {
+          "fileStatesIds" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "CheckFileStateUsageResponse" : {
+        "required" : [ "inUse" ],
+        "type" : "object",
+        "properties" : {
+          "inUse" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "CitizenPortalCredentials" : {
+        "required" : [ "accessCode", "dateOfBirth" ],
+        "type" : "object",
+        "properties" : {
+          "accessCode" : {
+            "type" : "string"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }
+      },
+      "ContactDetails" : {
+        "required" : [ "contactType", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "$ref" : "#/components/schemas/InboxProcedureAddress"
+          },
+          "contactType" : {
+            "$ref" : "#/components/schemas/ContactType"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "emailAddress" : {
+            "type" : "string"
+          },
+          "facilityName" : {
+            "type" : "string"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "lastName" : {
+            "type" : "string"
+          },
+          "phoneNumber" : {
+            "type" : "string"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "$ref" : "#/components/schemas/Title"
+          }
+        }
+      },
+      "ContactType" : {
+        "type" : "string",
+        "enum" : [ "PRIVATE_PERSON", "FACILITY" ]
+      },
+      "CountryCode" : {
+        "type" : "string",
+        "description" : "List of country codes in ISO 3166-1 alpha-2 format. With custom extensions for stateless, non-standard countries, and unknown countries.",
+        "enum" : [ "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW", "XK", "UNKNOWN", "STATELESS" ]
+      },
+      "CreateAppointmentBlockGroupResponse" : {
+        "required" : [ "appointmentBlockIds", "id" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlockIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the AppointmentBlockGroup.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          }
+        }
+      },
+      "CreateApprovalRequestRequest" : {
+        "required" : [ "reason" ],
+        "type" : "object",
+        "properties" : {
+          "reason" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateDailyAppointmentBlock" : {
+        "required" : [ "daysOfWeek", "end", "start" ],
+        "type" : "object",
+        "properties" : {
+          "daysOfWeek" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DayOfWeek"
+            }
+          },
+          "end" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block ends.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:45:00.123456+01:00"
+          },
+          "start" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block starts.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:00:00.123456+01:00"
+          }
+        }
+      },
+      "CreateDailyAppointmentBlockGroupRequest" : {
+        "required" : [ "appointmentBlocks", "parallelExaminations", "type" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlocks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CreateDailyAppointmentBlock"
+            }
+          },
+          "consultants" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "locationId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "mfas" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "parallelExaminations" : {
+            "maximum" : 10,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "physicians" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }
+      },
+      "CreateInboxProcedureRequest" : {
+        "required" : [ "contactDetails", "inboxProgressEntry" ],
+        "type" : "object",
+        "properties" : {
+          "contactDetails" : {
+            "$ref" : "#/components/schemas/ContactDetails"
+          },
+          "inboxProcedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "inboxProgressEntry" : {
+            "$ref" : "#/components/schemas/CreateInboxProgressEntry"
+          }
+        }
+      },
+      "CreateInboxProgressEntry" : {
+        "required" : [ "inboxProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProgressEntryType" : {
+            "$ref" : "#/components/schemas/InboxProgressEntryType"
+          },
+          "messageText" : {
+            "type" : "string"
+          },
+          "subject" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreateManualProgressEntryRequest" : {
+        "required" : [ "manualProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "keyDocumentType" : {
+            "type" : "string"
+          },
+          "manualProgressEntryType" : {
+            "$ref" : "#/components/schemas/ManualProgressEntryType"
+          },
+          "note" : {
+            "type" : "string"
+          }
+        }
+      },
+      "CreatedByUserType" : {
+        "type" : "string",
+        "enum" : [ "EMPLOYEE", "CITIZEN_PORTAL" ]
+      },
+      "DataOrigin" : {
+        "type" : "string",
+        "description" : "A list of possible origins of Persons and Facility in the Central Files. EDIT will only be set automatically on changes. EXTERNAL is for entries that come, e.g., from the citizen portal. IMPORT is reserved for automatic imports. MANUAL shall be set for every creation or connection done by an employee.",
+        "enum" : [ "MANUAL", "EXTERNAL", "IMPORT", "EDIT" ]
+      },
+      "DayOfWeek" : {
+        "type" : "string",
+        "enum" : [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ]
+      },
+      "Decision" : {
+        "type" : "string",
+        "enum" : [ "GRANTED", "DENIED" ]
+      },
+      "DefaultPopulationResponse" : {
+        "type" : "object",
+        "properties" : {
+          "populations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Population"
+            }
+          }
+        }
+      },
+      "DeleteDownloadPackagesRequest" : {
+        "required" : [ "downloadIds" ],
+        "type" : "object",
+        "properties" : {
+          "downloadIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "DetailedFacility" : {
+        "required" : [ "facilityFileState", "facilityType" ],
+        "type" : "object",
+        "properties" : {
+          "facilityFileState" : {
+            "$ref" : "#/components/schemas/GetFacilityFileStateResponse"
+          },
+          "facilityType" : {
+            "$ref" : "#/components/schemas/FacilityType"
+          }
+        }
+      },
+      "DetailedPerson" : {
+        "required" : [ "person", "personType" ],
+        "type" : "object",
+        "properties" : {
+          "person" : {
+            "$ref" : "#/components/schemas/GetPersonFileStateResponse"
+          },
+          "personType" : {
+            "$ref" : "#/components/schemas/PersonType"
+          }
+        }
+      },
+      "DetailedTask" : {
+        "required" : [ "task" ],
+        "type" : "object",
+        "properties" : {
+          "assignedByName" : {
+            "type" : "string"
+          },
+          "assigneeName" : {
+            "type" : "string"
+          },
+          "task" : {
+            "$ref" : "#/components/schemas/Task"
+          }
+        }
+      },
+      "Disease" : {
+        "required" : [ "createdAt", "id", "name", "visibleToCitizenPortal" ],
+        "type" : "object",
+        "properties" : {
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "estimatedFee" : {
+            "type" : "number"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "name" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "visibleToCitizenPortal" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "DocumentAnamnesisQuestion" : {
+        "required" : [ "questionText", "subElementMultiSelect" ],
+        "type" : "object",
+        "properties" : {
+          "answer" : {
+            "type" : "boolean"
+          },
+          "questionText" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "subElementMultiSelect" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DocumentSubElementMultiSelect"
+            }
+          },
+          "subElementText" : {
+            "$ref" : "#/components/schemas/DocumentSubElementText"
+          }
+        }
+      },
+      "DocumentConfirmation" : {
+        "required" : [ "confirmationTextField" ],
+        "type" : "object",
+        "properties" : {
+          "answer" : {
+            "type" : "boolean"
+          },
+          "confirmationTextField" : {
+            "type" : "string"
+          }
+        }
+      },
+      "DocumentContent" : {
+        "required" : [ "sections" ],
+        "type" : "object",
+        "properties" : {
+          "sections" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DocumentSection"
+            }
+          }
+        }
+      },
+      "DocumentSection" : {
+        "required" : [ "sectionElements" ],
+        "type" : "object",
+        "properties" : {
+          "sectionElements" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DocumentSectionElement"
+            }
+          },
+          "sectionTitle" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          }
+        }
+      },
+      "DocumentSectionElement" : {
+        "type" : "object",
+        "properties" : {
+          "anamnesisQuestion" : {
+            "$ref" : "#/components/schemas/DocumentAnamnesisQuestion"
+          },
+          "confirmation" : {
+            "$ref" : "#/components/schemas/DocumentConfirmation"
+          },
+          "textBlock" : {
+            "$ref" : "#/components/schemas/DocumentTextBlock"
+          }
+        }
+      },
+      "DocumentSubElementMultiSelect" : {
+        "required" : [ "questionText" ],
+        "type" : "object",
+        "properties" : {
+          "answer" : {
+            "type" : "boolean"
+          },
+          "questionText" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          }
+        }
+      },
+      "DocumentSubElementText" : {
+        "required" : [ "questionText" ],
+        "type" : "object",
+        "properties" : {
+          "answer" : {
+            "maxLength" : 4000,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "questionText" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          }
+        }
+      },
+      "DocumentTextBlock" : {
+        "required" : [ "textField" ],
+        "type" : "object",
+        "properties" : {
+          "textField" : {
+            "type" : "string"
+          }
+        }
+      },
+      "DomesticAddress" : {
+        "required" : [ "city", "country", "postalCode", "street" ],
+        "type" : "object",
+        "description" : "A usual domestic address.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "addressAddition" : {
+              "maxLength" : 100,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "A descriptive addition to the address.",
+              "example" : "2.OG links"
+            },
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "houseNumber" : {
+              "maxLength" : 11,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The house number of the address, including extensions.",
+              "example" : "1a"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "street" : {
+              "maxLength" : 55,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the street of the address, without the house number.",
+              "example" : "Beispielweg"
+            }
+          }
+        } ]
+      },
+      "ExportArchivingRelevantProceduresRequest" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "FacilityContactPerson" : {
+        "required" : [ "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "emailAddress" : {
+            "maxLength" : 254,
+            "minLength" : 6,
+            "type" : "string",
+            "description" : "The email addresses of the Contact Person.",
+            "example" : "mail1@address.de"
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Contact Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Contact Person.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "maxLength" : 23,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The phone number of the Contact Person.",
+            "example" : "+491234567890"
+          },
+          "role" : {
+            "maxLength" : 255,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The role of the Contact Person in the Facility.",
+            "example" : "CEO"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of the Contact Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "FacilityType" : {
+        "type" : "string",
+        "enum" : [ "SCHOOL", "INSPECTION", "DAYCARE", "HOSPITAL", "MEDICAL_PRACTICE", "REFUGEE_ACCOMMODATION", "OTHER" ]
+      },
+      "FileMetaData" : {
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          }
+        }
+      },
+      "FileType" : {
+        "type" : "string",
+        "enum" : [ "JPEG", "PNG", "PDF", "EML" ]
+      },
+      "GdprDownloadPackageInfo" : {
+        "required" : [ "id" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GdprFacility" : {
+        "required" : [ "address", "name" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "dataTransmitterPseudonymId" : {
+              "type" : "string",
+              "description" : "The 'DatenübermittlerPseudonymId' of the MUK user",
+              "example" : "du-986b2b54ab89cf4ed674ad8c3126b966b54d4872"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Facility.",
+              "example" : "mail@address.de"
+            },
+            "name" : {
+              "maxLength" : 300,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The name of the Facility.",
+              "example" : "123 Example Facility"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The phone number of the Facility.",
+              "example" : "+491234567890"
+            }
+          }
+        } ]
+      },
+      "GdprIdentificationData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "GdprPerson" : {
+        "required" : [ "address", "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/GdprIdentificationData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "address" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/DomesticAddress"
+              }, {
+                "$ref" : "#/components/schemas/PostboxAddress"
+              } ]
+            },
+            "bpk2" : {
+              "type" : "string",
+              "description" : "The bpk2 of the BundId user",
+              "example" : "VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0"
+            },
+            "dateOfBirth" : {
+              "type" : "string",
+              "description" : "The date of birth of the Person.",
+              "format" : "date",
+              "example" : "2000-01-01"
+            },
+            "emailAddress" : {
+              "maxLength" : 254,
+              "minLength" : 6,
+              "type" : "string",
+              "description" : "The email addresses of the Person.",
+              "example" : "mail@address.de"
+            },
+            "firstName" : {
+              "maxLength" : 80,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The given name(s) of the Person.",
+              "example" : "John"
+            },
+            "lastName" : {
+              "maxLength" : 120,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The last name of the Person.",
+              "example" : "Doe"
+            },
+            "phoneNumber" : {
+              "maxLength" : 23,
+              "minLength" : 0,
+              "type" : "string",
+              "description" : "The phone number of the Person.",
+              "example" : "+491234567890"
+            },
+            "salutation" : {
+              "$ref" : "#/components/schemas/Salutation"
+            },
+            "title" : {
+              "maxLength" : 119,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The academic title of the Person.",
+              "example" : "Prof. Dr."
+            }
+          }
+        } ]
+      },
+      "GdprProcedureType" : {
+        "type" : "string",
+        "description" : "A list of types of GDPR procedures.",
+        "enum" : [ "RIGHT_OF_ACCESS", "RIGHT_TO_ERASURE" ]
+      },
+      "GdprValidationTask" : {
+        "required" : [ "dueDate", "gdprProcedureId", "identificationData", "status", "type" ],
+        "type" : "object",
+        "properties" : {
+          "dueDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "gdprProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "identificationData" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GdprFacility"
+            }, {
+              "$ref" : "#/components/schemas/GdprPerson"
+            } ]
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/GdprProcedureType"
+          }
+        }
+      },
+      "GdprValidationTaskSortKey" : {
+        "type" : "string",
+        "enum" : [ "CREATED_AT" ]
+      },
+      "GdprValidationTaskStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "Gender" : {
+        "type" : "string",
+        "description" : "The list of genders as specified in the German Personenstandsgesetz.",
+        "enum" : [ "NOT_SPECIFIED", "DIVERSE", "FEMALE", "MALE" ]
+      },
+      "GenericFileReference" : {
+        "required" : [ "@type", "deletable", "deleted", "fileId" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFileReference"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "GetAllValidationTasksResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GdprValidationTask"
+            }
+          },
+          "totalNumberOfElements" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetAppointmentBlock" : {
+        "required" : [ "end", "id", "numberOfBookedAppointments", "numberOfFreeAppointments", "start" ],
+        "type" : "object",
+        "properties" : {
+          "end" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block ends.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:45:00.123456+01:00"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the AppointmentBlock.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "numberOfBookedAppointments" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "numberOfFreeAppointments" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "start" : {
+            "type" : "string",
+            "description" : "Time at which the appointment block starts.",
+            "format" : "date-time",
+            "example" : "2016-01-01T01:00:00.123456+01:00"
+          }
+        },
+        "description" : "A planned appointment block. Appointment blocks offer a set of bookable appointments at different times within the timeframe of the appointment block."
+      },
+      "GetAppointmentBlockGroup" : {
+        "required" : [ "appointmentBlocks", "id", "parallelExaminations", "type" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlocks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GetAppointmentBlock"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the AppointmentBlockGroup.",
+            "format" : "uuid",
+            "example" : "UUID_1"
+          },
+          "location" : {
+            "$ref" : "#/components/schemas/AppointmentLocation"
+          },
+          "parallelExaminations" : {
+            "maximum" : 10,
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          }
+        }
+      },
+      "GetAppointmentBlockGroupsResponse" : {
+        "required" : [ "elements", "totalNumberOfElements" ],
+        "type" : "object",
+        "properties" : {
+          "elements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GetAppointmentBlockGroup"
+            }
+          },
+          "totalNumberOfElements" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "GetAppointmentDetailsResponse" : {
+        "required" : [ "bookingsRemaining", "dateOfBirth", "firstName", "hasAccomplishedService", "informationStatementSummaries", "isMedicalHistoryCompletelyAnswered", "lastName", "medicalHistoryCitizenHasAnswered", "summaryDto" ],
+        "type" : "object",
+        "properties" : {
+          "bookingsRemaining" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "hasAccomplishedService" : {
+            "type" : "boolean"
+          },
+          "informationStatementSummaries" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InformationStatementSummary"
+            }
+          },
+          "isMedicalHistoryCompletelyAnswered" : {
+            "type" : "boolean"
+          },
+          "lastName" : {
+            "type" : "string"
+          },
+          "medicalHistoryCitizenHasAnswered" : {
+            "type" : "boolean"
+          },
+          "summaryDto" : {
+            "$ref" : "#/components/schemas/AppointmentSummary"
+          }
+        }
+      },
+      "GetAppointmentOverviewResponse" : {
+        "required" : [ "appointmentOverviewEntries" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentOverviewEntries" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AppointmentOverviewEntry"
+            }
+          }
+        }
+      },
+      "GetAppointmentTypesResponse" : {
+        "required" : [ "appointmentTypeConfigDtos" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentTypeConfigDtos" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AppointmentTypeConfig"
+            }
+          }
+        }
+      },
+      "GetArchivableProceduresResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetArchivableProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CLOSED_AT",
+        "enum" : [ "CLOSED_AT", "PROCEDURE_TYPE" ]
+      },
+      "GetArchivableProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetArchivingConfigurationResponse" : {
+        "required" : [ "archivingDetails", "gracePeriodMonths" ],
+        "type" : "object",
+        "properties" : {
+          "archivingDetails" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/ArchivingDetails"
+            }
+          },
+          "gracePeriodMonths" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetAssignableServicesResponse" : {
+        "required" : [ "assignableServices" ],
+        "type" : "object",
+        "properties" : {
+          "assignableServices" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AssignableService"
+            }
+          }
+        }
+      },
+      "GetAvailableAppointmentsResponse" : {
+        "required" : [ "appointmentSummaryList" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentSummaryList" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AppointmentSummary"
+            }
+          }
+        }
+      },
+      "GetCertificatesResponse" : {
+        "required" : [ "certificates" ],
+        "type" : "object",
+        "properties" : {
+          "certificates" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TMCertificate"
+            }
+          }
+        }
+      },
+      "GetCitizenAppointmentOverviewResponse" : {
+        "required" : [ "closedAppointments", "openAppointments", "procedureId" ],
+        "type" : "object",
+        "properties" : {
+          "closedAppointments" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AppointmentSummary"
+            }
+          },
+          "openAppointments" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AppointmentSummary"
+            }
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GetDepartmentInfoResponse" : {
+        "required" : [ "city", "country", "email", "homepage", "houseNumber", "location", "name", "phoneNumber", "postalCode", "street" ],
+        "type" : "object",
+        "properties" : {
+          "abbreviation" : {
+            "type" : "string",
+            "description" : "The abbreviation of the name of the department",
+            "example" : "LTG"
+          },
+          "city" : {
+            "type" : "string",
+            "description" : "The name of the city where the department is located",
+            "example" : "Berlin"
+          },
+          "country" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "email" : {
+            "type" : "string",
+            "description" : "The email address of the department",
+            "example" : "mail@address.de"
+          },
+          "homepage" : {
+            "type" : "string",
+            "description" : "The domain of the department's official homepage, excluding protocols",
+            "example" : "department-homepage.de"
+          },
+          "houseNumber" : {
+            "type" : "string",
+            "description" : "The house number at the department's address, including any extensions or suffixes",
+            "example" : "1b"
+          },
+          "location" : {
+            "$ref" : "#/components/schemas/Location"
+          },
+          "name" : {
+            "type" : "string",
+            "description" : "The name of the department",
+            "example" : "Gesundheitsamt Landkreis Testgebiet"
+          },
+          "phoneNumber" : {
+            "type" : "string",
+            "description" : "The primary contact telephone number for the department",
+            "example" : "+491234567890"
+          },
+          "postalCode" : {
+            "type" : "string",
+            "description" : "The postal code for the department’s address",
+            "example" : "12345"
+          },
+          "street" : {
+            "type" : "string",
+            "description" : "The street name for the department’s address, not including the house number",
+            "example" : "Beispielweg"
+          }
+        }
+      },
+      "GetDetailedProcedureResponse" : {
+        "required" : [ "facilities", "persons", "procedure", "tasks" ],
+        "type" : "object",
+        "properties" : {
+          "facilities" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedFacility"
+            }
+          },
+          "persons" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedPerson"
+            }
+          },
+          "procedure" : {
+            "$ref" : "#/components/schemas/Procedure"
+          },
+          "tasks" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/DetailedTask"
+            }
+          }
+        }
+      },
+      "GetDiseasesResponse" : {
+        "required" : [ "diseases" ],
+        "type" : "object",
+        "properties" : {
+          "diseases" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Disease"
+            }
+          }
+        }
+      },
+      "GetFacilityFileStateResponse" : {
+        "required" : [ "contactPersons", "dataOrigin", "emailAddresses", "id", "name", "phoneNumbers", "referenceVersion" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "contactPersons" : {
+            "type" : "array",
+            "description" : "A list of contact persons of the Facility.",
+            "items" : {
+              "$ref" : "#/components/schemas/FacilityContactPerson"
+            }
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Facility.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Facility.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "name" : {
+            "maxLength" : 300,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The name of the Facility.",
+            "example" : "Example Facility"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referenceFacility it is connected to.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Facility.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          }
+        }
+      },
+      "GetFreeAppointmentsResponse" : {
+        "required" : [ "appointments" ],
+        "type" : "object",
+        "properties" : {
+          "appointments" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Appointment"
+            }
+          }
+        }
+      },
+      "GetGdprDownloadPackagesInfoResponse" : {
+        "required" : [ "downloadPackages" ],
+        "type" : "object",
+        "properties" : {
+          "downloadPackages" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/GdprDownloadPackageInfo"
+            }
+          }
+        }
+      },
+      "GetGdprNotificationBannerResponse" : {
+        "required" : [ "openValidationTasksCount" ],
+        "type" : "object",
+        "properties" : {
+          "earliestDueDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "openValidationTasksCount" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetGdprValidationTaskDetailsResponse" : {
+        "required" : [ "proceduresWithStatus", "validationTask" ],
+        "type" : "object",
+        "properties" : {
+          "proceduresWithStatus" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/BusinessProcedureWithInclusionStatus"
+            }
+          },
+          "validationTask" : {
+            "$ref" : "#/components/schemas/GdprValidationTask"
+          }
+        }
+      },
+      "GetGdprValidationTaskResponse" : {
+        "required" : [ "status" ],
+        "type" : "object",
+        "properties" : {
+          "status" : {
+            "$ref" : "#/components/schemas/GdprValidationTaskStatus"
+          }
+        }
+      },
+      "GetInboxProcedureResponse" : {
+        "required" : [ "inboxProcedure", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProcedure" : {
+            "$ref" : "#/components/schemas/InboxProcedure"
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetInboxProceduresResponse" : {
+        "required" : [ "inboxProcedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "inboxProcedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InboxProcedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetInboxProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "CREATED_AT" ]
+      },
+      "GetInboxProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetInformationStatementTemplatesResponse" : {
+        "required" : [ "informationStatementTemplates" ],
+        "type" : "object",
+        "properties" : {
+          "informationStatementTemplates" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InformationStatementTemplate"
+            }
+          }
+        }
+      },
+      "GetInformationStatementsResponse" : {
+        "required" : [ "informationStatements", "procedureId" ],
+        "type" : "object",
+        "properties" : {
+          "informationStatements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InformationStatement"
+            }
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GetInventoryVaccinesWithoutRmbiVaccineResponse" : {
+        "required" : [ "inventoryVaccineWithoutRmbiVaccineList" ],
+        "type" : "object",
+        "properties" : {
+          "inventoryVaccineWithoutRmbiVaccineList" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InventoryVaccineWithoutRmbiVaccine"
+            }
+          }
+        }
+      },
+      "GetManualProgressEntryHistoryResponse" : {
+        "type" : "object",
+        "properties" : {
+          "manualProgressEntryHistory" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ManualProgressEntryHistory"
+            }
+          }
+        }
+      },
+      "GetMedicalHistoriesResponse" : {
+        "required" : [ "medicalHistories", "procedureId" ],
+        "type" : "object",
+        "properties" : {
+          "medicalHistories" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/MedicalHistory"
+            }
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GetMedicalHistoryTemplatesResponse" : {
+        "required" : [ "medicalHistoryTemplates" ],
+        "type" : "object",
+        "properties" : {
+          "medicalHistoryTemplates" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/MedicalHistoryTemplate"
+            }
+          }
+        }
+      },
+      "GetMetaDataHistoryResponse" : {
+        "type" : "object",
+        "properties" : {
+          "metaDataHistory" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ImageMetaDataHistory"
+              }, {
+                "$ref" : "#/components/schemas/MailMetaDataHistory"
+              }, {
+                "$ref" : "#/components/schemas/PdfMetaDataHistory"
+              } ]
+            }
+          }
+        }
+      },
+      "GetOpeningHoursResponse" : {
+        "required" : [ "de", "en" ],
+        "type" : "object",
+        "properties" : {
+          "de" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "en" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        }
+      },
+      "GetOtherServiceTemplatesResponse" : {
+        "required" : [ "otherServiceTemplates" ],
+        "type" : "object",
+        "properties" : {
+          "otherServiceTemplates" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/OtherServiceTemplate"
+            }
+          }
+        }
+      },
+      "GetPersonFileStateResponse" : {
+        "required" : [ "dataOrigin", "dateOfBirth", "emailAddresses", "firstName", "gender", "id", "lastName", "phoneNumbers", "referenceVersion", "salutation" ],
+        "type" : "object",
+        "properties" : {
+          "contactAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dataOrigin" : {
+            "$ref" : "#/components/schemas/DataOrigin"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "description" : "The date of birth of the Person.",
+            "format" : "date",
+            "example" : "2000-01-01"
+          },
+          "differentBillingAddress" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/DomesticAddress"
+            }, {
+              "$ref" : "#/components/schemas/PostboxAddress"
+            } ]
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "description" : "A list of email addresses of the Person.",
+            "example" : "['mail1@address.de','mail2@address.de','mail3@address.de']",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The given name(s) of the Person.",
+            "example" : "John"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "id" : {
+            "type" : "string",
+            "description" : "Id of the Person.",
+            "format" : "uuid",
+            "example" : "UUID_2"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name of the Person.",
+            "example" : "Doe"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The last name at birth of the Person.",
+            "example" : "Smith"
+          },
+          "outdated" : {
+            "type" : "boolean",
+            "description" : "A flag that signals if a File State differs from the referencePerson it is connected to. Set to 'null' if unchecked.",
+            "example" : true
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "description" : "A list of telephone numbers of the Person.",
+            "example" : "['+4912345678901','+4912345678902','+4912345678903']",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The place of birth (without country) of the Person.",
+            "example" : "Berlin"
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "description" : "The version of referenceData that was present when the FileState was created. Can be increased if a newer version is irrelevant for the Procedure and the outdated flag shall be suppressed.",
+            "format" : "int64",
+            "example" : 1
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string",
+            "description" : "The academic title of a Person.",
+            "example" : "Prof. Dr."
+          }
+        }
+      },
+      "GetProcedureApprovalRequestsResponse" : {
+        "required" : [ "approvalRequests", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "approvalRequests" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ApprovalRequest"
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetProcedureFileDetailsResponse" : {
+        "required" : [ "fileDetails", "procedureId" ],
+        "type" : "object",
+        "properties" : {
+          "fileDetails" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProgressEntryReferenceFilePair"
+            }
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "GetProcedureMetricsResponse" : {
+        "required" : [ "procedureMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "procedureMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureMetric"
+            }
+          }
+        }
+      },
+      "GetProcedureStepServicesResponse" : {
+        "required" : [ "procedureStepServices" ],
+        "type" : "object",
+        "properties" : {
+          "procedureStepServices" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStepService"
+            }
+          }
+        }
+      },
+      "GetProceduresResponse" : {
+        "required" : [ "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "MODIFIED_AT", "CREATED_AT" ]
+      },
+      "GetProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetProgressEntriesResponse" : {
+        "required" : [ "progressEntries", "resolvedUsers", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "progressEntries" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ManualProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/ProcessedInboxProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/SystemProgressEntry"
+              } ]
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetProgressEntryResponse" : {
+        "required" : [ "progressEntry", "relatedKeyDocumentProgressEntries", "resolvedUsers" ],
+        "type" : "object",
+        "properties" : {
+          "progressEntry" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/ManualProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/ProcessedInboxProgressEntry"
+            }, {
+              "$ref" : "#/components/schemas/SystemProgressEntry"
+            } ]
+          },
+          "relatedKeyDocumentProgressEntries" : {
+            "type" : "array",
+            "items" : {
+              "oneOf" : [ {
+                "$ref" : "#/components/schemas/ManualProgressEntry"
+              }, {
+                "$ref" : "#/components/schemas/SystemProgressEntry"
+              } ]
+            }
+          },
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          }
+        }
+      },
+      "GetRecentProceduresResponse" : {
+        "required" : [ "procedures" ],
+        "type" : "object",
+        "properties" : {
+          "procedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          }
+        }
+      },
+      "GetRelevantArchivableProceduresResponse" : {
+        "required" : [ "fileSizeBytes", "procedures", "totalElements", "totalPages" ],
+        "type" : "object",
+        "properties" : {
+          "fileSizeBytes" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "procedures" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Procedure"
+            }
+          },
+          "totalElements" : {
+            "type" : "integer",
+            "description" : "Total number of result elements for the given filter criteria",
+            "format" : "int64"
+          },
+          "totalPages" : {
+            "type" : "integer",
+            "description" : "Total number of result pages for the given filter criteria",
+            "format" : "int32"
+          }
+        }
+      },
+      "GetRelevantArchivableProceduresSortBy" : {
+        "type" : "string",
+        "default" : "CLOSED_AT",
+        "enum" : [ "CLOSED_AT", "EXPORTED_AT" ]
+      },
+      "GetRelevantArchivableProceduresSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetStepsWithAppliedServicesResponse" : {
+        "required" : [ "procedureId", "stepWithAppliedServices" ],
+        "type" : "object",
+        "properties" : {
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "stepWithAppliedServices" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/StepWithAppliedServices"
+            }
+          }
+        }
+      },
+      "GetTaskByUserResponse" : {
+        "required" : [ "resolvedUsers", "tasksByUser" ],
+        "type" : "object",
+        "properties" : {
+          "resolvedUsers" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/components/schemas/User"
+            }
+          },
+          "tasksByUser" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/components/schemas/Task"
+              }
+            }
+          }
+        }
+      },
+      "GetTaskMetricsResponse" : {
+        "required" : [ "businessModule", "closedProcedureCount", "fastestProcedures", "procedureType", "slowestProcedures", "taskMetrics" ],
+        "type" : "object",
+        "properties" : {
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedProcedureCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "fastestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "slowestProcedures" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureWithDuration"
+            }
+          },
+          "taskMetrics" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TaskMetric"
+            }
+          }
+        }
+      },
+      "GetTasksSortBy" : {
+        "type" : "string",
+        "enum" : [ "PRIORITY", "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "GetTasksSortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "GetTravelMedicineFeatureTogglesResponse" : {
+        "required" : [ "disabledOldFeatures", "enabledNewFeatures" ],
+        "type" : "object",
+        "properties" : {
+          "disabledOldFeatures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TravelMedicineFeature"
+            }
+          },
+          "enabledNewFeatures" : {
+            "uniqueItems" : true,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TravelMedicineFeature"
+            }
+          }
+        }
+      },
+      "GetVaccinationConsultationDetailsResponse" : {
+        "required" : [ "createdByUserType", "initialProcedureStepId", "patient", "personSync", "procedureId", "servicePlanGroups", "status", "travelInformation" ],
+        "type" : "object",
+        "properties" : {
+          "createdByUserType" : {
+            "$ref" : "#/components/schemas/CreatedByUserType"
+          },
+          "initialProcedureStepId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "patient" : {
+            "$ref" : "#/components/schemas/Patient"
+          },
+          "personSync" : {
+            "$ref" : "#/components/schemas/PersonSync"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "servicePlanGroups" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ServicePlanGroup"
+            }
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "travelInformation" : {
+            "$ref" : "#/components/schemas/TravelInformation"
+          }
+        }
+      },
+      "GetVaccinesResponse" : {
+        "required" : [ "vaccines" ],
+        "type" : "object",
+        "properties" : {
+          "vaccines" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Vaccine"
+            }
+          }
+        }
+      },
+      "HttpMethod" : {
+        "type" : "string",
+        "enum" : [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE" ]
+      },
+      "Image" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/ImageMetaData"
+            }
+          }
+        } ]
+      },
+      "ImageMetaData" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "ImageMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "imageMetaData" : {
+              "$ref" : "#/components/schemas/ImageMetaData"
+            }
+          }
+        } ]
+      },
+      "InboxProcedure" : {
+        "required" : [ "contactDetails", "createdAt", "createdBy", "inboxProcedureId", "inboxProcedureStatus", "inboxProgressEntry" ],
+        "type" : "object",
+        "properties" : {
+          "closedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "contactDetails" : {
+            "$ref" : "#/components/schemas/ContactDetails"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdBy" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProcedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProcedureStatus" : {
+            "$ref" : "#/components/schemas/InboxProcedureStatus"
+          },
+          "inboxProcedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "inboxProgressEntry" : {
+            "$ref" : "#/components/schemas/InboxProgressEntry"
+          }
+        }
+      },
+      "InboxProcedureAddress" : {
+        "type" : "object",
+        "properties" : {
+          "addressAddition" : {
+            "type" : "string"
+          },
+          "city" : {
+            "type" : "string"
+          },
+          "country" : {
+            "type" : "string"
+          },
+          "houseNumber" : {
+            "type" : "string"
+          },
+          "postalCode" : {
+            "type" : "string"
+          },
+          "postboxNumber" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "street" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InboxProcedureStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "InboxProgressEntry" : {
+        "required" : [ "inboxProgressEntryId", "inboxProgressEntryType" ],
+        "type" : "object",
+        "properties" : {
+          "fileReference" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GenericFileReference"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "inboxProgressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inboxProgressEntryType" : {
+            "$ref" : "#/components/schemas/InboxProgressEntryType"
+          },
+          "messageText" : {
+            "type" : "string"
+          },
+          "subject" : {
+            "type" : "string"
+          }
+        }
+      },
+      "InboxProgressEntryType" : {
+        "type" : "string",
+        "enum" : [ "LETTER", "PHONE_CALL", "EMAIL" ]
+      },
+      "InformationStatement" : {
+        "required" : [ "citizenHasAnswered", "content", "createdAt", "id", "modifiedAt", "title" ],
+        "type" : "object",
+        "properties" : {
+          "citizenHasAnswered" : {
+            "type" : "boolean"
+          },
+          "content" : {
+            "$ref" : "#/components/schemas/DocumentContent"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "title" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          }
+        }
+      },
+      "InformationStatementPopulation" : {
+        "required" : [ "key", "templateId" ],
+        "type" : "object",
+        "properties" : {
+          "answered" : {
+            "type" : "boolean"
+          },
+          "key" : {
+            "type" : "string"
+          },
+          "templateId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "InformationStatementSummary" : {
+        "required" : [ "citizenHasAnswered", "id", "title" ],
+        "type" : "object",
+        "properties" : {
+          "citizenHasAnswered" : {
+            "type" : "boolean"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "title" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          }
+        }
+      },
+      "InformationStatementTemplate" : {
+        "required" : [ "content", "createdAt", "diseases", "id", "name", "state", "title" ],
+        "type" : "object",
+        "properties" : {
+          "content" : {
+            "$ref" : "#/components/schemas/TemplateContent"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "diseases" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Disease"
+            }
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "name" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "state" : {
+            "$ref" : "#/components/schemas/InformationStatementTemplateState"
+          },
+          "title" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          }
+        }
+      },
+      "InformationStatementTemplateRequest" : {
+        "required" : [ "content", "name", "state", "title" ],
+        "type" : "object",
+        "properties" : {
+          "content" : {
+            "$ref" : "#/components/schemas/TemplateContent"
+          },
+          "diseaseIDs" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "name" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "state" : {
+            "$ref" : "#/components/schemas/InformationStatementTemplateState"
+          },
+          "title" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          }
+        }
+      },
+      "InformationStatementTemplateState" : {
+        "type" : "string",
+        "enum" : [ "DRAFT", "FINAL" ]
+      },
+      "InitialStepPopulation" : {
+        "required" : [ "initialStepKey" ],
+        "type" : "object",
+        "properties" : {
+          "initialStepKey" : {
+            "type" : "string"
+          },
+          "serviceKeys" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          }
+        },
+        "description" : "request some services to be attached to the procedure's initial step/appointment, also assign a key to the initial step"
+      },
+      "InsertRequestInterceptionTestHelperRequest" : {
+        "required" : [ "type" ],
+        "type" : "object",
+        "properties" : {
+          "filter" : {
+            "$ref" : "#/components/schemas/TestHelperInterceptionRequestFilter"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/InterceptionType"
+          }
+        }
+      },
+      "InterceptionType" : {
+        "type" : "string",
+        "enum" : [ "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "INTERNAL_SERVER_ERROR" ]
+      },
+      "InventoryVaccineWithoutRmbiVaccine" : {
+        "required" : [ "id", "name" ],
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "type" : "string"
+          }
+        }
+      },
+      "KeyDocumentAwareProgressEntry" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "keyDocumentType" : {
+            "type" : "string"
+          },
+          "keyDocumentVersion" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "Location" : {
+        "required" : [ "latitude", "longitude" ],
+        "type" : "object",
+        "properties" : {
+          "latitude" : {
+            "type" : "number",
+            "description" : "Geographic coordinate that specifies the north–south angular location of a point on the surface of the Earth.",
+            "format" : "double",
+            "example" : 52.51627
+          },
+          "longitude" : {
+            "type" : "number",
+            "description" : "Geographic coordinate that specifies the east–west angular position of a point on the surface of the Earth.",
+            "format" : "double",
+            "example" : 13.377703
+          }
+        },
+        "description" : "Location defined by latitude and longitude."
+      },
+      "Mail" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt", "removedInvalidAttachments" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/MailMetaData"
+            },
+            "removedInvalidAttachments" : {
+              "type" : "integer",
+              "format" : "int32"
+            }
+          }
+        } ]
+      },
+      "MailMetaData" : {
+        "required" : [ "mailFrom", "mailTo", "messageText", "sentDate", "subject" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "mailFrom" : {
+              "type" : "string"
+            },
+            "mailTo" : {
+              "type" : "string"
+            },
+            "messageText" : {
+              "type" : "string"
+            },
+            "sentDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            },
+            "subject" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "MailMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "mailMetaData" : {
+              "$ref" : "#/components/schemas/MailMetaData"
+            }
+          }
+        } ]
+      },
+      "ManualProgressEntry" : {
+        "required" : [ "createdAt", "createdBy", "locked", "manualProgressEntryType", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "keyDocumentType" : {
+              "type" : "string"
+            },
+            "keyDocumentVersion" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "locked" : {
+              "type" : "boolean"
+            },
+            "manualProgressEntryType" : {
+              "$ref" : "#/components/schemas/ManualProgressEntryType"
+            },
+            "note" : {
+              "type" : "string"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/ApprovalRequestEntity"
+        }, {
+          "$ref" : "#/components/schemas/KeyDocumentAwareProgressEntry"
+        } ]
+      },
+      "ManualProgressEntryHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "properties" : {
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "manualProgressEntry" : {
+            "$ref" : "#/components/schemas/ManualProgressEntry"
+          }
+        }
+      },
+      "ManualProgressEntryType" : {
+        "type" : "string",
+        "enum" : [ "LETTER", "PHONE_CALL", "NOTE", "EMAIL", "IMAGE", "DOCUMENT" ]
+      },
+      "MedicalHistory" : {
+        "required" : [ "appointment", "citizenHasAnswered", "createdAt", "followUp", "id", "isCompletelyAnswered", "medicalHistoryContent", "modifiedAt", "procedureStepId" ],
+        "type" : "object",
+        "properties" : {
+          "appointment" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "citizenHasAnswered" : {
+            "type" : "boolean"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "followUp" : {
+            "type" : "boolean"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "isCompletelyAnswered" : {
+            "type" : "boolean"
+          },
+          "medicalHistoryContent" : {
+            "$ref" : "#/components/schemas/DocumentContent"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "note" : {
+            "type" : "string"
+          },
+          "procedureStepId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "MedicalHistoryTemplate" : {
+        "required" : [ "content", "createdAt", "followUpFlag", "id", "mainFlag", "state", "title" ],
+        "type" : "object",
+        "properties" : {
+          "content" : {
+            "$ref" : "#/components/schemas/TemplateContent"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "followUpFlag" : {
+            "type" : "boolean"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "mainFlag" : {
+            "type" : "boolean"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "state" : {
+            "$ref" : "#/components/schemas/MedicalHistoryTemplateState"
+          },
+          "title" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          }
+        }
+      },
+      "MedicalHistoryTemplateState" : {
+        "type" : "string",
+        "enum" : [ "DRAFT", "FINAL" ]
+      },
+      "MetaData" : {
+        "required" : [ "@type" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "description" : {
+            "type" : "string"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "MetaDataHistory" : {
+        "required" : [ "@type", "changedAt" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "changedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "Operation" : {
+        "type" : "string",
+        "enum" : [ "DELETE" ]
+      },
+      "OtherServicePopulation" : {
+        "required" : [ "request", "serviceKey" ],
+        "type" : "object",
+        "properties" : {
+          "request" : {
+            "$ref" : "#/components/schemas/PostOtherServiceRequest"
+          },
+          "serviceKey" : {
+            "type" : "string"
+          }
+        },
+        "description" : "request the creation of an \"other service\" and assign a user defined key"
+      },
+      "OtherServiceTemplate" : {
+        "required" : [ "createdAt", "description", "fee", "id", "modifiedAt" ],
+        "type" : "object",
+        "properties" : {
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "description" : {
+            "type" : "string"
+          },
+          "fee" : {
+            "type" : "number"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "PatchAcceptDraftRequest" : {
+        "type" : "object",
+        "properties" : {
+          "referencePersonId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "PatchAppointmentRequest" : {
+        "required" : [ "appointmentBookingType", "appointmentStart", "appointmentType", "durationInMinutes" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBookingType" : {
+            "$ref" : "#/components/schemas/AppointmentBookingType"
+          },
+          "appointmentStart" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "appointmentType" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          },
+          "durationInMinutes" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "PatchEarliestDateRequest" : {
+        "required" : [ "earliestDate" ],
+        "type" : "object",
+        "properties" : {
+          "earliestDate" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }
+      },
+      "PatchInformationStatementRequest" : {
+        "required" : [ "documentContentDto", "signer" ],
+        "type" : "object",
+        "properties" : {
+          "documentContentDto" : {
+            "$ref" : "#/components/schemas/DocumentContent"
+          },
+          "signer" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          }
+        }
+      },
+      "PatchManualProgressEntryRequest" : {
+        "type" : "object",
+        "properties" : {
+          "manualProgressEntryType" : {
+            "$ref" : "#/components/schemas/ManualProgressEntryType"
+          },
+          "note" : {
+            "type" : "string",
+            "nullable" : true
+          }
+        }
+      },
+      "PatchMedicalHistoryRequest" : {
+        "required" : [ "medicalHistoryContent", "procedureId" ],
+        "type" : "object",
+        "properties" : {
+          "medicalHistoryContent" : {
+            "$ref" : "#/components/schemas/DocumentContent"
+          },
+          "note" : {
+            "maxLength" : 4000,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "PatchMedicalHistoryTemplateFlagRequest" : {
+        "required" : [ "flag" ],
+        "type" : "object",
+        "properties" : {
+          "flag" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "PatchOtherServiceRequest" : {
+        "required" : [ "appliedAt", "physician" ],
+        "type" : "object",
+        "properties" : {
+          "appliedAt" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "mfa" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "physician" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "PatchServiceAssignmentRequest" : {
+        "required" : [ "procedureStepId" ],
+        "type" : "object",
+        "properties" : {
+          "procedureStepId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "PatchVaccinationConsultationPatientRequest" : {
+        "required" : [ "patient" ],
+        "type" : "object",
+        "properties" : {
+          "patient" : {
+            "$ref" : "#/components/schemas/Patient"
+          }
+        }
+      },
+      "PatchVaccinationConsultationTravelDetailsRequest" : {
+        "required" : [ "travelDestinations", "travelType" ],
+        "type" : "object",
+        "properties" : {
+          "travelDestinations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            }
+          },
+          "travelStartDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "travelTimeAmount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "travelTimeUnit" : {
+            "$ref" : "#/components/schemas/TravelTimeUnit"
+          },
+          "travelType" : {
+            "$ref" : "#/components/schemas/TravelType"
+          }
+        }
+      },
+      "PatchVaccinationRequest" : {
+        "required" : [ "appliedAt", "batchIdentifier", "physician" ],
+        "type" : "object",
+        "properties" : {
+          "appliedAt" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "batchIdentifier" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "mfa" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "physician" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "Patient" : {
+        "required" : [ "dateOfBirth", "firstName", "lastName" ],
+        "type" : "object",
+        "properties" : {
+          "address" : {
+            "$ref" : "#/components/schemas/PersonAddress"
+          },
+          "countryOfBirth" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "emailAddresses" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "firstName" : {
+            "maxLength" : 80,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "gender" : {
+            "$ref" : "#/components/schemas/Gender"
+          },
+          "lastName" : {
+            "maxLength" : 120,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "nameAtBirth" : {
+            "maxLength" : 40,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "phoneNumbers" : {
+            "type" : "array",
+            "items" : {
+              "maxLength" : 23,
+              "minLength" : 1,
+              "type" : "string"
+            }
+          },
+          "placeOfBirth" : {
+            "maxLength" : 50,
+            "minLength" : 1,
+            "type" : "string"
+          },
+          "salutation" : {
+            "$ref" : "#/components/schemas/Salutation"
+          },
+          "title" : {
+            "maxLength" : 119,
+            "minLength" : 1,
+            "type" : "string"
+          }
+        }
+      },
+      "Pdf" : {
+        "required" : [ "@type", "createdAt", "deletable", "deleted", "fileId", "fileName", "fileSizeBytes", "fileType", "locked", "modifiedAt" ],
+        "type" : "object",
+        "discriminator" : {
+          "propertyName" : "@type"
+        },
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/AbstractFile"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "@type" : {
+              "type" : "string"
+            },
+            "metaData" : {
+              "$ref" : "#/components/schemas/PdfMetaData"
+            }
+          }
+        } ]
+      },
+      "PdfMetaData" : {
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaData"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdDate" : {
+              "type" : "string",
+              "format" : "date-time"
+            }
+          }
+        } ]
+      },
+      "PdfMetaDataHistory" : {
+        "required" : [ "changedAt" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/MetaDataHistory"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "pdfMetaData" : {
+              "$ref" : "#/components/schemas/PdfMetaData"
+            }
+          }
+        } ]
+      },
+      "PersonAddress" : {
+        "required" : [ "city", "country", "postalCode", "street" ],
+        "type" : "object",
+        "properties" : {
+          "addressAddition" : {
+            "maxLength" : 100,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "city" : {
+            "maxLength" : 50,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "country" : {
+            "$ref" : "#/components/schemas/CountryCode"
+          },
+          "houseNumber" : {
+            "maxLength" : 11,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "postalCode" : {
+            "type" : "string"
+          },
+          "street" : {
+            "maxLength" : 55,
+            "minLength" : 0,
+            "type" : "string"
+          }
+        }
+      },
+      "PersonSync" : {
+        "required" : [ "fileStateId", "outdated", "version" ],
+        "type" : "object",
+        "properties" : {
+          "fileStateId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "outdated" : {
+            "type" : "boolean"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "PersonType" : {
+        "type" : "string",
+        "enum" : [ "PATIENT", "PARENT", "PROFESSIONAL" ]
+      },
+      "Population" : {
+        "required" : [ "numberOfPopulatedEntities", "totalNumberOfEntities" ],
+        "type" : "object",
+        "properties" : {
+          "numberOfPopulatedEntities" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "populatorName" : {
+            "type" : "string"
+          },
+          "totalNumberOfEntities" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "PostCitizenVaccinationConsultationRequest" : {
+        "required" : [ "appointmentStart", "durationInMinutes", "initialStepAppointmentType", "patient", "travelInformation" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentStart" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "durationInMinutes" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "initialStepAppointmentType" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          },
+          "patient" : {
+            "$ref" : "#/components/schemas/Patient"
+          },
+          "travelInformation" : {
+            "$ref" : "#/components/schemas/TravelInformation"
+          }
+        }
+      },
+      "PostInformationStatementsRequest" : {
+        "required" : [ "templateIds" ],
+        "type" : "object",
+        "properties" : {
+          "templateIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "PostOtherServiceRequest" : {
+        "required" : [ "description", "fee" ],
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "fee" : {
+            "type" : "number"
+          }
+        }
+      },
+      "PostPopulateAdministrativeResponse" : {
+        "required" : [ "appointmentBlockGroupsCreated", "diseasesCreated", "informationStatementTemplatesCreated", "inventoryVaccinesCreated", "otherServiceTemplatesCreated", "vaccinesCreated" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBlockGroupsCreated" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "diseasesCreated" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "informationStatementTemplatesCreated" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "inventoryVaccinesCreated" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "otherServiceTemplatesCreated" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "vaccinesCreated" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "PostPopulateProcedureRequest" : {
+        "type" : "object",
+        "properties" : {
+          "cancelSteps" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "certificates" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CertificatePopulation"
+            }
+          },
+          "citizenProcedureData" : {
+            "$ref" : "#/components/schemas/PostCitizenVaccinationConsultationRequest"
+          },
+          "executeOtherServices" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "executeVaccinations" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "informationStatements" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/InformationStatementPopulation"
+            }
+          },
+          "initialStep" : {
+            "$ref" : "#/components/schemas/InitialStepPopulation"
+          },
+          "otherServices" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/OtherServicePopulation"
+            }
+          },
+          "procedureData" : {
+            "$ref" : "#/components/schemas/PostVaccinationConsultationRequest"
+          },
+          "procedureSteps" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ProcedureStepPopulation"
+            }
+          },
+          "targetState" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "vaccinations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/VaccinationPopulation"
+            }
+          }
+        }
+      },
+      "PostPopulateProcedureResponse" : {
+        "required" : [ "informationStatementsCreated", "procedureId", "procedureStepsCreated", "servicesCreated" ],
+        "type" : "object",
+        "properties" : {
+          "credentials" : {
+            "$ref" : "#/components/schemas/CitizenPortalCredentials"
+          },
+          "informationStatementsCreated" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "procedureStepsCreated" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "servicesCreated" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "PostProcedureStepRequest" : {
+        "required" : [ "appointmentBookingType", "services" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBookingType" : {
+            "$ref" : "#/components/schemas/AppointmentBookingType"
+          },
+          "appointmentStart" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "durationInMinutes" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "earliestDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "services" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      },
+      "PostPutCertificateRequest" : {
+        "required" : [ "procedureStepId", "serviceIds", "type" ],
+        "type" : "object",
+        "properties" : {
+          "procedureStepId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "serviceIds" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/CertificateType"
+          }
+        }
+      },
+      "PostPutDiseaseRequest" : {
+        "required" : [ "diseaseName", "visibleToCitizenPortal" ],
+        "type" : "object",
+        "properties" : {
+          "diseaseName" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "estimatedFee" : {
+            "type" : "number"
+          },
+          "visibleToCitizenPortal" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "PostPutMedicalHistoryTemplateRequest" : {
+        "required" : [ "content", "state", "title" ],
+        "type" : "object",
+        "properties" : {
+          "content" : {
+            "$ref" : "#/components/schemas/TemplateContent"
+          },
+          "state" : {
+            "$ref" : "#/components/schemas/MedicalHistoryTemplateState"
+          },
+          "title" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          }
+        }
+      },
+      "PostPutOtherServiceTemplateRequest" : {
+        "required" : [ "description", "fee" ],
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          },
+          "fee" : {
+            "type" : "number"
+          }
+        }
+      },
+      "PostPutVaccineRequest" : {
+        "required" : [ "diseaseId", "fee", "inventoryVaccineId", "name", "offsets" ],
+        "type" : "object",
+        "properties" : {
+          "currentBatchId" : {
+            "type" : "string"
+          },
+          "diseaseId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "fee" : {
+            "type" : "number"
+          },
+          "inventoryVaccineId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "name" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "offsets" : {
+            "type" : "array",
+            "items" : {
+              "type" : "integer",
+              "format" : "int32"
+            }
+          }
+        }
+      },
+      "PostServicesRequest" : {
+        "required" : [ "postOtherServiceRequests", "postVaccinationRequests" ],
+        "type" : "object",
+        "properties" : {
+          "postOtherServiceRequests" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/PostOtherServiceRequest"
+            }
+          },
+          "postVaccinationRequests" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/PostVaccinationRequest"
+            }
+          },
+          "procedureStepId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "PostVaccinationConsultationRequest" : {
+        "required" : [ "appointmentBookingType", "appointmentStart", "durationInMinutes", "initialStepAppointmentType", "patient", "travelDestinations", "travelType" ],
+        "type" : "object",
+        "properties" : {
+          "appointmentBookingType" : {
+            "$ref" : "#/components/schemas/AppointmentBookingType"
+          },
+          "appointmentStart" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "durationInMinutes" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "initialStepAppointmentType" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          },
+          "patient" : {
+            "$ref" : "#/components/schemas/Patient"
+          },
+          "travelDestinations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            }
+          },
+          "travelStartDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "travelTimeAmount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "travelTimeUnit" : {
+            "$ref" : "#/components/schemas/TravelTimeUnit"
+          },
+          "travelType" : {
+            "$ref" : "#/components/schemas/TravelType"
+          }
+        }
+      },
+      "PostVaccinationRequest" : {
+        "required" : [ "createSeries", "diseaseId", "vaccinationNumber", "vaccineId" ],
+        "type" : "object",
+        "properties" : {
+          "createSeries" : {
+            "type" : "boolean"
+          },
+          "diseaseId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "vaccinationNumber" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "vaccinationType" : {
+            "$ref" : "#/components/schemas/VaccinationType"
+          },
+          "vaccineId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "PostboxAddress" : {
+        "required" : [ "city", "country", "postalCode", "postbox" ],
+        "type" : "object",
+        "description" : "An address which is a postbox.",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/Address"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "city" : {
+              "maxLength" : 50,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The city in which the address is located.",
+              "example" : "Berlin"
+            },
+            "country" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            },
+            "differentName" : {
+              "maxLength" : 200,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "If the name of the addressee deviates from the present name of a Person or Facility, e.g. when a company pays the bill for its employee or a parent company shall be contacted instead of its subsidiary.",
+              "example" : "Parent Company AG"
+            },
+            "postalCode" : {
+              "maxLength" : 20,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The postal code of the address.",
+              "example" : "10115"
+            },
+            "postbox" : {
+              "maxLength" : 21,
+              "minLength" : 1,
+              "type" : "string",
+              "description" : "The number (or name) of the postbox.",
+              "example" : "123"
+            }
+          }
+        } ]
+      },
+      "Procedure" : {
+        "required" : [ "archivingRelevanceSettings", "businessModule", "createdAt", "modifiedAt", "procedureId", "procedureStatus", "procedureType", "summary" ],
+        "type" : "object",
+        "properties" : {
+          "archivingRelevanceSettings" : {
+            "$ref" : "#/components/schemas/ArchivingRelevanceSettings"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "exportedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "procedureStatus" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "pattern" : "[a-zA-Z0-9.].+",
+            "type" : "string"
+          }
+        }
+      },
+      "ProcedureMetric" : {
+        "required" : [ "abortedCount", "businessModule", "closedCount", "inProgressCount", "openOrDraftCount", "procedureType", "totalCount" ],
+        "type" : "object",
+        "properties" : {
+          "abortedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "closedCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "inProgressCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "openOrDraftCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "procedureType" : {
+            "$ref" : "#/components/schemas/ProcedureType"
+          },
+          "totalCount" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ProcedureStatus" : {
+        "type" : "string",
+        "enum" : [ "DRAFT", "OPEN", "IN_PROGRESS", "CLOSED", "ABORTED" ]
+      },
+      "ProcedureStepPopulation" : {
+        "required" : [ "request", "serviceKeys", "stepKey" ],
+        "type" : "object",
+        "properties" : {
+          "request" : {
+            "$ref" : "#/components/schemas/PostProcedureStepRequest"
+          },
+          "serviceKeys" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "type" : "string"
+            }
+          },
+          "stepKey" : {
+            "type" : "string"
+          }
+        },
+        "description" : "request the creation of one more procedure step/appointment, including the services to be attached to it"
+      },
+      "ProcedureStepService" : {
+        "required" : [ "serviceDescription", "serviceId" ],
+        "type" : "object",
+        "properties" : {
+          "serviceDescription" : {
+            "type" : "string"
+          },
+          "serviceId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "vaccinationNumber" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "ProcedureType" : {
+        "type" : "string",
+        "enum" : [ "REGULAR_EXAMINATION", "CAN_CHILD", "ENTRY_LEVEL", "DRAFT_CITIZEN_OFFICE_IMPORT", "DRAFT_SCHOOL_IMPORT", "INSPECTION", "TM_VACCINATION_CONSULTATION", "MEASLES_PROTECTION", "STI_PROTECTION", "MEDICAL_REGISTRY_ENTRY", "MEDICAL_REGISTRY_CITIZEN_DRAFT", "MEDICAL_REGISTRY_EMPLOYEE_DRAFT", "DENTAL_CHILD", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "ProcedureWithDuration" : {
+        "required" : [ "createdAt", "id" ],
+        "type" : "object",
+        "properties" : {
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "duration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ProcessedInboxProgressEntry" : {
+        "required" : [ "createdAt", "createdBy", "inboxProcedureId", "inboxProgressEntryType", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "createdBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "inboxProcedureId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "inboxProgressEntryType" : {
+              "$ref" : "#/components/schemas/InboxProgressEntryType"
+            },
+            "messageText" : {
+              "type" : "string"
+            },
+            "subject" : {
+              "type" : "string"
+            }
+          }
+        } ]
+      },
+      "ProgressEntry" : {
+        "required" : [ "@type", "createdAt", "modifiedAt", "progressEntryId" ],
+        "type" : "object",
+        "properties" : {
+          "@type" : {
+            "type" : "string"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "fileReference" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/GenericFileReference"
+            }, {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "progressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "discriminator" : {
+          "propertyName" : "@type"
+        }
+      },
+      "ProgressEntryClass" : {
+        "type" : "string",
+        "enum" : [ "MANUAL_PROGRESS_ENTRY", "SYSTEM_PROGRESS_ENTRY", "PROCESSED_INBOX_PROGRESS_ENTRY" ]
+      },
+      "ProgressEntryReferenceFilePair" : {
+        "required" : [ "file", "progressEntryId" ],
+        "type" : "object",
+        "properties" : {
+          "file" : {
+            "oneOf" : [ {
+              "$ref" : "#/components/schemas/Image"
+            }, {
+              "$ref" : "#/components/schemas/Mail"
+            }, {
+              "$ref" : "#/components/schemas/Pdf"
+            } ]
+          },
+          "progressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        }
+      },
+      "ProgressEntrySortBy" : {
+        "type" : "string",
+        "default" : "CREATED_AT",
+        "enum" : [ "CREATED_AT", "MODIFIED_AT" ]
+      },
+      "ProgressEntrySortOrder" : {
+        "type" : "string",
+        "default" : "ASC",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "Salutation" : {
+        "type" : "string",
+        "enum" : [ "NOT_SPECIFIED", "NEUTRAL", "FEMALE", "MALE" ]
+      },
+      "SearchVaccinationConsultationResponse" : {
+        "required" : [ "vaccinationConsultations" ],
+        "type" : "object",
+        "properties" : {
+          "vaccinationConsultations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/VaccinationConsultationSearch"
+            }
+          }
+        }
+      },
+      "SelfAssignTaskRequest" : {
+        "required" : [ "taskVersion" ],
+        "type" : "object",
+        "properties" : {
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "taskVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "ServicePlanEntry" : {
+        "required" : [ "fee", "serviceId", "serviceTypeDescription", "status" ],
+        "type" : "object",
+        "properties" : {
+          "appliedAt" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "batchIdentifier" : {
+            "type" : "string"
+          },
+          "defaultBatchIdentifier" : {
+            "type" : "string"
+          },
+          "diseaseName" : {
+            "type" : "string"
+          },
+          "fee" : {
+            "type" : "number"
+          },
+          "latency" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "mfa" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "physician" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "serviceId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "serviceTypeDescription" : {
+            "type" : "string"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ServiceStatus"
+          },
+          "vaccinationNumber" : {
+            "minimum" : 1,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "vaccineName" : {
+            "type" : "string"
+          }
+        }
+      },
+      "ServicePlanGroup" : {
+        "required" : [ "fee", "servicePlanEntries" ],
+        "type" : "object",
+        "properties" : {
+          "appointment" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "appointmentBookingType" : {
+            "$ref" : "#/components/schemas/AppointmentBookingType"
+          },
+          "appointmentType" : {
+            "$ref" : "#/components/schemas/AppointmentType"
+          },
+          "citizenHasAnswered" : {
+            "type" : "boolean"
+          },
+          "earliestDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "fee" : {
+            "type" : "number"
+          },
+          "medicalHistoryCompleted" : {
+            "type" : "boolean"
+          },
+          "procedureStepId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "servicePlanEntries" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/ServicePlanEntry"
+            }
+          }
+        }
+      },
+      "ServiceStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "PLANNED", "ACCOMPLISHED" ]
+      },
+      "SortDirection" : {
+        "type" : "string",
+        "enum" : [ "ASC", "DESC" ]
+      },
+      "StepWithAppliedServices" : {
+        "required" : [ "appliedServices", "appointmentDateTime", "procedureStepId" ],
+        "type" : "object",
+        "properties" : {
+          "appliedServices" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/AppliedService"
+            }
+          },
+          "appointmentDateTime" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureStepId" : {
+            "type" : "string",
+            "format" : "uuid"
+          }
+        },
+        "description" : "A list of the step's services which have been applied (to the resp. customer)"
+      },
+      "SyncPersonRequest" : {
+        "required" : [ "fileStateId", "personVersion", "referenceVersion" ],
+        "type" : "object",
+        "properties" : {
+          "fileStateId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "personVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          },
+          "referenceVersion" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "SystemProgressEntry" : {
+        "required" : [ "createdAt", "modifiedAt", "progressEntryId", "systemProgressEntryType", "triggerType" ],
+        "type" : "object",
+        "allOf" : [ {
+          "$ref" : "#/components/schemas/ProgressEntry"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "changeDescription" : {
+              "type" : "string"
+            },
+            "keyDocumentType" : {
+              "type" : "string"
+            },
+            "keyDocumentVersion" : {
+              "type" : "integer",
+              "format" : "int32"
+            },
+            "previousFileStateId" : {
+              "type" : "string",
+              "format" : "uuid"
+            },
+            "systemProgressEntryType" : {
+              "type" : "string"
+            },
+            "triggerType" : {
+              "$ref" : "#/components/schemas/TriggerType"
+            },
+            "triggeredBy" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }, {
+          "$ref" : "#/components/schemas/KeyDocumentAwareProgressEntry"
+        } ]
+      },
+      "TMCertificate" : {
+        "required" : [ "appointment", "createdAt", "id", "modifiedAt", "progressEntryId", "type" ],
+        "type" : "object",
+        "properties" : {
+          "appointment" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "certificateFileId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "progressEntryId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "type" : {
+            "$ref" : "#/components/schemas/CertificateType"
+          }
+        }
+      },
+      "Task" : {
+        "required" : [ "businessModule", "createdAt", "isOverdue", "modifiedAt", "procedureId", "summary", "taskId", "taskStatus", "taskType", "version" ],
+        "type" : "object",
+        "properties" : {
+          "assignedById" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "assigneeId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "businessModule" : {
+            "$ref" : "#/components/schemas/BusinessModule"
+          },
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "dueAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "isOverdue" : {
+            "type" : "boolean"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "summary" : {
+            "maxLength" : 128,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "taskId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "taskStatus" : {
+            "$ref" : "#/components/schemas/TaskStatus"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "version" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
+      "TaskMetric" : {
+        "required" : [ "moreThanTwoOccurrencesCount", "noOccurrencesCount", "oneOccurrenceCount", "taskType", "twoOccurrencesCount" ],
+        "type" : "object",
+        "properties" : {
+          "averageDuration" : {
+            "type" : "string",
+            "description" : "A duration in ISO 8601"
+          },
+          "moreThanTwoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "noOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "oneOccurrenceCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "taskType" : {
+            "$ref" : "#/components/schemas/TaskType"
+          },
+          "twoOccurrencesCount" : {
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TaskResponse" : {
+        "required" : [ "count", "tasks" ],
+        "type" : "object",
+        "properties" : {
+          "count" : {
+            "type" : "integer",
+            "description" : "total number of tasks for this query",
+            "format" : "int64"
+          },
+          "tasks" : {
+            "maxItems" : 200,
+            "minItems" : 0,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/Task"
+            }
+          }
+        }
+      },
+      "TaskStatus" : {
+        "type" : "string",
+        "enum" : [ "OPEN", "CLOSED" ]
+      },
+      "TaskType" : {
+        "type" : "string",
+        "enum" : [ "BOOK_APPOINTMENT", "PERFORM_SCHOOL_ENTRY_EXAMINATION", "INSPECTION_PLANNING", "INSPECTION_EXECUTION", "INSPECTION_REPORT", "TRAVEL_MEDICINE", "MEASLES_PROTECTION", "STI_PROTECTION", "OFFICIAL_MEDICAL_SERVICE" ]
+      },
+      "TemplateAnamnesisQuestion" : {
+        "required" : [ "questionText", "subElementMultiSelect" ],
+        "type" : "object",
+        "properties" : {
+          "questionText" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "subElementMultiSelect" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TemplateSubElementMultiSelect"
+            }
+          },
+          "subElementText" : {
+            "$ref" : "#/components/schemas/TemplateSubElementText"
+          }
+        }
+      },
+      "TemplateConfirmation" : {
+        "required" : [ "confirmationTextField" ],
+        "type" : "object",
+        "properties" : {
+          "confirmationTextField" : {
+            "type" : "string"
+          }
+        }
+      },
+      "TemplateContent" : {
+        "required" : [ "sections" ],
+        "type" : "object",
+        "properties" : {
+          "sections" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TemplateSection"
+            }
+          }
+        }
+      },
+      "TemplateSection" : {
+        "required" : [ "sectionElements" ],
+        "type" : "object",
+        "properties" : {
+          "sectionElements" : {
+            "maxItems" : 2147483647,
+            "minItems" : 1,
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/TemplateSectionElement"
+            }
+          },
+          "sectionTitle" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          }
+        }
+      },
+      "TemplateSectionElement" : {
+        "type" : "object",
+        "properties" : {
+          "anamnesisQuestion" : {
+            "$ref" : "#/components/schemas/TemplateAnamnesisQuestion"
+          },
+          "confirmation" : {
+            "$ref" : "#/components/schemas/TemplateConfirmation"
+          },
+          "textBlock" : {
+            "$ref" : "#/components/schemas/TemplateTextBlock"
+          }
+        }
+      },
+      "TemplateSubElementMultiSelect" : {
+        "required" : [ "questionText" ],
+        "type" : "object",
+        "properties" : {
+          "questionText" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          }
+        }
+      },
+      "TemplateSubElementText" : {
+        "required" : [ "questionText" ],
+        "type" : "object",
+        "properties" : {
+          "questionText" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          }
+        }
+      },
+      "TemplateTextBlock" : {
+        "required" : [ "textField" ],
+        "type" : "object",
+        "properties" : {
+          "textField" : {
+            "type" : "string"
+          }
+        }
+      },
+      "TestHelperClockSetRequest" : {
+        "required" : [ "newInstant" ],
+        "type" : "object",
+        "properties" : {
+          "newInstant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockUpdateResponse" : {
+        "required" : [ "instant" ],
+        "type" : "object",
+        "properties" : {
+          "instant" : {
+            "type" : "string",
+            "format" : "date-time"
+          }
+        }
+      },
+      "TestHelperClockWindForwardRequest" : {
+        "required" : [ "days", "hours", "minutes", "months", "seconds", "weeks" ],
+        "type" : "object",
+        "properties" : {
+          "days" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "hours" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "minutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "months" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "seconds" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "weeks" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "TestHelperInterceptionRequestFilter" : {
+        "type" : "object",
+        "properties" : {
+          "httpMethodFilter" : {
+            "$ref" : "#/components/schemas/HttpMethod"
+          },
+          "queryPatternFilter" : {
+            "type" : "string"
+          },
+          "urlPatternFilter" : {
+            "type" : "string"
+          }
+        }
+      },
+      "Title" : {
+        "type" : "string",
+        "enum" : [ "DR", "PROF", "PROF_DR" ]
+      },
+      "TravelInformation" : {
+        "required" : [ "travelDestinations", "travelType" ],
+        "type" : "object",
+        "properties" : {
+          "travelDestinations" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : "#/components/schemas/CountryCode"
+            }
+          },
+          "travelStartDate" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "travelTimeAmount" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "travelTimeUnit" : {
+            "$ref" : "#/components/schemas/TravelTimeUnit"
+          },
+          "travelType" : {
+            "$ref" : "#/components/schemas/TravelType"
+          }
+        }
+      },
+      "TravelMedicineFeature" : {
+        "type" : "string"
+      },
+      "TravelTimeUnit" : {
+        "type" : "string",
+        "enum" : [ "DAYS", "WEEKS", "MONTHS", "YEARS" ]
+      },
+      "TravelType" : {
+        "type" : "string",
+        "enum" : [ "UNSPECIFIED", "NO_TRAVEL", "BUSINESS", "VACATION", "BACKPACK" ]
+      },
+      "TriggerType" : {
+        "type" : "string",
+        "enum" : [ "SYSTEM_AUTOMATIC", "EMPLOYEE", "CITIZEN" ]
+      },
+      "UpdateAppointmentTypeRequest" : {
+        "required" : [ "standardDurationInMinutes" ],
+        "type" : "object",
+        "properties" : {
+          "standardDurationInMinutes" : {
+            "minimum" : 0,
+            "type" : "integer",
+            "format" : "int32"
+          }
+        }
+      },
+      "User" : {
+        "required" : [ "enabled", "firstName", "lastName", "userId", "username" ],
+        "type" : "object",
+        "properties" : {
+          "email" : {
+            "type" : "string",
+            "description" : "The email address of a user.",
+            "example" : "example@mail.de"
+          },
+          "enabled" : {
+            "type" : "boolean",
+            "description" : "True, if the user can login",
+            "example" : false
+          },
+          "externalChatUsername" : {
+            "type" : "string",
+            "description" : "The chat username of the gematik TI-Messenger (matrix chat).",
+            "example" : "@username:server"
+          },
+          "firstName" : {
+            "type" : "string",
+            "description" : "The given name(s) of a user.",
+            "example" : "John"
+          },
+          "lastName" : {
+            "type" : "string",
+            "description" : "The last name of a user.",
+            "example" : "Doe"
+          },
+          "phoneNumber" : {
+            "type" : "string",
+            "description" : "The phone number of a user.",
+            "example" : "+491234567890"
+          },
+          "userId" : {
+            "type" : "string",
+            "description" : "The Id of the user.",
+            "format" : "uuid",
+            "example" : "UUID_3"
+          },
+          "username" : {
+            "type" : "string",
+            "description" : "The username which is displayed in the application and can be used for the login.",
+            "example" : "testuser"
+          }
+        }
+      },
+      "VaccinationConsultationSearch" : {
+        "required" : [ "createdBy", "dateOfBirth", "firstName", "lastName", "procedureId", "status" ],
+        "type" : "object",
+        "properties" : {
+          "createdBy" : {
+            "$ref" : "#/components/schemas/CreatedByUserType"
+          },
+          "dateOfBirth" : {
+            "type" : "string",
+            "format" : "date"
+          },
+          "firstName" : {
+            "type" : "string"
+          },
+          "lastName" : {
+            "type" : "string"
+          },
+          "procedureId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "status" : {
+            "$ref" : "#/components/schemas/ProcedureStatus"
+          },
+          "travelStartDate" : {
+            "type" : "string",
+            "format" : "date"
+          }
+        }
+      },
+      "VaccinationPopulation" : {
+        "required" : [ "request", "serviceKey" ],
+        "type" : "object",
+        "properties" : {
+          "request" : {
+            "$ref" : "#/components/schemas/PostVaccinationRequest"
+          },
+          "serviceKey" : {
+            "type" : "string"
+          }
+        },
+        "description" : "request the creation of a vaccination service and assign a user defined key"
+      },
+      "VaccinationType" : {
+        "type" : "string",
+        "enum" : [ "BASIC", "BOOSTER" ]
+      },
+      "Vaccine" : {
+        "required" : [ "createdAt", "disease", "id", "inventoryVaccineId", "modifiedAt", "name", "numVaccinations", "offsets" ],
+        "type" : "object",
+        "properties" : {
+          "createdAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "currentBatchId" : {
+            "type" : "string"
+          },
+          "disease" : {
+            "$ref" : "#/components/schemas/Disease"
+          },
+          "fee" : {
+            "type" : "number"
+          },
+          "id" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "inventoryVaccineId" : {
+            "type" : "string",
+            "format" : "uuid"
+          },
+          "modifiedAt" : {
+            "type" : "string",
+            "format" : "date-time"
+          },
+          "name" : {
+            "maxLength" : 200,
+            "minLength" : 0,
+            "type" : "string"
+          },
+          "numVaccinations" : {
+            "type" : "integer",
+            "format" : "int32"
+          },
+          "offsets" : {
+            "type" : "array",
+            "items" : {
+              "type" : "integer",
+              "format" : "int32"
+            }
+          }
+        }
+      },
+      "ValidateAppointmentBlockGroupResponse" : {
+        "required" : [ "userIdsWithEventConflicts", "userIdsWithoutEventConflicts" ],
+        "type" : "object",
+        "properties" : {
+          "userIdsWithEventConflicts" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          },
+          "userIdsWithoutEventConflicts" : {
+            "type" : "array",
+            "items" : {
+              "type" : "string",
+              "format" : "uuid"
+            }
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/backend/travel-medicine/openApi.yaml b/backend/travel-medicine/openApi.yaml
deleted file mode 100644
index c07efbda6..000000000
--- a/backend/travel-medicine/openApi.yaml
+++ /dev/null
@@ -1,7981 +0,0 @@
-# Copyright 2025 SCOOP Software GmbH, cronn GmbH
-# SPDX-License-Identifier: AGPL-3.0-only
-
-openapi: 3.0.1
-info:
-  description: This is the api for the travel medicine module
-  title: Travel Medicine Module Api
-  version: "0.1"
-servers:
-- url: http://localhost:8085
-paths:
-  /appointment-blocks/appointment-block-groups:
-    get:
-      operationId: getAppointmentBlockGroups
-      parameters:
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/AppointmentBlockSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAppointmentBlockGroupsResponse"
-          description: OK
-      summary: Get all appointment block groups.
-      tags:
-      - AppointmentBlock
-  /appointment-blocks/daily-appointment-block-groups:
-    post:
-      operationId: createDailyAppointmentBlocksForGroup
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CreateAppointmentBlockGroupResponse"
-          description: OK
-      summary: Create appointment group with blocks for week days.
-      tags:
-      - AppointmentBlock
-  /appointment-blocks/daily-appointment-block-groups/validate:
-    post:
-      operationId: validateDailyAppointmentBlocksForGroup
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateDailyAppointmentBlockGroupRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ValidateAppointmentBlockGroupResponse"
-          description: OK
-      summary: Create appointment group with blocks for week days.
-      tags:
-      - AppointmentBlock
-  /appointment-blocks/free-appointments:
-    get:
-      operationId: getFreeAppointments
-      parameters:
-      - in: query
-        name: appointmentType
-        required: true
-        schema:
-          $ref: "#/components/schemas/AppointmentType"
-      - in: query
-        name: earliestDate
-        required: false
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: physicianId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetFreeAppointmentsResponse"
-          description: OK
-      summary: Get free appointments for an appointment type.
-      tags:
-      - AppointmentBlock
-  /appointment-types:
-    get:
-      operationId: getAppointmentTypes
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAppointmentTypesResponse"
-          description: OK
-      summary: Gets all Appointment Types
-      tags:
-      - AppointmentType
-  /appointment-types/{id}:
-    get:
-      operationId: getOneAppointmentType
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AppointmentTypeConfig"
-          description: OK
-      summary: Gets one Appointment Type by ID
-      tags:
-      - AppointmentType
-    put:
-      operationId: updateAppointmentType
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/UpdateAppointmentTypeRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AppointmentTypeConfig"
-          description: OK
-      summary: Modifies an existing Appointment Type
-      tags:
-      - AppointmentType
-  /approval-requests/{approvalRequestId}:
-    get:
-      operationId: getApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      tags:
-      - ApprovalRequest
-  /approval-requests/{approvalRequestId}/decision:
-    put:
-      operationId: decideApprovalRequest
-      parameters:
-      - in: path
-        name: approvalRequestId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/Decision"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - ApprovalRequest
-  /archiving/config:
-    get:
-      operationId: getArchivingConfiguration
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetArchivingConfigurationResponse"
-          description: OK
-      summary: Get archiving configuration
-      tags:
-      - Archiving
-  /archiving/procedures:
-    get:
-      operationId: getArchivableProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `closedAtDay` is set, only procedures are returned which were closed at that date
-          - If not submitted, no filtering takes place
-        in: query
-        name: closedAtDay
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If `defaultArchivingRelevance` is submitted, only procedures are returned which have one of the submitted default archiving relevances.
-          - If not submitted, no filtering takes place
-        in: query
-        name: defaultArchivingRelevance
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ArchivingRelevance"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CLOSED_AT`: Sorting by closedAt attribute
-          - `PROCEDURE_TYPE`: Sorting by procedureType attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetArchivableProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetArchivableProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetArchivableProceduresResponse"
-          description: OK
-      summary: Get archivable procedures
-      tags:
-      - Archiving
-  /archiving/procedures/bulk-update-archiving-relevance:
-    post:
-      operationId: bulkUpdateProceduresArchivingRelevance
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/BulkUpdateProceduresArchivingRelevanceRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/BulkUpdateProceduresArchivingRelevanceResponse"
-          description: OK
-      summary: Bulk update procedures archiving relevance
-      tags:
-      - Archiving
-  /archiving/relevant-procedures:
-    get:
-      operationId: getRelevantArchivableProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `closedAtDay` is set, only procedures are returned which were closed at that date
-          - If not submitted, no filtering takes place
-        in: query
-        name: closedAtDay
-        required: false
-        schema:
-          type: string
-          format: date
-      - description: |
-          Filter logic:
-          - If `exported` is true, only procedures are returned which have already been exported.
-          - If `exported` is false, only procedures are returned which have not been exported, yet.
-          - If not submitted, no filtering takes place
-        in: query
-        name: exported
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          The following sorting options are available:
-          - `CLOSED_AT`: Sorting by closedAt attribute
-          - `EXPORTED_AT`: Sorting by exportedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetRelevantArchivableProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetRelevantArchivableProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRelevantArchivableProceduresResponse"
-          description: OK
-      summary: Get relevant archivable procedures
-      tags:
-      - Archiving
-  /archiving/relevant-procedures/export:
-    post:
-      operationId: exportRelevantProcedures
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ExportArchivingRelevantProceduresRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - Archiving
-  /citizen/auth/information-statements/{informationStatementId}:
-    get:
-      operationId: getCitizenInformationStatement
-      parameters:
-      - in: path
-        name: informationStatementId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/DocumentContent"
-          description: OK
-      summary: Gets information statement by id
-      tags:
-      - CitizenAuth
-    patch:
-      operationId: patchCitizenInformationStatement
-      parameters:
-      - in: path
-        name: informationStatementId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                patchInformationStatementContent:
-                  $ref: "#/components/schemas/PatchInformationStatementRequest"
-                signature:
-                  type: string
-                  format: binary
-              required:
-              - patchInformationStatementContent
-              - signature
-      responses:
-        "200":
-          description: OK
-      summary: Updates information statement content
-      tags:
-      - CitizenAuth
-  /citizen/auth/procedure-appointments:
-    get:
-      operationId: getProcedureAppointments
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetCitizenAppointmentOverviewResponse"
-          description: OK
-      summary: Gets all procedure appointments
-      tags:
-      - CitizenAuth
-  /citizen/auth/vaccination-consultations/{procedureId}/procedure-steps/{procedureStepId}:
-    get:
-      operationId: getProcedureStepAppointmentDetails
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: procedureStepId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetAppointmentDetailsResponse"
-          description: OK
-      summary: Gets details for a procedure step appointment
-      tags:
-      - CitizenAuth
-  /citizen/auth/vaccination-consultations/{procedureId}/procedure-steps/{procedureStepId}/appointment:
-    delete:
-      operationId: deleteAppointmentCp
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: procedureStepId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Cancel an appointment from citizen portal.
-      tags:
-      - CitizenAuth
-  /citizen/auth/vaccination-consultations/{procedureId}/procedure-steps/{procedureStepId}/appointments:
-    put:
-      operationId: putAppointment
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: procedureStepId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/Appointment"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Book or rebook an appointment
-      tags:
-      - CitizenAuth
-  /citizen/auth/vaccination-consultations/{procedureId}/procedure-steps/{procedureStepId}/medical-history:
-    get:
-      operationId: getMedicalHistory
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: procedureStepId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/DocumentContent"
-          description: OK
-      summary: Gets medical history for a procedure step appointment
-      tags:
-      - CitizenAuth
-    patch:
-      operationId: patchCitizenMedicalHistory
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: procedureStepId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/DocumentContent"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Updates medical history content
-      tags:
-      - CitizenAuth
-  /citizen/public/appointment-types:
-    get:
-      operationId: getAppointmentTypesForCitizen
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetAppointmentTypesResponse"
-          description: OK
-      summary: Gets all Appointment Types
-      tags:
-      - CitizenPublic
-  /citizen/public/department-info:
-    get:
-      operationId: getDepartmentInfo
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetDepartmentInfoResponse"
-          description: OK
-      summary: Get department info.
-      tags:
-      - CitizenPublic
-  /citizen/public/diseases:
-    get:
-      operationId: getPublicDiseases
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetDiseasesResponse"
-          description: OK
-      summary: Gets all public Diseases
-      tags:
-      - CitizenPublic
-  /citizen/public/documents/privacy-notice:
-    get:
-      operationId: getPrivacyNotice
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get the privacy-notice document.
-      tags:
-      - CitizenPublic
-  /citizen/public/documents/privacy-policy:
-    get:
-      operationId: getPrivacyPolicy
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get the privacy-policy document.
-      tags:
-      - CitizenPublic
-  /citizen/public/free-appointments:
-    get:
-      operationId: getFreeAppointmentsForCitizen
-      parameters:
-      - in: query
-        name: appointmentType
-        required: true
-        schema:
-          $ref: "#/components/schemas/AppointmentType"
-      - in: query
-        name: earliestDate
-        required: false
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetFreeAppointmentsResponse"
-          description: OK
-      summary: Get free appointments for an appointment type.
-      tags:
-      - CitizenPublic
-  /citizen/public/opening-hours:
-    get:
-      operationId: getOpeningHours
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetOpeningHoursResponse"
-          description: OK
-      summary: Get opening hours.
-      tags:
-      - CitizenPublic
-  /citizen/public/vaccination-consultations:
-    post:
-      operationId: postVaccinationConsultationForCitizen
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostCitizenVaccinationConsultationRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: uuid
-          description: OK
-      summary: Save a new vaccination consultation
-      tags:
-      - CitizenPublic
-  /diseases:
-    get:
-      operationId: getDiseases
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetDiseasesResponse"
-          description: OK
-      summary: Gets all Diseases
-      tags:
-      - Disease
-    post:
-      operationId: postDisease
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostPutDiseaseRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Disease"
-          description: OK
-      summary: Adds a new Disease
-      tags:
-      - Disease
-  /diseases/{id}:
-    delete:
-      operationId: deleteDisease
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Deletes a Disease
-      tags:
-      - Disease
-    get:
-      operationId: getDisease
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Disease"
-          description: OK
-      summary: Gets one Disease by ID
-      tags:
-      - Disease
-    put:
-      operationId: putDisease
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostPutDiseaseRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Disease"
-          description: OK
-      summary: Modifies an existing Disease
-      tags:
-      - Disease
-  /feature-toggles:
-    get:
-      operationId: getFeatureToggles
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTravelMedicineFeatureTogglesResponse"
-          description: OK
-      tags:
-      - TravelMedicineFeatureTogglesPublic
-  /files/{fileId}:
-    delete:
-      operationId: deleteFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Soft deletes the specified file
-      tags:
-      - File
-    get:
-      operationId: getFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/Image"
-                - $ref: "#/components/schemas/Mail"
-                - $ref: "#/components/schemas/Pdf"
-          description: OK
-      summary: Retrieves the meta data of the specified file
-      tags:
-      - File
-  /files/{fileId}/deletion-request:
-    post:
-      operationId: requestFileDeletion
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateApprovalRequestRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      summary: Request deletion of a file entry
-      tags:
-      - File
-  /files/{fileId}/download:
-    get:
-      operationId: downloadFile
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      tags:
-      - File
-  /files/{fileId}/meta-data:
-    put:
-      operationId: updateFileMetaData
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              oneOf:
-              - $ref: "#/components/schemas/ImageMetaData"
-              - $ref: "#/components/schemas/MailMetaData"
-              - $ref: "#/components/schemas/PdfMetaData"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                oneOf:
-                - $ref: "#/components/schemas/Image"
-                - $ref: "#/components/schemas/Mail"
-                - $ref: "#/components/schemas/Pdf"
-          description: Updated file
-      summary: Updates the meta data of the specified file
-      tags:
-      - File
-  /files/{fileId}/meta-data/history:
-    get:
-      operationId: getMetaDataHistory
-      parameters:
-      - in: path
-        name: fileId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetMetaDataHistoryResponse"
-          description: OK
-      tags:
-      - File
-  /gdpr-validation-tasks:
-    get:
-      operationId: getAllGdprValidationTasks
-      parameters:
-      - in: query
-        name: status
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-      - in: query
-        name: sortKey
-        required: false
-        schema:
-          $ref: "#/components/schemas/GdprValidationTaskSortKey"
-      - in: query
-        name: sortDirection
-        required: false
-        schema:
-          $ref: "#/components/schemas/SortDirection"
-      - in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 0
-      - in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetAllValidationTasksResponse"
-          description: OK
-      summary: Get all GDPR validation tasks
-      tags:
-      - GdprValidationTask
-    post:
-      operationId: addGdprValidationTask
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AddGdprValidationTaskRequest"
-        required: true
-      responses:
-        "200":
-          description: Add a GDPR validation task
-      summary: Add a GDPR validation task
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/notification-banner:
-    get:
-      operationId: getGdprNotificationBanner
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprNotificationBannerResponse"
-          description: OK
-      summary: Get data for GDPR notification banner
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}:
-    delete:
-      operationId: deleteGdprValidationTaskAndDownloadPackages
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/DeleteDownloadPackagesRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Delete the GDPR validation task with gdprProcedureId and GDPR download
-        packages with ids from request
-      tags:
-      - GdprValidationTask
-    get:
-      operationId: getGdprValidationTask
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprValidationTaskResponse"
-          description: OK
-      summary: Get Gdpr Validation Task by Gdpr Procedure Id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures:
-    get:
-      operationId: getGdprValidationTaskDetails
-      parameters:
-      - description: The Id of the GDPR procedure.
-        in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprValidationTaskDetailsResponse"
-          description: OK
-      summary: Get a GDPR validation task by id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}:
-    delete:
-      operationId: deleteBusinessProcedure
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: businessProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Delete the businessProcedure with businessProcedureId for validationTask
-        with gdprProcedureId with type right of erasure
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/business-procedures/{businessProcedureId}/downloadPackage:
-    post:
-      operationId: addDownloadPackage
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: businessProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Creates a downloadPackage for validationTask with gdprProcedureId with
-        the data from the procedure with businessProcedureId
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/close:
-    post:
-      operationId: closeGdprValidationTask
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: Close a GDPR validation task
-      summary: Close a GDPR validation task
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/download-packages:
-    get:
-      operationId: getGdprDownloadPackagesInfo
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetGdprDownloadPackagesInfoResponse"
-          description: OK
-      summary: Get approved Gdpr Download Packages by Gdpr Procedure Id
-      tags:
-      - GdprValidationTask
-  /gdpr-validation-tasks/{gdprProcedureId}/download-packages/{downloadId}:
-    get:
-      operationId: getGdprDownloadPackage
-      parameters:
-      - in: path
-        name: gdprProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: downloadId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Get Gdpr Download Package by the gdprProcedureId and its downloadId
-      tags:
-      - GdprValidationTask
-  /inbox-procedures:
-    get:
-      description: |
-        Get all inbox procedures with filter, sort, and pagination options
-      operationId: getInboxProcedures
-      parameters:
-      - description: |
-          Filter logic:
-          - If `inboxProcedureType` is submitted, only inbox procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place.
-        in: query
-        name: inboxProcedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If true, inbox procedures which have no type are returned in addition to the types specified by 'inboxProcedureType'.
-          - If false or not submitted, inbox procedures which have no type are not returned.
-        in: query
-        name: includeUntyped
-        required: false
-        schema:
-          type: boolean
-      - description: |
-          Filter logic:
-          - If `inboxProcedureStatus` is submitted, only inbox procedures are returned which have one of the submitted statuses.
-          - If not submitted, no filtering takes place.
-        in: query
-        name: inboxProcedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/InboxProcedureStatus"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CREATED_AT`: Sorting by createdAt attribute
-          - `MODIFIED_AT`: Sorting by modifiedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetInboxProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetInboxProceduresSortOrder"
-      - description: Number of the requested page
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      - description: Amount of requested inbox procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 25
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInboxProceduresResponse"
-          description: OK
-      summary: Get inbox procedures
-      tags:
-      - InboxProcedure
-    post:
-      description: |-
-        Creates an inbox procedure with an optional file upload.
-
-               Permitted file formats:
-                - Image formats: jpeg, png
-                - PDF formats: pdf/a
-                - Mail formats: eml
-      operationId: addInboxProcedure
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                createInboxProcedureRequest:
-                  $ref: "#/components/schemas/CreateInboxProcedureRequest"
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-              required:
-              - createInboxProcedureRequest
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InboxProcedure"
-          description: OK
-      summary: Add inbox procedure
-      tags:
-      - InboxProcedure
-  /inbox-procedures/{inboxProcedureId}:
-    get:
-      operationId: getInboxProcedure
-      parameters:
-      - in: path
-        name: inboxProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetInboxProcedureResponse"
-          description: OK
-      summary: Get inbox procedure with detailed information
-      tags:
-      - InboxProcedure
-  /inbox-procedures/{inboxProcedureId}/inbox-procedure-status:
-    put:
-      operationId: updateInboxProcedureStatus
-      parameters:
-      - in: path
-        name: inboxProcedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InboxProcedureStatus"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/InboxProcedure"
-          description: OK
-      summary: Update status of inbox procedure
-      tags:
-      - InboxProcedure
-  /information-statement-templates:
-    get:
-      operationId: getAllInformationStatementTemplates
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetInformationStatementTemplatesResponse"
-          description: OK
-      summary: Gets all InformationStatementTemplates
-      tags:
-      - InformationStatementTemplate
-    post:
-      operationId: postInformationStatementTemplate
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InformationStatementTemplateRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/InformationStatementTemplate"
-          description: OK
-      summary: Adds a new InformationStatementTemplate
-      tags:
-      - InformationStatementTemplate
-  /information-statement-templates/{id}:
-    delete:
-      operationId: deleteInformationStatementTemplateById
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Deletes InformationStatementTemplate by ID
-      tags:
-      - InformationStatementTemplate
-    get:
-      operationId: getOneInformationStatementTemplate
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/InformationStatementTemplate"
-          description: OK
-      summary: Gets one InformationStatementTemplate by ID
-      tags:
-      - InformationStatementTemplate
-    put:
-      operationId: putInformationStatementTemplate
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InformationStatementTemplateRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/InformationStatementTemplate"
-          description: OK
-      summary: Modifies an existing InformationStatementTemplate (unless it's FINAL)
-      tags:
-      - InformationStatementTemplate
-  /medical-histories/{id}:
-    patch:
-      operationId: patchMedicalHistory
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchMedicalHistoryRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Updates medical history content
-      tags:
-      - MedicalHistory
-  /medical-history-templates:
-    get:
-      operationId: getAllMedicalHistoryTemplates
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetMedicalHistoryTemplatesResponse"
-          description: OK
-      summary: Gets all MedicalHistoryTemplates
-      tags:
-      - MedicalHistoryTemplate
-    post:
-      operationId: postMedicalHistoryTemplate
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostPutMedicalHistoryTemplateRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/MedicalHistoryTemplate"
-          description: OK
-      summary: Adds a new MedicalHistoryTemplate
-      tags:
-      - MedicalHistoryTemplate
-  /medical-history-templates/{id}:
-    delete:
-      operationId: deleteMedicalHistoryTemplateById
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Deletes MedicalHistoryTemplate by ID
-      tags:
-      - MedicalHistoryTemplate
-    get:
-      operationId: getOneMedicalHistoryTemplate
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/MedicalHistoryTemplate"
-          description: OK
-      summary: Gets one MedicalHistoryTemplate by ID
-      tags:
-      - MedicalHistoryTemplate
-    put:
-      operationId: putMedicalHistoryTemplate
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostPutMedicalHistoryTemplateRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/MedicalHistoryTemplate"
-          description: OK
-      summary: Modifies an existing MedicalHistoryTemplate (unless it's FINAL)
-      tags:
-      - MedicalHistoryTemplate
-  /medical-history-templates/{id}/follow-up-flag:
-    patch:
-      operationId: patchMedicalHistoryTemplateFollowUpFlag
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchMedicalHistoryTemplateFlagRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/MedicalHistoryTemplate"
-          description: OK
-      summary: Update follow up flag of MedicalHistoryTemplate (only on FINAL)
-      tags:
-      - MedicalHistoryTemplate
-  /medical-history-templates/{id}/main-flag:
-    patch:
-      operationId: patchMedicalHistoryTemplateMainFlag
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchMedicalHistoryTemplateFlagRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/MedicalHistoryTemplate"
-          description: OK
-      summary: Update main flag of MedicalHistoryTemplate (only on FINAL)
-      tags:
-      - MedicalHistoryTemplate
-  /other-service-templates:
-    get:
-      operationId: getOtherServiceTemplates
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetOtherServiceTemplatesResponse"
-          description: OK
-      summary: Get all other service templates
-      tags:
-      - OtherServiceTemplate
-    post:
-      operationId: createOtherServiceTemplate
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostPutOtherServiceTemplateRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/OtherServiceTemplate"
-          description: OK
-      summary: Create an other service templates
-      tags:
-      - OtherServiceTemplate
-  /other-service-templates/{id}:
-    delete:
-      operationId: deleteOtherServiceTemplate
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Delete all other service templates
-      tags:
-      - OtherServiceTemplate
-    put:
-      operationId: updateOtherServiceTemplate
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostPutOtherServiceTemplateRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/OtherServiceTemplate"
-          description: OK
-      summary: Update an other service templates
-      tags:
-      - OtherServiceTemplate
-  /procedure-metrics:
-    get:
-      operationId: getProcedureMetrics
-      parameters:
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureMetricsResponse"
-          description: the metrics of procedures
-      summary: Get procedure metrics for procedures created in the given time range
-      tags:
-      - Procedure
-  /procedure-steps/{id}/appointment:
-    patch:
-      operationId: patchAppointment
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchAppointmentRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Patches appointment data of an given procedure step
-      tags:
-      - ProcedureStep
-  /procedure-steps/{id}/earliest-date:
-    patch:
-      operationId: patchEarliestDate
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchEarliestDateRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Patches earliest date for self booking of an given procedure step
-      tags:
-      - ProcedureStep
-  /procedure-steps/{id}/services:
-    get:
-      operationId: getProcedureStepServices
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetProcedureStepServicesResponse"
-          description: OK
-      summary: Get all services of a procedure step
-      tags:
-      - ProcedureStep
-  /procedure-steps/{procedureStepId}/appointment:
-    delete:
-      operationId: deleteAppointmentEp
-      parameters:
-      - in: path
-        name: procedureStepId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Cancel an appointment from employee portal.
-      tags:
-      - ProcedureStep
-  /procedures:
-    get:
-      description: |
-        GET operation for retrieving basic information of procedures for the procedure overview.
-      operationId: getProcedures
-      parameters:
-      - description: |
-          Only procedures are returned where the assigneeId of at least one task equals the `assignedToId`.
-          If not submitted, no filtering takes place.
-        in: query
-        name: assignedToId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - description: |
-          Filter logic:
-          - If `procedureType` is submitted, only procedures are returned which have one of the submitted types.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - description: |
-          Filter logic:
-          - If `procedureStatus` is submitted, only procedures are returned which have one of the submitted statuses.
-          - If not submitted, no filtering takes place
-        in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - description: |
-          The following sorting options are available:
-          - `CREATED_AT`: Sorting by createdAt attribute
-          - `MODIFIED_AT`: Sorting by modifiedAt attribute
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetProceduresSortBy"
-      - description: Sorting order.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetProceduresSortOrder"
-      - description: Limit of returned procedures
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Offset used for pagination
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          maximum: 2000
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for user
-      tags:
-      - Procedure
-  /procedures/check-file-state-usage:
-    post:
-      operationId: checkFileStateUsage
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CheckFileStateUsageRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/CheckFileStateUsageResponse"
-          description: OK
-      summary: Identify which file state IDs are still used by active procedures.
-      tags:
-      - Procedure
-  /procedures/recent:
-    get:
-      operationId: getRecentProcedures
-      parameters:
-      - in: query
-        name: userId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRecentProceduresResponse"
-          description: the users recent procedures
-      summary: Get recent procedures for user
-      tags:
-      - Procedure
-  /procedures/recent/self:
-    get:
-      operationId: getSelfRecentProcedures
-      parameters:
-      - in: query
-        name: procedureType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureType"
-          uniqueItems: true
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStatus"
-          uniqueItems: true
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetRecentProceduresResponse"
-          description: the current users recent procedures
-      summary: Get recent procedures for the current user
-      tags:
-      - Procedure
-  /procedures/search:
-    get:
-      operationId: searchProcedures
-      parameters:
-      - in: query
-        name: query
-        required: true
-        schema:
-          type: string
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProceduresResponse"
-          description: OK
-      tags:
-      - Procedure
-  /procedures/{id}:
-    get:
-      operationId: getDetailedProcedure
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetDetailedProcedureResponse"
-          description: a single procedure with details
-      summary: Get a single procedure with details
-      tags:
-      - Procedure
-  /procedures/{id}/approval-requests:
-    get:
-      operationId: getApprovalRequests
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureApprovalRequestsResponse"
-          description: OK
-      summary: Get all approval requests related to this procedure
-      tags:
-      - Procedure
-  /procedures/{id}/files:
-    get:
-      description: |
-        This returns all relevant (highest version per keydocument type and non-deleted) files sorted by descending creation date.
-        That is:
-         * if an progress entry has a keydocument type set, then its files are only returned if it also has the highest keydocument version of the respective key document type.
-         * if an progress entry does not have a keydocument type, then its files are always returned.
-      operationId: getProcedureFileDetails
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProcedureFileDetailsResponse"
-          description: OK
-      summary: Get relevant procedure files
-      tags:
-      - Procedure
-  /procedures/{procedureId}/progress-entries:
-    get:
-      operationId: getProgressEntries
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - description: Filter on progressEntryType
-        in: query
-        name: progressEntryType
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-          uniqueItems: true
-      - description: Filter on child class of progressEntry
-        in: query
-        name: progressEntryClass
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProgressEntryClass"
-          uniqueItems: true
-      - description: |
-          If `initiatedBy` is set with a `userId` then the following is returned:
-          * Only progressEntries with `createdBy`=`userId` in case `ManualProgressEntry` or `ProcessedInboxProgressEntry`
-          * Only progressEntries with `triggeredBy`=`userId` in case `SystemProgressEntry`
-        in: query
-        name: initiatedBy
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      - description: |
-          Filter on triggerType.
-          If this is set, only SystemProgressEntries are returned since only SystemProgressEntries have this attribute.
-        in: query
-        name: triggerType
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TriggerType"
-          uniqueItems: true
-      - description: 'Sorting on either modifiedAt or createdAt '
-        in: query
-        name: sortBy
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProgressEntrySortBy"
-      - description: Sorting order. Possible options  "ASC" for ascending and "DESC"
-          for descending.
-        in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProgressEntrySortOrder"
-      - description: Maximum number of elements to return
-        in: query
-        name: pageSize
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      - description: Index of page to be returned
-        in: query
-        name: pageNumber
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 0
-          minimum: 0
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProgressEntriesResponse"
-          description: OK
-      summary: Get list of procedure's progress entries
-      tags:
-      - ProgressEntry
-    post:
-      description: |-
-        Creates a manual progress entry with an optional file upload.
-
-               Permitted file formats:
-                - Image formats: jpeg, png
-                - PDF formats: pdf/a
-                - Mail formats: eml
-      operationId: addProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              type: object
-              properties:
-                createManualProgressEntryRequest:
-                  $ref: "#/components/schemas/CreateManualProgressEntryRequest"
-                file:
-                  type: string
-                  format: binary
-                fileMetaData:
-                  $ref: "#/components/schemas/FileMetaData"
-              required:
-              - createManualProgressEntryRequest
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ManualProgressEntry"
-          description: OK
-      summary: Create a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}:
-    delete:
-      operationId: removeProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Remove a manual progress entry
-      tags:
-      - ProgressEntry
-    get:
-      operationId: getProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetProgressEntryResponse"
-          description: OK
-      summary: Get a progress entry
-      tags:
-      - ProgressEntry
-    patch:
-      operationId: patchProgressEntry
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchManualProgressEntryRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ManualProgressEntry"
-          description: OK
-      summary: Modify a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}/deletion-request:
-    post:
-      operationId: requestProgressEntryDeletion
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/CreateApprovalRequestRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/ApprovalRequest"
-          description: OK
-      summary: Request deletion of a manual progress entry
-      tags:
-      - ProgressEntry
-  /procedures/{procedureId}/progress-entries/{progressEntryId}/history:
-    get:
-      operationId: getManualProgressEntryHistory
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: progressEntryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetManualProgressEntryHistoryResponse"
-          description: OK
-      summary: Get the history of a manual progress entry
-      tags:
-      - ProgressEntry
-  /task-metrics:
-    get:
-      operationId: getTaskMetrics
-      parameters:
-      - in: query
-        name: procedureType
-        required: true
-        schema:
-          $ref: "#/components/schemas/ProcedureType"
-      - in: query
-        name: timeRangeStart
-        required: true
-        schema:
-          type: string
-          format: date-time
-      - in: query
-        name: timeRangeEnd
-        required: true
-        schema:
-          type: string
-          format: date-time
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTaskMetricsResponse"
-          description: the metrics of a specific procedure type
-      summary: Get tasks metrics for a procedure type of a business module for procedures
-        created in the given time range
-      tags:
-      - Task
-  /tasks:
-    get:
-      operationId: getTasks
-      parameters:
-      - in: query
-        name: assigneeId
-        required: false
-        schema:
-          type: string
-          format: uuid
-      - in: query
-        name: assignedById
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      - in: query
-        name: taskTypes
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskType"
-          uniqueItems: true
-      - in: query
-        name: taskStatus
-        required: false
-        schema:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskStatus"
-          uniqueItems: true
-      - in: query
-        name: sortKey
-        required: true
-        schema:
-          $ref: "#/components/schemas/GetTasksSortBy"
-      - in: query
-        name: sortOrder
-        required: false
-        schema:
-          $ref: "#/components/schemas/GetTasksSortOrder"
-      - in: query
-        name: limit
-        required: false
-        schema:
-          type: integer
-          format: int32
-          default: 50
-          maximum: 200
-          minimum: 1
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TaskResponse"
-          description: tasks
-      summary: Get tasks
-      tags:
-      - Task
-  /tasks/dashboard:
-    get:
-      operationId: getTasksForDashboard
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TaskResponse"
-          description: tasks
-      summary: Get tasks for the dashboard
-      tags:
-      - Task
-  /tasks/team-view:
-    get:
-      description: Returns all _open_ tasks per module group member.
-      operationId: getTasksByAssignee
-      parameters:
-      - description: |
-          If provided, `assignee` must be member of the module group.
-          If not provided, all tasks for all members of the module group are returned.
-        in: query
-        name: assigneeId
-        required: false
-        schema:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/GetTaskByUserResponse"
-          description: OK
-      tags:
-      - Task
-  /tasks/{taskId}/assignment:
-    put:
-      operationId: assignTask
-      parameters:
-      - in: path
-        name: taskId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/AssignTaskRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Task"
-          description: OK
-      tags:
-      - Task
-  /tasks/{taskId}/self-assignment:
-    put:
-      operationId: selfAssignTask
-      parameters:
-      - in: path
-        name: taskId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SelfAssignTaskRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/Task"
-          description: OK
-      tags:
-      - Task
-  /test-helper/archiving-job:
-    post:
-      operationId: runArchivingJob
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/audit-log-storage:
-    delete:
-      operationId: clearAuditLogStorageDirectory
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/enabled-new-features/{featureToEnable}:
-    post:
-      operationId: enableNewFeature
-      parameters:
-      - in: path
-        name: featureToEnable
-        required: true
-        schema:
-          $ref: "#/components/schemas/TravelMedicineFeature"
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population:
-    post:
-      operationId: populateDefaults
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/DefaultPopulationResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/population/administrative:
-    post:
-      operationId: populateAdministrative
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/PostPopulateAdministrativeResponse"
-          description: OK
-      summary: Create administrative entities
-      tags:
-      - TestHelper
-  /test-helper/population/procedure:
-    post:
-      operationId: populateProcedure
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostPopulateProcedureRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/PostPopulateProcedureResponse"
-          description: OK
-      summary: Create a procedure and dependent entities
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor:
-    post:
-      operationId: interceptNextRequest
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/InsertRequestInterceptionTestHelperRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers:
-    post:
-      operationId: addBarrier
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/AddBarrierTestHelperResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/barriers/{barrierId}/await:
-    post:
-      operationId: awaitBarrier
-      parameters:
-      - in: path
-        name: barrierId
-        required: true
-        schema:
-          type: integer
-          format: int64
-      - in: query
-        name: timeoutInMillis
-        required: false
-        schema:
-          type: integer
-          format: int64
-          minimum: 0
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/request-interceptor/reset:
-    post:
-      operationId: resetInterceptionsAndBarriers
-      responses:
-        "200":
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/reset:
-    post:
-      operationId: reset
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/set-clock:
-    patch:
-      operationId: setClock
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockSetRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /test-helper/wind-clock:
-    patch:
-      operationId: windClockForward
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/TestHelperClockWindForwardRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            '*/*':
-              schema:
-                $ref: "#/components/schemas/TestHelperClockUpdateResponse"
-          description: OK
-      tags:
-      - TestHelper
-  /unused-inventory-vaccines:
-    get:
-      operationId: getInventoryVaccinesWithoutRmbiVaccine
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetInventoryVaccinesWithoutRmbiVaccineResponse"
-          description: OK
-      summary: Gets all inventory vaccines that are not used by any rmbi vaccine
-      tags:
-      - UnusedBaseInventoryVaccine
-  /vaccination-consultations:
-    get:
-      operationId: searchVaccinationConsultation
-      parameters:
-      - in: query
-        name: firstName
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: lastName
-        required: false
-        schema:
-          type: string
-      - in: query
-        name: dateOfBirth
-        required: false
-        schema:
-          type: string
-          format: date
-      - in: query
-        name: procedureStatus
-        required: false
-        schema:
-          $ref: "#/components/schemas/ProcedureStatus"
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/SearchVaccinationConsultationResponse"
-          description: OK
-      summary: "Search VaccinationConsultation, max. 50 results."
-      tags:
-      - VaccinationConsultation
-    post:
-      operationId: postVaccinationConsultation
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostVaccinationConsultationRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: uuid
-          description: OK
-      summary: Save a new vaccination consultation
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/appointment-overview:
-    get:
-      operationId: getAllProcedureAppointmentSummaries
-      parameters:
-      - in: query
-        name: date
-        required: true
-        schema:
-          type: string
-          format: date
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetAppointmentOverviewResponse"
-          description: OK
-      summary: "Get list of all procedure appointment summaries in a time range, sorted\
-        \ by appointment date"
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{id}/procedure-steps:
-    post:
-      operationId: addProcedureStep
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostProcedureStepRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                type: string
-                format: uuid
-          description: OK
-      summary: Add procedure step to vaccination consultation with given id
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}:
-    delete:
-      operationId: abortDraftVaccinationConsultation
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Aboard a draft vaccination consultation
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/accept-draft:
-    patch:
-      operationId: acceptDraftVaccinationConsultation
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchAcceptDraftRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Accept a draft vaccination consultation
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/assignable-services:
-    get:
-      operationId: getAllAssignableServices
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetAssignableServicesResponse"
-          description: OK
-      summary: "Get list of all assignable services, which can be assigned to a procedure\
-        \ step"
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/available-appointments:
-    get:
-      operationId: getAllAvailableAppointments
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetAvailableAppointmentsResponse"
-          description: OK
-      summary: Get list of all appointments which are available to assign services
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/certificates:
-    get:
-      operationId: getCertificates
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetCertificatesResponse"
-          description: OK
-      summary: Gets all certificates of a vaccination consultation
-      tags:
-      - VaccinationConsultation
-    post:
-      operationId: postCertificate
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostPutCertificateRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Adds a new certificate
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/details:
-    get:
-      operationId: getVaccinationConsultationDetails
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetVaccinationConsultationDetailsResponse"
-          description: OK
-      summary: Get vaccination consultation details
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/information-statements:
-    get:
-      operationId: getInformationStatements
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetInformationStatementsResponse"
-          description: OK
-      summary: Get information statements for this VaccinationConsultation.
-      tags:
-      - VaccinationConsultation
-    post:
-      operationId: postInformationStatements
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostInformationStatementsRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Add information statements to a procedure
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/information-statements/{informationStatementId}:
-    delete:
-      operationId: deleteInformationStatement
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: informationStatementId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Remove an information statement from the procedure and delete it
-      tags:
-      - VaccinationConsultation
-    get:
-      operationId: getInformationStatementPdf
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: informationStatementId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Generate information statement pdf.
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/information-statements/{informationStatementId}/reset:
-    put:
-      operationId: resetInformationStatement
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: informationStatementId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Remove all answers given so far from the sheet and reset the answered
-        flag
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/medical-histories:
-    get:
-      operationId: getMedicalHistories
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetMedicalHistoriesResponse"
-          description: OK
-      summary: Get medical histories for this VaccinationConsultation.
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/medical-histories/{medicalHistoryId}:
-    get:
-      operationId: getMedicalHistoryPdf
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: medicalHistoryId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/octet-stream:
-              schema:
-                type: string
-                format: binary
-          description: OK
-      summary: Generate medical history pdf.
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/other-services/{serviceId}:
-    patch:
-      operationId: patchOtherService
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: serviceId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchOtherServiceRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Modifies an other service for a procedure step
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/patient:
-    patch:
-      operationId: updatePatient
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchVaccinationConsultationPatientRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Update patient in a vaccination consultation
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/services:
-    post:
-      operationId: postServices
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostServicesRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Add a list of vaccinations and other services to a procedure
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/services/{serviceId}:
-    delete:
-      operationId: deleteService
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: serviceId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Remove a service from a procedure
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/services/{serviceId}/assign-step:
-    patch:
-      operationId: assignStepToService
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: serviceId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchServiceAssignmentRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Assign a procedure step to a service (vaccination/other service)
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/services/{serviceId}/unassign-step:
-    patch:
-      operationId: unassignStepToService
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: serviceId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Unassign a procedure step from a service (vaccination/other service)
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/status:
-    get:
-      operationId: getStatus
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/ProcedureStatus"
-          description: OK
-      summary: Retrieve the current state of the procedure.
-      tags:
-      - VaccinationConsultation
-    patch:
-      operationId: patchStatus
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/ProcedureStatus"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Change the current state of the procedure.
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/stepsWithAppliedServices:
-    get:
-      operationId: getStepsWithAppliedServices
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetStepsWithAppliedServicesResponse"
-          description: OK
-      summary: Collect all services which have been applied to any of (and grouped
-        by) the VaccinationConsultation's steps.
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/sync-person:
-    put:
-      operationId: syncPersonData
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/SyncPersonRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Synchronize patient (person) data
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/travel-details:
-    patch:
-      operationId: updateTravelDetails
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchVaccinationConsultationTravelDetailsRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Update travel details in a vaccination consultation
-      tags:
-      - VaccinationConsultation
-  /vaccination-consultations/{procedureId}/vaccinations/{serviceId}:
-    patch:
-      operationId: patchVaccination
-      parameters:
-      - in: path
-        name: procedureId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      - in: path
-        name: serviceId
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PatchVaccinationRequest"
-        required: true
-      responses:
-        "200":
-          description: OK
-      summary: Adds vaccination date and batch identifier to a vaccination
-      tags:
-      - VaccinationConsultation
-  /vaccines:
-    get:
-      operationId: getVaccines
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/GetVaccinesResponse"
-          description: OK
-      summary: Gets all Vaccines
-      tags:
-      - Vaccine
-    post:
-      operationId: postVaccine
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostPutVaccineRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Vaccine"
-          description: OK
-      summary: Adds a new Vaccine
-      tags:
-      - Vaccine
-  /vaccines/{id}:
-    delete:
-      operationId: deleteVaccine
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          description: OK
-      summary: Deletes a Vaccine
-      tags:
-      - Vaccine
-    get:
-      operationId: getVaccine
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Vaccine"
-          description: OK
-      summary: Gets one Vaccine by ID
-      tags:
-      - Vaccine
-    put:
-      operationId: putVaccine
-      parameters:
-      - in: path
-        name: id
-        required: true
-        schema:
-          type: string
-          format: uuid
-      requestBody:
-        content:
-          application/json:
-            schema:
-              $ref: "#/components/schemas/PostPutVaccineRequest"
-        required: true
-      responses:
-        "200":
-          content:
-            application/json:
-              schema:
-                $ref: "#/components/schemas/Vaccine"
-          description: OK
-      summary: Modifies an existing Vaccine
-      tags:
-      - Vaccine
-components:
-  schemas:
-    AbstractFile:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFileReference"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          createdAt:
-            type: string
-            format: date-time
-          createdBy:
-            type: string
-            format: uuid
-          fileName:
-            type: string
-          fileSizeBytes:
-            type: integer
-            format: int32
-          fileType:
-            $ref: "#/components/schemas/FileType"
-          locked:
-            type: boolean
-          modifiedAt:
-            type: string
-            format: date-time
-      - $ref: "#/components/schemas/ApprovalRequestEntity"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    AbstractFileReference:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        deletable:
-          type: boolean
-        deleted:
-          type: boolean
-        fileId:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - deletable
-      - deleted
-      - fileId
-    AddBarrierTestHelperResponse:
-      type: object
-      properties:
-        barrierId:
-          type: integer
-          format: int64
-          minimum: 1
-      required:
-      - barrierId
-    AddGdprValidationTaskRequest:
-      type: object
-      properties:
-        gdprProcedureId:
-          type: string
-          format: uuid
-        startedAt:
-          type: string
-          format: date-time
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - gdprProcedureId
-      - startedAt
-      - type
-    Address:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    AppliedService:
-      type: object
-      description: One of the applied service in the StepWithAppliedServicesDto list
-      properties:
-        serviceDescription:
-          type: string
-        serviceId:
-          type: string
-          format: uuid
-      required:
-      - serviceDescription
-      - serviceId
-    Appointment:
-      type: object
-      description: Appointment of a procedure.
-      properties:
-        end:
-          type: string
-          format: date-time
-        start:
-          type: string
-          format: date-time
-      required:
-      - end
-      - start
-    AppointmentBlockSortKey:
-      type: string
-      enum:
-      - START
-      - END
-    AppointmentBookingType:
-      type: string
-      enum:
-      - USER_DEFINED
-      - APPOINTMENT_BLOCK
-      - SELF_BOOKING
-      - CANCELLED
-    AppointmentLocation:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-      required:
-      - id
-      - name
-    AppointmentOverviewEntry:
-      type: object
-      properties:
-        age:
-          type: integer
-          format: int32
-        appointment:
-          type: string
-          format: date-time
-        appointmentBookingType:
-          $ref: "#/components/schemas/AppointmentBookingType"
-        appointmentType:
-          $ref: "#/components/schemas/AppointmentType"
-        createdBy:
-          $ref: "#/components/schemas/CreatedByUserType"
-        dateOfBirth:
-          type: string
-          format: date
-        earliestDate:
-          type: string
-          format: date
-        firstName:
-          type: string
-        lastName:
-          type: string
-        procedureId:
-          type: string
-          format: uuid
-        status:
-          $ref: "#/components/schemas/ProcedureStatus"
-        travelStartDate:
-          type: string
-          format: date
-      required:
-      - age
-      - appointmentType
-      - createdBy
-      - dateOfBirth
-      - firstName
-      - lastName
-      - procedureId
-      - status
-    AppointmentSummary:
-      type: object
-      properties:
-        appointmentBookingType:
-          $ref: "#/components/schemas/AppointmentBookingType"
-        appointmentType:
-          $ref: "#/components/schemas/AppointmentType"
-        earliestDate:
-          type: string
-          format: date
-        end:
-          type: string
-          format: date-time
-        procedureStepId:
-          type: string
-          format: uuid
-        start:
-          type: string
-          format: date-time
-      required:
-      - appointmentBookingType
-      - appointmentType
-      - procedureStepId
-    AppointmentType:
-      type: string
-      enum:
-      - CONSULTATION
-      - VACCINATION
-      - REGULAR_EXAMINATION
-      - CAN_CHILD
-      - ENTRY_LEVEL
-      - SPECIAL_NEEDS
-      - PROOF_SUBMISSION
-      - HIV_STI_CONSULTATION
-      - SEX_WORK
-      - RESULTS_REVIEW
-      - OFFICIAL_MEDICAL_SERVICE
-    AppointmentTypeConfig:
-      type: object
-      properties:
-        appointmentTypeDto:
-          $ref: "#/components/schemas/AppointmentType"
-        id:
-          type: string
-          format: uuid
-        standardDurationInMinutes:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - appointmentTypeDto
-      - id
-      - standardDurationInMinutes
-    ApprovalRequest:
-      type: object
-      properties:
-        approvalRequestId:
-          type: string
-          format: uuid
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-          format: uuid
-        decidedAt:
-          type: string
-          format: date-time
-        decidedBy:
-          type: string
-          format: uuid
-        decision:
-          $ref: "#/components/schemas/Decision"
-        entity:
-          oneOf:
-          - $ref: "#/components/schemas/ManualProgressEntry"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        operation:
-          $ref: "#/components/schemas/Operation"
-        reason:
-          type: string
-        status:
-          $ref: "#/components/schemas/ApprovalRequestStatus"
-      required:
-      - approvalRequestId
-      - createdAt
-      - createdBy
-      - operation
-      - reason
-      - status
-    ApprovalRequestEntity:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    ApprovalRequestStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    ArchivingDetails:
-      type: object
-      properties:
-        archivingPeriodYears:
-          type: integer
-          format: int32
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-      required:
-      - archivingPeriodYears
-      - archivingRelevance
-    ArchivingRelevance:
-      type: string
-      enum:
-      - DEFAULT
-      - RELEVANT
-      - IRRELEVANT
-    ArchivingRelevanceSettings:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        defaultArchivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-      required:
-      - archivingRelevance
-      - defaultArchivingRelevance
-    AssignTaskRequest:
-      type: object
-      properties:
-        assignee:
-          type: string
-          format: uuid
-        dueAt:
-          type: string
-          format: date-time
-        taskVersion:
-          type: integer
-          format: int64
-      required:
-      - assignee
-      - taskVersion
-    AssignableService:
-      type: object
-      properties:
-        appointmentSuggestion:
-          type: string
-          format: date
-        latency:
-          type: integer
-          format: int32
-        serviceDescription:
-          type: string
-        serviceId:
-          type: string
-          format: uuid
-        vaccinationNumber:
-          type: integer
-          format: int32
-      required:
-      - serviceDescription
-      - serviceId
-    BulkUpdateProceduresArchivingRelevanceRequest:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        procedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 200
-          minItems: 1
-          uniqueItems: true
-      required:
-      - archivingRelevance
-      - procedures
-    BulkUpdateProceduresArchivingRelevanceResponse:
-      type: object
-      properties:
-        archivingRelevance:
-          $ref: "#/components/schemas/ArchivingRelevance"
-        failedProcedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-        updatedProcedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          uniqueItems: true
-      required:
-      - archivingRelevance
-      - failedProcedures
-      - updatedProcedures
-    BusinessModule:
-      type: string
-      enum:
-      - INSPECTION
-      - SCHOOL_ENTRY
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY
-      - DENTAL
-      - OFFICIAL_MEDICAL_SERVICE
-    BusinessProcedureInclusionStatus:
-      type: string
-      enum:
-      - INCLUDED
-      - UNDECIDED
-    BusinessProcedureWithInclusionStatus:
-      type: object
-      properties:
-        businessProcedure:
-          $ref: "#/components/schemas/Procedure"
-        inclusionStatus:
-          $ref: "#/components/schemas/BusinessProcedureInclusionStatus"
-      required:
-      - businessProcedure
-      - inclusionStatus
-    CertificatePopulation:
-      type: object
-      description: request the creation of a certificate for some of the services
-        of a step/appointment
-      properties:
-        serviceKeys:
-          type: array
-          items:
-            type: string
-          maxItems: 2147483647
-          minItems: 1
-        stepKey:
-          type: string
-      required:
-      - serviceKeys
-      - stepKey
-    CertificateType:
-      type: string
-      enum:
-      - HEALTH_INSURANCE
-    CheckFileStateUsageRequest:
-      type: object
-      properties:
-        fileStatesIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-      required:
-      - fileStatesIds
-    CheckFileStateUsageResponse:
-      type: object
-      properties:
-        inUse:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - inUse
-    CitizenPortalCredentials:
-      type: object
-      properties:
-        accessCode:
-          type: string
-        dateOfBirth:
-          type: string
-          format: date
-      required:
-      - accessCode
-      - dateOfBirth
-    ContactDetails:
-      type: object
-      properties:
-        address:
-          $ref: "#/components/schemas/InboxProcedureAddress"
-        contactType:
-          $ref: "#/components/schemas/ContactType"
-        dateOfBirth:
-          type: string
-          format: date
-        emailAddress:
-          type: string
-        facilityName:
-          type: string
-        firstName:
-          type: string
-        lastName:
-          type: string
-        phoneNumber:
-          type: string
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          $ref: "#/components/schemas/Title"
-      required:
-      - contactType
-      - salutation
-    ContactType:
-      type: string
-      enum:
-      - PRIVATE_PERSON
-      - FACILITY
-    CountryCode:
-      type: string
-      description: "List of country codes in ISO 3166-1 alpha-2 format. With custom\
-        \ extensions for stateless, non-standard countries, and unknown countries."
-      enum:
-      - AD
-      - AE
-      - AF
-      - AG
-      - AI
-      - AL
-      - AM
-      - AO
-      - AQ
-      - AR
-      - AS
-      - AT
-      - AU
-      - AW
-      - AX
-      - AZ
-      - BA
-      - BB
-      - BD
-      - BE
-      - BF
-      - BG
-      - BH
-      - BI
-      - BJ
-      - BL
-      - BM
-      - BN
-      - BO
-      - BQ
-      - BR
-      - BS
-      - BT
-      - BV
-      - BW
-      - BY
-      - BZ
-      - CA
-      - CC
-      - CD
-      - CF
-      - CG
-      - CH
-      - CI
-      - CK
-      - CL
-      - CM
-      - CN
-      - CO
-      - CR
-      - CU
-      - CV
-      - CW
-      - CX
-      - CY
-      - CZ
-      - DE
-      - DJ
-      - DK
-      - DM
-      - DO
-      - DZ
-      - EC
-      - EE
-      - EG
-      - EH
-      - ER
-      - ES
-      - ET
-      - FI
-      - FJ
-      - FK
-      - FM
-      - FO
-      - FR
-      - GA
-      - GB
-      - GD
-      - GE
-      - GF
-      - GG
-      - GH
-      - GI
-      - GL
-      - GM
-      - GN
-      - GP
-      - GQ
-      - GR
-      - GS
-      - GT
-      - GU
-      - GW
-      - GY
-      - HK
-      - HM
-      - HN
-      - HR
-      - HT
-      - HU
-      - ID
-      - IE
-      - IL
-      - IM
-      - IN
-      - IO
-      - IQ
-      - IR
-      - IS
-      - IT
-      - JE
-      - JM
-      - JO
-      - JP
-      - KE
-      - KG
-      - KH
-      - KI
-      - KM
-      - KN
-      - KP
-      - KR
-      - KW
-      - KY
-      - KZ
-      - LA
-      - LB
-      - LC
-      - LI
-      - LK
-      - LR
-      - LS
-      - LT
-      - LU
-      - LV
-      - LY
-      - MA
-      - MC
-      - MD
-      - ME
-      - MF
-      - MG
-      - MH
-      - MK
-      - ML
-      - MM
-      - MN
-      - MO
-      - MP
-      - MQ
-      - MR
-      - MS
-      - MT
-      - MU
-      - MV
-      - MW
-      - MX
-      - MY
-      - MZ
-      - NA
-      - NC
-      - NE
-      - NF
-      - NG
-      - NI
-      - NL
-      - "NO"
-      - NP
-      - NR
-      - NU
-      - NZ
-      - OM
-      - PA
-      - PE
-      - PF
-      - PG
-      - PH
-      - PK
-      - PL
-      - PM
-      - PN
-      - PR
-      - PS
-      - PT
-      - PW
-      - PY
-      - QA
-      - RE
-      - RO
-      - RS
-      - RU
-      - RW
-      - SA
-      - SB
-      - SC
-      - SD
-      - SE
-      - SG
-      - SH
-      - SI
-      - SJ
-      - SK
-      - SL
-      - SM
-      - SN
-      - SO
-      - SR
-      - SS
-      - ST
-      - SV
-      - SX
-      - SY
-      - SZ
-      - TC
-      - TD
-      - TF
-      - TG
-      - TH
-      - TJ
-      - TK
-      - TL
-      - TM
-      - TN
-      - TO
-      - TR
-      - TT
-      - TV
-      - TW
-      - TZ
-      - UA
-      - UG
-      - UM
-      - US
-      - UY
-      - UZ
-      - VA
-      - VC
-      - VE
-      - VG
-      - VI
-      - VN
-      - VU
-      - WF
-      - WS
-      - YE
-      - YT
-      - ZA
-      - ZM
-      - ZW
-      - XK
-      - UNKNOWN
-      - STATELESS
-    CreateAppointmentBlockGroupResponse:
-      type: object
-      properties:
-        appointmentBlockIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-        id:
-          type: string
-          format: uuid
-          description: Id of the AppointmentBlockGroup.
-          example: a765534d-760a-417d-8639-5e2fd59246e2
-      required:
-      - appointmentBlockIds
-      - id
-    CreateApprovalRequestRequest:
-      type: object
-      properties:
-        reason:
-          type: string
-      required:
-      - reason
-    CreateDailyAppointmentBlock:
-      type: object
-      properties:
-        daysOfWeek:
-          type: array
-          items:
-            $ref: "#/components/schemas/DayOfWeek"
-        end:
-          type: string
-          format: date-time
-          description: Time at which the appointment block ends.
-          example: 2016-01-01T01:45:00.123456+01:00
-        start:
-          type: string
-          format: date-time
-          description: Time at which the appointment block starts.
-          example: 2016-01-01T01:00:00.123456+01:00
-      required:
-      - daysOfWeek
-      - end
-      - start
-    CreateDailyAppointmentBlockGroupRequest:
-      type: object
-      properties:
-        appointmentBlocks:
-          type: array
-          items:
-            $ref: "#/components/schemas/CreateDailyAppointmentBlock"
-        consultants:
-          type: array
-          items:
-            type: string
-            format: uuid
-        locationId:
-          type: string
-          format: uuid
-        mfas:
-          type: array
-          items:
-            type: string
-            format: uuid
-        parallelExaminations:
-          type: integer
-          format: int32
-          maximum: 10
-          minimum: 1
-        physicians:
-          type: array
-          items:
-            type: string
-            format: uuid
-        type:
-          $ref: "#/components/schemas/AppointmentType"
-      required:
-      - appointmentBlocks
-      - parallelExaminations
-      - type
-    CreateInboxProcedureRequest:
-      type: object
-      properties:
-        contactDetails:
-          $ref: "#/components/schemas/ContactDetails"
-        inboxProcedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        inboxProgressEntry:
-          $ref: "#/components/schemas/CreateInboxProgressEntry"
-      required:
-      - contactDetails
-      - inboxProgressEntry
-    CreateInboxProgressEntry:
-      type: object
-      properties:
-        inboxProgressEntryType:
-          $ref: "#/components/schemas/InboxProgressEntryType"
-        messageText:
-          type: string
-        subject:
-          type: string
-      required:
-      - inboxProgressEntryType
-    CreateManualProgressEntryRequest:
-      type: object
-      properties:
-        keyDocumentType:
-          type: string
-        manualProgressEntryType:
-          $ref: "#/components/schemas/ManualProgressEntryType"
-        note:
-          type: string
-      required:
-      - manualProgressEntryType
-    CreatedByUserType:
-      type: string
-      enum:
-      - EMPLOYEE
-      - CITIZEN_PORTAL
-    DataOrigin:
-      type: string
-      description: "A list of possible origins of Persons and Facility in the Central\
-        \ Files. EDIT will only be set automatically on changes. EXTERNAL is for entries\
-        \ that come, e.g., from the citizen portal. IMPORT is reserved for automatic\
-        \ imports. MANUAL shall be set for every creation or connection done by an\
-        \ employee."
-      enum:
-      - MANUAL
-      - EXTERNAL
-      - IMPORT
-      - EDIT
-    DayOfWeek:
-      type: string
-      enum:
-      - MONDAY
-      - TUESDAY
-      - WEDNESDAY
-      - THURSDAY
-      - FRIDAY
-      - SATURDAY
-      - SUNDAY
-    Decision:
-      type: string
-      enum:
-      - GRANTED
-      - DENIED
-    DefaultPopulationResponse:
-      type: object
-      properties:
-        populations:
-          type: array
-          items:
-            $ref: "#/components/schemas/Population"
-    DeleteDownloadPackagesRequest:
-      type: object
-      properties:
-        downloadIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - downloadIds
-    DetailedFacility:
-      type: object
-      properties:
-        facilityFileState:
-          $ref: "#/components/schemas/GetFacilityFileStateResponse"
-        facilityType:
-          $ref: "#/components/schemas/FacilityType"
-      required:
-      - facilityFileState
-      - facilityType
-    DetailedPerson:
-      type: object
-      properties:
-        person:
-          $ref: "#/components/schemas/GetPersonFileStateResponse"
-        personType:
-          $ref: "#/components/schemas/PersonType"
-      required:
-      - person
-      - personType
-    DetailedTask:
-      type: object
-      properties:
-        assignedByName:
-          type: string
-        assigneeName:
-          type: string
-        task:
-          $ref: "#/components/schemas/Task"
-      required:
-      - task
-    Disease:
-      type: object
-      properties:
-        createdAt:
-          type: string
-          format: date-time
-        estimatedFee:
-          type: number
-        id:
-          type: string
-          format: uuid
-        modifiedAt:
-          type: string
-          format: date-time
-        name:
-          type: string
-          maxLength: 200
-          minLength: 0
-        visibleToCitizenPortal:
-          type: boolean
-      required:
-      - createdAt
-      - id
-      - name
-      - visibleToCitizenPortal
-    DocumentAnamnesisQuestion:
-      type: object
-      properties:
-        answer:
-          type: boolean
-        questionText:
-          type: string
-          maxLength: 200
-          minLength: 0
-        subElementMultiSelect:
-          type: array
-          items:
-            $ref: "#/components/schemas/DocumentSubElementMultiSelect"
-        subElementText:
-          $ref: "#/components/schemas/DocumentSubElementText"
-      required:
-      - questionText
-      - subElementMultiSelect
-    DocumentConfirmation:
-      type: object
-      properties:
-        answer:
-          type: boolean
-        confirmationTextField:
-          type: string
-      required:
-      - confirmationTextField
-    DocumentContent:
-      type: object
-      properties:
-        sections:
-          type: array
-          items:
-            $ref: "#/components/schemas/DocumentSection"
-          maxItems: 2147483647
-          minItems: 1
-      required:
-      - sections
-    DocumentSection:
-      type: object
-      properties:
-        sectionElements:
-          type: array
-          items:
-            $ref: "#/components/schemas/DocumentSectionElement"
-          maxItems: 2147483647
-          minItems: 1
-        sectionTitle:
-          type: string
-          maxLength: 200
-          minLength: 0
-      required:
-      - sectionElements
-    DocumentSectionElement:
-      type: object
-      properties:
-        anamnesisQuestion:
-          $ref: "#/components/schemas/DocumentAnamnesisQuestion"
-        confirmation:
-          $ref: "#/components/schemas/DocumentConfirmation"
-        textBlock:
-          $ref: "#/components/schemas/DocumentTextBlock"
-    DocumentSubElementMultiSelect:
-      type: object
-      properties:
-        answer:
-          type: boolean
-        questionText:
-          type: string
-          maxLength: 200
-          minLength: 0
-      required:
-      - questionText
-    DocumentSubElementText:
-      type: object
-      properties:
-        answer:
-          type: string
-          maxLength: 4000
-          minLength: 0
-        questionText:
-          type: string
-          maxLength: 200
-          minLength: 0
-      required:
-      - questionText
-    DocumentTextBlock:
-      type: object
-      properties:
-        textField:
-          type: string
-      required:
-      - textField
-    DomesticAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          addressAddition:
-            type: string
-            description: A descriptive addition to the address.
-            example: 2.OG links
-            maxLength: 100
-            minLength: 1
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          houseNumber:
-            type: string
-            description: "The house number of the address, including extensions."
-            example: 1a
-            maxLength: 11
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          street:
-            type: string
-            description: "The name of the street of the address, without the house\
-              \ number."
-            example: Beispielweg
-            maxLength: 55
-            minLength: 1
-      description: A usual domestic address.
-      required:
-      - city
-      - country
-      - postalCode
-      - street
-    ExportArchivingRelevantProceduresRequest:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-          uniqueItems: true
-      required:
-      - procedures
-    FacilityContactPerson:
-      type: object
-      properties:
-        emailAddress:
-          type: string
-          description: The email addresses of the Contact Person.
-          example: mail1@address.de
-          maxLength: 254
-          minLength: 6
-        firstName:
-          type: string
-          description: The given name(s) of the Contact Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          description: The last name of the Contact Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        phoneNumber:
-          type: string
-          description: The phone number of the Contact Person.
-          example: "+491234567890"
-          maxLength: 23
-          minLength: 1
-        role:
-          type: string
-          description: The role of the Contact Person in the Facility.
-          example: CEO
-          maxLength: 255
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of the Contact Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - lastName
-    FacilityType:
-      type: string
-      enum:
-      - SCHOOL
-      - INSPECTION
-      - DAYCARE
-      - HOSPITAL
-      - MEDICAL_PRACTICE
-      - REFUGEE_ACCOMMODATION
-      - OTHER
-    FileMetaData:
-      type: object
-      properties:
-        description:
-          type: string
-    FileType:
-      type: string
-      enum:
-      - JPEG
-      - PNG
-      - PDF
-      - EML
-    GdprDownloadPackageInfo:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-      required:
-      - id
-    GdprFacility:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          dataTransmitterPseudonymId:
-            type: string
-            description: The 'DatenübermittlerPseudonymId' of the MUK user
-            example: du-986b2b54ab89cf4ed674ad8c3126b966b54d4872
-          emailAddress:
-            type: string
-            description: The email addresses of the Facility.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          name:
-            type: string
-            description: The name of the Facility.
-            example: 123 Example Facility
-            maxLength: 300
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Facility.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 1
-      required:
-      - address
-      - name
-    GdprIdentificationData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-      required:
-      - '@type'
-    GdprPerson:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/GdprIdentificationData"
-      - type: object
-        properties:
-          address:
-            oneOf:
-            - $ref: "#/components/schemas/DomesticAddress"
-            - $ref: "#/components/schemas/PostboxAddress"
-          bpk2:
-            type: string
-            description: The bpk2 of the BundId user
-            example: VnMEBMXsiCWZ34v1JCulQABe6-ts1yDSrbH3zII8BF0
-          dateOfBirth:
-            type: string
-            format: date
-            description: The date of birth of the Person.
-            example: 2000-01-01
-          emailAddress:
-            type: string
-            description: The email addresses of the Person.
-            example: mail@address.de
-            maxLength: 254
-            minLength: 6
-          firstName:
-            type: string
-            description: The given name(s) of the Person.
-            example: John
-            maxLength: 80
-            minLength: 1
-          lastName:
-            type: string
-            description: The last name of the Person.
-            example: Doe
-            maxLength: 120
-            minLength: 1
-          phoneNumber:
-            type: string
-            description: The phone number of the Person.
-            example: "+491234567890"
-            maxLength: 23
-            minLength: 0
-          salutation:
-            $ref: "#/components/schemas/Salutation"
-          title:
-            type: string
-            description: The academic title of the Person.
-            example: Prof. Dr.
-            maxLength: 119
-            minLength: 1
-      required:
-      - address
-      - dateOfBirth
-      - firstName
-      - lastName
-    GdprProcedureType:
-      type: string
-      description: A list of types of GDPR procedures.
-      enum:
-      - RIGHT_OF_ACCESS
-      - RIGHT_TO_ERASURE
-    GdprValidationTask:
-      type: object
-      properties:
-        dueDate:
-          type: string
-          format: date
-        gdprProcedureId:
-          type: string
-          format: uuid
-        identificationData:
-          oneOf:
-          - $ref: "#/components/schemas/GdprFacility"
-          - $ref: "#/components/schemas/GdprPerson"
-        status:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-        type:
-          $ref: "#/components/schemas/GdprProcedureType"
-      required:
-      - dueDate
-      - gdprProcedureId
-      - identificationData
-      - status
-      - type
-    GdprValidationTaskSortKey:
-      type: string
-      enum:
-      - CREATED_AT
-    GdprValidationTaskStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    Gender:
-      type: string
-      description: The list of genders as specified in the German Personenstandsgesetz.
-      enum:
-      - NOT_SPECIFIED
-      - DIVERSE
-      - FEMALE
-      - MALE
-    GenericFileReference:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFileReference"
-      - type: object
-        properties:
-          '@type':
-            type: string
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - deletable
-      - deleted
-      - fileId
-    GetAllValidationTasksResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/GdprValidationTask"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-          minimum: 0
-      required:
-      - elements
-      - totalNumberOfElements
-    GetAppointmentBlock:
-      type: object
-      description: A planned appointment block. Appointment blocks offer a set of
-        bookable appointments at different times within the timeframe of the appointment
-        block.
-      properties:
-        end:
-          type: string
-          format: date-time
-          description: Time at which the appointment block ends.
-          example: 2016-01-01T01:45:00.123456+01:00
-        id:
-          type: string
-          format: uuid
-          description: Id of the AppointmentBlock.
-          example: a765534d-760a-417d-8639-5e2fd59246e2
-        numberOfBookedAppointments:
-          type: integer
-          format: int64
-          minimum: 0
-        numberOfFreeAppointments:
-          type: integer
-          format: int64
-          minimum: 0
-        start:
-          type: string
-          format: date-time
-          description: Time at which the appointment block starts.
-          example: 2016-01-01T01:00:00.123456+01:00
-      required:
-      - end
-      - id
-      - numberOfBookedAppointments
-      - numberOfFreeAppointments
-      - start
-    GetAppointmentBlockGroup:
-      type: object
-      properties:
-        appointmentBlocks:
-          type: array
-          items:
-            $ref: "#/components/schemas/GetAppointmentBlock"
-        id:
-          type: string
-          format: uuid
-          description: Id of the AppointmentBlockGroup.
-          example: a765534d-760a-417d-8639-5e2fd59246e2
-        location:
-          $ref: "#/components/schemas/AppointmentLocation"
-        parallelExaminations:
-          type: integer
-          format: int32
-          maximum: 10
-          minimum: 1
-        type:
-          $ref: "#/components/schemas/AppointmentType"
-      required:
-      - appointmentBlocks
-      - id
-      - parallelExaminations
-      - type
-    GetAppointmentBlockGroupsResponse:
-      type: object
-      properties:
-        elements:
-          type: array
-          items:
-            $ref: "#/components/schemas/GetAppointmentBlockGroup"
-        totalNumberOfElements:
-          type: integer
-          format: int64
-      required:
-      - elements
-      - totalNumberOfElements
-    GetAppointmentDetailsResponse:
-      type: object
-      properties:
-        bookingsRemaining:
-          type: integer
-          format: int32
-        dateOfBirth:
-          type: string
-          format: date
-        firstName:
-          type: string
-        hasAccomplishedService:
-          type: boolean
-        informationStatementSummaries:
-          type: array
-          items:
-            $ref: "#/components/schemas/InformationStatementSummary"
-        isMedicalHistoryCompletelyAnswered:
-          type: boolean
-        lastName:
-          type: string
-        medicalHistoryCitizenHasAnswered:
-          type: boolean
-        summaryDto:
-          $ref: "#/components/schemas/AppointmentSummary"
-      required:
-      - bookingsRemaining
-      - dateOfBirth
-      - firstName
-      - hasAccomplishedService
-      - informationStatementSummaries
-      - isMedicalHistoryCompletelyAnswered
-      - lastName
-      - medicalHistoryCitizenHasAnswered
-      - summaryDto
-    GetAppointmentOverviewResponse:
-      type: object
-      properties:
-        appointmentOverviewEntries:
-          type: array
-          items:
-            $ref: "#/components/schemas/AppointmentOverviewEntry"
-      required:
-      - appointmentOverviewEntries
-    GetAppointmentTypesResponse:
-      type: object
-      properties:
-        appointmentTypeConfigDtos:
-          type: array
-          items:
-            $ref: "#/components/schemas/AppointmentTypeConfig"
-      required:
-      - appointmentTypeConfigDtos
-    GetArchivableProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetArchivableProceduresSortBy:
-      type: string
-      default: CLOSED_AT
-      enum:
-      - CLOSED_AT
-      - PROCEDURE_TYPE
-    GetArchivableProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetArchivingConfigurationResponse:
-      type: object
-      properties:
-        archivingDetails:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/ArchivingDetails"
-        gracePeriodMonths:
-          type: integer
-          format: int32
-      required:
-      - archivingDetails
-      - gracePeriodMonths
-    GetAssignableServicesResponse:
-      type: object
-      properties:
-        assignableServices:
-          type: array
-          items:
-            $ref: "#/components/schemas/AssignableService"
-      required:
-      - assignableServices
-    GetAvailableAppointmentsResponse:
-      type: object
-      properties:
-        appointmentSummaryList:
-          type: array
-          items:
-            $ref: "#/components/schemas/AppointmentSummary"
-      required:
-      - appointmentSummaryList
-    GetCertificatesResponse:
-      type: object
-      properties:
-        certificates:
-          type: array
-          items:
-            $ref: "#/components/schemas/TMCertificate"
-      required:
-      - certificates
-    GetCitizenAppointmentOverviewResponse:
-      type: object
-      properties:
-        closedAppointments:
-          type: array
-          items:
-            $ref: "#/components/schemas/AppointmentSummary"
-        openAppointments:
-          type: array
-          items:
-            $ref: "#/components/schemas/AppointmentSummary"
-        procedureId:
-          type: string
-          format: uuid
-      required:
-      - closedAppointments
-      - openAppointments
-      - procedureId
-    GetDepartmentInfoResponse:
-      type: object
-      properties:
-        abbreviation:
-          type: string
-          description: The abbreviation of the name of the department
-          example: LTG
-        city:
-          type: string
-          description: The name of the city where the department is located
-          example: Berlin
-        country:
-          $ref: "#/components/schemas/CountryCode"
-        email:
-          type: string
-          description: The email address of the department
-          example: mail@address.de
-        homepage:
-          type: string
-          description: "The domain of the department's official homepage, excluding\
-            \ protocols"
-          example: department-homepage.de
-        houseNumber:
-          type: string
-          description: "The house number at the department's address, including any\
-            \ extensions or suffixes"
-          example: 1b
-        location:
-          $ref: "#/components/schemas/Location"
-        name:
-          type: string
-          description: The name of the department
-          example: Gesundheitsamt Landkreis Testgebiet
-        phoneNumber:
-          type: string
-          description: The primary contact telephone number for the department
-          example: "+491234567890"
-        postalCode:
-          type: string
-          description: The postal code for the department’s address
-          example: "12345"
-        street:
-          type: string
-          description: "The street name for the department’s address, not including\
-            \ the house number"
-          example: Beispielweg
-      required:
-      - city
-      - country
-      - email
-      - homepage
-      - houseNumber
-      - location
-      - name
-      - phoneNumber
-      - postalCode
-      - street
-    GetDetailedProcedureResponse:
-      type: object
-      properties:
-        facilities:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedFacility"
-        persons:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedPerson"
-        procedure:
-          $ref: "#/components/schemas/Procedure"
-        tasks:
-          type: array
-          items:
-            $ref: "#/components/schemas/DetailedTask"
-      required:
-      - facilities
-      - persons
-      - procedure
-      - tasks
-    GetDiseasesResponse:
-      type: object
-      properties:
-        diseases:
-          type: array
-          items:
-            $ref: "#/components/schemas/Disease"
-      required:
-      - diseases
-    GetFacilityFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        contactPersons:
-          type: array
-          description: A list of contact persons of the Facility.
-          items:
-            $ref: "#/components/schemas/FacilityContactPerson"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Facility.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        id:
-          type: string
-          format: uuid
-          description: Id of the Facility.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        name:
-          type: string
-          description: The name of the Facility.
-          example: Example Facility
-          maxLength: 300
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referenceFacility
-            it is connected to.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Facility.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-      required:
-      - contactPersons
-      - dataOrigin
-      - emailAddresses
-      - id
-      - name
-      - phoneNumbers
-      - referenceVersion
-    GetFreeAppointmentsResponse:
-      type: object
-      properties:
-        appointments:
-          type: array
-          items:
-            $ref: "#/components/schemas/Appointment"
-      required:
-      - appointments
-    GetGdprDownloadPackagesInfoResponse:
-      type: object
-      properties:
-        downloadPackages:
-          type: array
-          items:
-            $ref: "#/components/schemas/GdprDownloadPackageInfo"
-      required:
-      - downloadPackages
-    GetGdprNotificationBannerResponse:
-      type: object
-      properties:
-        earliestDueDate:
-          type: string
-          format: date
-        openValidationTasksCount:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - openValidationTasksCount
-    GetGdprValidationTaskDetailsResponse:
-      type: object
-      properties:
-        proceduresWithStatus:
-          type: array
-          items:
-            $ref: "#/components/schemas/BusinessProcedureWithInclusionStatus"
-        validationTask:
-          $ref: "#/components/schemas/GdprValidationTask"
-      required:
-      - proceduresWithStatus
-      - validationTask
-    GetGdprValidationTaskResponse:
-      type: object
-      properties:
-        status:
-          $ref: "#/components/schemas/GdprValidationTaskStatus"
-      required:
-      - status
-    GetInboxProcedureResponse:
-      type: object
-      properties:
-        inboxProcedure:
-          $ref: "#/components/schemas/InboxProcedure"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - inboxProcedure
-      - resolvedUsers
-    GetInboxProceduresResponse:
-      type: object
-      properties:
-        inboxProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/InboxProcedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - inboxProcedures
-      - totalElements
-      - totalPages
-    GetInboxProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - CREATED_AT
-    GetInboxProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetInformationStatementTemplatesResponse:
-      type: object
-      properties:
-        informationStatementTemplates:
-          type: array
-          items:
-            $ref: "#/components/schemas/InformationStatementTemplate"
-      required:
-      - informationStatementTemplates
-    GetInformationStatementsResponse:
-      type: object
-      properties:
-        informationStatements:
-          type: array
-          items:
-            $ref: "#/components/schemas/InformationStatement"
-        procedureId:
-          type: string
-          format: uuid
-      required:
-      - informationStatements
-      - procedureId
-    GetInventoryVaccinesWithoutRmbiVaccineResponse:
-      type: object
-      properties:
-        inventoryVaccineWithoutRmbiVaccineList:
-          type: array
-          items:
-            $ref: "#/components/schemas/InventoryVaccineWithoutRmbiVaccine"
-      required:
-      - inventoryVaccineWithoutRmbiVaccineList
-    GetManualProgressEntryHistoryResponse:
-      type: object
-      properties:
-        manualProgressEntryHistory:
-          type: array
-          items:
-            $ref: "#/components/schemas/ManualProgressEntryHistory"
-    GetMedicalHistoriesResponse:
-      type: object
-      properties:
-        medicalHistories:
-          type: array
-          items:
-            $ref: "#/components/schemas/MedicalHistory"
-        procedureId:
-          type: string
-          format: uuid
-      required:
-      - medicalHistories
-      - procedureId
-    GetMedicalHistoryTemplatesResponse:
-      type: object
-      properties:
-        medicalHistoryTemplates:
-          type: array
-          items:
-            $ref: "#/components/schemas/MedicalHistoryTemplate"
-      required:
-      - medicalHistoryTemplates
-    GetMetaDataHistoryResponse:
-      type: object
-      properties:
-        metaDataHistory:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ImageMetaDataHistory"
-            - $ref: "#/components/schemas/MailMetaDataHistory"
-            - $ref: "#/components/schemas/PdfMetaDataHistory"
-    GetOpeningHoursResponse:
-      type: object
-      properties:
-        de:
-          type: array
-          items:
-            type: string
-        en:
-          type: array
-          items:
-            type: string
-      required:
-      - de
-      - en
-    GetOtherServiceTemplatesResponse:
-      type: object
-      properties:
-        otherServiceTemplates:
-          type: array
-          items:
-            $ref: "#/components/schemas/OtherServiceTemplate"
-      required:
-      - otherServiceTemplates
-    GetPersonFileStateResponse:
-      type: object
-      properties:
-        contactAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dataOrigin:
-          $ref: "#/components/schemas/DataOrigin"
-        dateOfBirth:
-          type: string
-          format: date
-          description: The date of birth of the Person.
-          example: 2000-01-01
-        differentBillingAddress:
-          oneOf:
-          - $ref: "#/components/schemas/DomesticAddress"
-          - $ref: "#/components/schemas/PostboxAddress"
-        emailAddresses:
-          type: array
-          description: A list of email addresses of the Person.
-          example: "['mail1@address.de','mail2@address.de','mail3@address.de']"
-          items:
-            type: string
-        firstName:
-          type: string
-          description: The given name(s) of the Person.
-          example: John
-          maxLength: 80
-          minLength: 1
-        gender:
-          $ref: "#/components/schemas/Gender"
-        id:
-          type: string
-          format: uuid
-          description: Id of the Person.
-          example: ae9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        lastName:
-          type: string
-          description: The last name of the Person.
-          example: Doe
-          maxLength: 120
-          minLength: 1
-        nameAtBirth:
-          type: string
-          description: The last name at birth of the Person.
-          example: Smith
-          maxLength: 40
-          minLength: 1
-        outdated:
-          type: boolean
-          description: A flag that signals if a File State differs from the referencePerson
-            it is connected to. Set to 'null' if unchecked.
-          example: true
-        phoneNumbers:
-          type: array
-          description: A list of telephone numbers of the Person.
-          example: "['+4912345678901','+4912345678902','+4912345678903']"
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          description: The place of birth (without country) of the Person.
-          example: Berlin
-          maxLength: 50
-          minLength: 1
-        referenceVersion:
-          type: integer
-          format: int64
-          description: The version of referenceData that was present when the FileState
-            was created. Can be increased if a newer version is irrelevant for the
-            Procedure and the outdated flag shall be suppressed.
-          example: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          description: The academic title of a Person.
-          example: Prof. Dr.
-          maxLength: 119
-          minLength: 1
-      required:
-      - dataOrigin
-      - dateOfBirth
-      - emailAddresses
-      - firstName
-      - gender
-      - id
-      - lastName
-      - phoneNumbers
-      - referenceVersion
-      - salutation
-    GetProcedureApprovalRequestsResponse:
-      type: object
-      properties:
-        approvalRequests:
-          type: array
-          items:
-            $ref: "#/components/schemas/ApprovalRequest"
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-      required:
-      - approvalRequests
-      - resolvedUsers
-    GetProcedureFileDetailsResponse:
-      type: object
-      properties:
-        fileDetails:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProgressEntryReferenceFilePair"
-        procedureId:
-          type: string
-          format: uuid
-      required:
-      - fileDetails
-      - procedureId
-    GetProcedureMetricsResponse:
-      type: object
-      properties:
-        procedureMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureMetric"
-      required:
-      - procedureMetrics
-    GetProcedureStepServicesResponse:
-      type: object
-      properties:
-        procedureStepServices:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStepService"
-      required:
-      - procedureStepServices
-    GetProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - procedures
-      - totalElements
-      - totalPages
-    GetProceduresSortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - MODIFIED_AT
-      - CREATED_AT
-    GetProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetProgressEntriesResponse:
-      type: object
-      properties:
-        progressEntries:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ManualProgressEntry"
-            - $ref: "#/components/schemas/ProcessedInboxProgressEntry"
-            - $ref: "#/components/schemas/SystemProgressEntry"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - progressEntries
-      - totalElements
-      - totalPages
-    GetProgressEntryResponse:
-      type: object
-      properties:
-        progressEntry:
-          oneOf:
-          - $ref: "#/components/schemas/ManualProgressEntry"
-          - $ref: "#/components/schemas/ProcessedInboxProgressEntry"
-          - $ref: "#/components/schemas/SystemProgressEntry"
-        relatedKeyDocumentProgressEntries:
-          type: array
-          items:
-            oneOf:
-            - $ref: "#/components/schemas/ManualProgressEntry"
-            - $ref: "#/components/schemas/SystemProgressEntry"
-      required:
-      - progressEntry
-      - relatedKeyDocumentProgressEntries
-    GetRecentProceduresResponse:
-      type: object
-      properties:
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-      required:
-      - procedures
-    GetRelevantArchivableProceduresResponse:
-      type: object
-      properties:
-        fileSizeBytes:
-          type: integer
-          format: int32
-        procedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/Procedure"
-          maxItems: 200
-          minItems: 0
-        totalElements:
-          type: integer
-          format: int64
-          description: Total number of result elements for the given filter criteria
-        totalPages:
-          type: integer
-          format: int32
-          description: Total number of result pages for the given filter criteria
-      required:
-      - fileSizeBytes
-      - procedures
-      - totalElements
-      - totalPages
-    GetRelevantArchivableProceduresSortBy:
-      type: string
-      default: CLOSED_AT
-      enum:
-      - CLOSED_AT
-      - EXPORTED_AT
-    GetRelevantArchivableProceduresSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetStepsWithAppliedServicesResponse:
-      type: object
-      properties:
-        procedureId:
-          type: string
-          format: uuid
-        stepWithAppliedServices:
-          type: array
-          items:
-            $ref: "#/components/schemas/StepWithAppliedServices"
-      required:
-      - procedureId
-      - stepWithAppliedServices
-    GetTaskByUserResponse:
-      type: object
-      properties:
-        resolvedUsers:
-          type: object
-          additionalProperties:
-            $ref: "#/components/schemas/User"
-        tasksByUser:
-          type: object
-          additionalProperties:
-            type: array
-            items:
-              $ref: "#/components/schemas/Task"
-      required:
-      - resolvedUsers
-      - tasksByUser
-    GetTaskMetricsResponse:
-      type: object
-      properties:
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedProcedureCount:
-          type: integer
-          format: int64
-        fastestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        slowestProcedures:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureWithDuration"
-        taskMetrics:
-          type: array
-          items:
-            $ref: "#/components/schemas/TaskMetric"
-      required:
-      - businessModule
-      - closedProcedureCount
-      - fastestProcedures
-      - procedureType
-      - slowestProcedures
-      - taskMetrics
-    GetTasksSortBy:
-      type: string
-      enum:
-      - PRIORITY
-      - CREATED_AT
-      - MODIFIED_AT
-    GetTasksSortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    GetTravelMedicineFeatureTogglesResponse:
-      type: object
-      properties:
-        disabledOldFeatures:
-          type: array
-          items:
-            $ref: "#/components/schemas/TravelMedicineFeature"
-          uniqueItems: true
-        enabledNewFeatures:
-          type: array
-          items:
-            $ref: "#/components/schemas/TravelMedicineFeature"
-          uniqueItems: true
-      required:
-      - disabledOldFeatures
-      - enabledNewFeatures
-    GetVaccinationConsultationDetailsResponse:
-      type: object
-      properties:
-        createdByUserType:
-          $ref: "#/components/schemas/CreatedByUserType"
-        initialProcedureStepId:
-          type: string
-          format: uuid
-        patient:
-          $ref: "#/components/schemas/Patient"
-        personSync:
-          $ref: "#/components/schemas/PersonSync"
-        procedureId:
-          type: string
-          format: uuid
-        servicePlanGroups:
-          type: array
-          items:
-            $ref: "#/components/schemas/ServicePlanGroup"
-        status:
-          $ref: "#/components/schemas/ProcedureStatus"
-        travelInformation:
-          $ref: "#/components/schemas/TravelInformation"
-      required:
-      - createdByUserType
-      - initialProcedureStepId
-      - patient
-      - personSync
-      - procedureId
-      - servicePlanGroups
-      - status
-      - travelInformation
-    GetVaccinesResponse:
-      type: object
-      properties:
-        vaccines:
-          type: array
-          items:
-            $ref: "#/components/schemas/Vaccine"
-      required:
-      - vaccines
-    HttpMethod:
-      type: string
-      enum:
-      - GET
-      - HEAD
-      - POST
-      - PUT
-      - PATCH
-      - DELETE
-      - OPTIONS
-      - TRACE
-    Image:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/ImageMetaData"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    ImageMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          createdDate:
-            type: string
-            format: date-time
-    ImageMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          imageMetaData:
-            $ref: "#/components/schemas/ImageMetaData"
-      required:
-      - changedAt
-    InboxProcedure:
-      type: object
-      properties:
-        closedAt:
-          type: string
-          format: date-time
-        contactDetails:
-          $ref: "#/components/schemas/ContactDetails"
-        createdAt:
-          type: string
-          format: date-time
-        createdBy:
-          type: string
-          format: uuid
-        inboxProcedureId:
-          type: string
-          format: uuid
-        inboxProcedureStatus:
-          $ref: "#/components/schemas/InboxProcedureStatus"
-        inboxProcedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        inboxProgressEntry:
-          $ref: "#/components/schemas/InboxProgressEntry"
-      required:
-      - contactDetails
-      - createdAt
-      - createdBy
-      - inboxProcedureId
-      - inboxProcedureStatus
-      - inboxProgressEntry
-    InboxProcedureAddress:
-      type: object
-      properties:
-        addressAddition:
-          type: string
-        city:
-          type: string
-        country:
-          type: string
-        houseNumber:
-          type: string
-        postalCode:
-          type: string
-        postboxNumber:
-          type: integer
-          format: int32
-        street:
-          type: string
-    InboxProcedureStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    InboxProgressEntry:
-      type: object
-      properties:
-        fileReference:
-          oneOf:
-          - $ref: "#/components/schemas/GenericFileReference"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        inboxProgressEntryId:
-          type: string
-          format: uuid
-        inboxProgressEntryType:
-          $ref: "#/components/schemas/InboxProgressEntryType"
-        messageText:
-          type: string
-        subject:
-          type: string
-      required:
-      - inboxProgressEntryId
-      - inboxProgressEntryType
-    InboxProgressEntryType:
-      type: string
-      enum:
-      - LETTER
-      - PHONE_CALL
-      - EMAIL
-    InformationStatement:
-      type: object
-      properties:
-        citizenHasAnswered:
-          type: boolean
-        content:
-          $ref: "#/components/schemas/DocumentContent"
-        createdAt:
-          type: string
-          format: date-time
-        id:
-          type: string
-          format: uuid
-        modifiedAt:
-          type: string
-          format: date-time
-        title:
-          type: string
-          maxLength: 200
-          minLength: 0
-      required:
-      - citizenHasAnswered
-      - content
-      - createdAt
-      - id
-      - modifiedAt
-      - title
-    InformationStatementPopulation:
-      type: object
-      properties:
-        answered:
-          type: boolean
-        key:
-          type: string
-        templateId:
-          type: string
-          format: uuid
-      required:
-      - key
-      - templateId
-    InformationStatementSummary:
-      type: object
-      properties:
-        citizenHasAnswered:
-          type: boolean
-        id:
-          type: string
-          format: uuid
-        title:
-          type: string
-          maxLength: 200
-          minLength: 0
-      required:
-      - citizenHasAnswered
-      - id
-      - title
-    InformationStatementTemplate:
-      type: object
-      properties:
-        content:
-          $ref: "#/components/schemas/TemplateContent"
-        createdAt:
-          type: string
-          format: date-time
-        diseases:
-          type: array
-          items:
-            $ref: "#/components/schemas/Disease"
-        id:
-          type: string
-          format: uuid
-        modifiedAt:
-          type: string
-          format: date-time
-        name:
-          type: string
-          maxLength: 200
-          minLength: 0
-        state:
-          $ref: "#/components/schemas/InformationStatementTemplateState"
-        title:
-          type: string
-          maxLength: 200
-          minLength: 0
-      required:
-      - content
-      - createdAt
-      - diseases
-      - id
-      - name
-      - state
-      - title
-    InformationStatementTemplateRequest:
-      type: object
-      properties:
-        content:
-          $ref: "#/components/schemas/TemplateContent"
-        diseaseIDs:
-          type: array
-          items:
-            type: string
-            format: uuid
-        name:
-          type: string
-          maxLength: 200
-          minLength: 0
-        state:
-          $ref: "#/components/schemas/InformationStatementTemplateState"
-        title:
-          type: string
-          maxLength: 200
-          minLength: 0
-      required:
-      - content
-      - name
-      - state
-      - title
-    InformationStatementTemplateState:
-      type: string
-      enum:
-      - DRAFT
-      - FINAL
-    InitialStepPopulation:
-      type: object
-      description: "request some services to be attached to the procedure's initial\
-        \ step/appointment, also assign a key to the initial step"
-      properties:
-        initialStepKey:
-          type: string
-        serviceKeys:
-          type: array
-          items:
-            type: string
-      required:
-      - initialStepKey
-    InsertRequestInterceptionTestHelperRequest:
-      type: object
-      properties:
-        filter:
-          $ref: "#/components/schemas/TestHelperInterceptionRequestFilter"
-        type:
-          $ref: "#/components/schemas/InterceptionType"
-      required:
-      - type
-    InterceptionType:
-      type: string
-      enum:
-      - BAD_REQUEST
-      - UNAUTHORIZED
-      - FORBIDDEN
-      - NOT_FOUND
-      - INTERNAL_SERVER_ERROR
-    InventoryVaccineWithoutRmbiVaccine:
-      type: object
-      properties:
-        id:
-          type: string
-          format: uuid
-        name:
-          type: string
-      required:
-      - id
-      - name
-    KeyDocumentAwareProgressEntry:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        keyDocumentType:
-          type: string
-        keyDocumentVersion:
-          type: integer
-          format: int32
-      required:
-      - '@type'
-    Location:
-      type: object
-      description: Location defined by latitude and longitude.
-      properties:
-        latitude:
-          type: number
-          format: double
-          description: Geographic coordinate that specifies the north–south angular
-            location of a point on the surface of the Earth.
-          example: 52.51627
-        longitude:
-          type: number
-          format: double
-          description: Geographic coordinate that specifies the east–west angular
-            position of a point on the surface of the Earth.
-          example: 13.377703
-      required:
-      - latitude
-      - longitude
-    Mail:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/MailMetaData"
-          removedInvalidAttachments:
-            type: integer
-            format: int32
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-      - removedInvalidAttachments
-    MailMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          mailFrom:
-            type: string
-          mailTo:
-            type: string
-          messageText:
-            type: string
-          sentDate:
-            type: string
-            format: date-time
-          subject:
-            type: string
-      required:
-      - mailFrom
-      - mailTo
-      - messageText
-      - sentDate
-      - subject
-    MailMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          mailMetaData:
-            $ref: "#/components/schemas/MailMetaData"
-      required:
-      - changedAt
-    ManualProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          createdByUserFirstName:
-            type: string
-          createdByUserLastName:
-            type: string
-          keyDocumentType:
-            type: string
-          keyDocumentVersion:
-            type: integer
-            format: int32
-          locked:
-            type: boolean
-          manualProgressEntryType:
-            $ref: "#/components/schemas/ManualProgressEntryType"
-          note:
-            type: string
-      - $ref: "#/components/schemas/ApprovalRequestEntity"
-      - $ref: "#/components/schemas/KeyDocumentAwareProgressEntry"
-      required:
-      - createdAt
-      - createdBy
-      - locked
-      - manualProgressEntryType
-      - modifiedAt
-      - progressEntryId
-    ManualProgressEntryHistory:
-      type: object
-      properties:
-        changedAt:
-          type: string
-          format: date-time
-        manualProgressEntry:
-          $ref: "#/components/schemas/ManualProgressEntry"
-      required:
-      - changedAt
-    ManualProgressEntryType:
-      type: string
-      enum:
-      - LETTER
-      - PHONE_CALL
-      - NOTE
-      - EMAIL
-      - IMAGE
-      - DOCUMENT
-    MedicalHistory:
-      type: object
-      properties:
-        appointment:
-          type: string
-          format: date-time
-        citizenHasAnswered:
-          type: boolean
-        createdAt:
-          type: string
-          format: date-time
-        followUp:
-          type: boolean
-        id:
-          type: string
-          format: uuid
-        isCompletelyAnswered:
-          type: boolean
-        medicalHistoryContent:
-          $ref: "#/components/schemas/DocumentContent"
-        modifiedAt:
-          type: string
-          format: date-time
-        note:
-          type: string
-        procedureStepId:
-          type: string
-          format: uuid
-      required:
-      - appointment
-      - citizenHasAnswered
-      - createdAt
-      - followUp
-      - id
-      - isCompletelyAnswered
-      - medicalHistoryContent
-      - modifiedAt
-      - procedureStepId
-    MedicalHistoryTemplate:
-      type: object
-      properties:
-        content:
-          $ref: "#/components/schemas/TemplateContent"
-        createdAt:
-          type: string
-          format: date-time
-        followUpFlag:
-          type: boolean
-        id:
-          type: string
-          format: uuid
-        mainFlag:
-          type: boolean
-        modifiedAt:
-          type: string
-          format: date-time
-        state:
-          $ref: "#/components/schemas/MedicalHistoryTemplateState"
-        title:
-          type: string
-          maxLength: 200
-          minLength: 0
-      required:
-      - content
-      - createdAt
-      - followUpFlag
-      - id
-      - mainFlag
-      - state
-      - title
-    MedicalHistoryTemplateState:
-      type: string
-      enum:
-      - DRAFT
-      - FINAL
-    MetaData:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        description:
-          type: string
-      required:
-      - '@type'
-    MetaDataHistory:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        changedAt:
-          type: string
-          format: date-time
-      required:
-      - '@type'
-      - changedAt
-    Operation:
-      type: string
-      enum:
-      - DELETE
-    OtherServicePopulation:
-      type: object
-      description: request the creation of an "other service" and assign a user defined
-        key
-      properties:
-        request:
-          $ref: "#/components/schemas/PostOtherServiceRequest"
-        serviceKey:
-          type: string
-      required:
-      - request
-      - serviceKey
-    OtherServiceTemplate:
-      type: object
-      properties:
-        createdAt:
-          type: string
-          format: date-time
-        description:
-          type: string
-        fee:
-          type: number
-        id:
-          type: string
-          format: uuid
-        modifiedAt:
-          type: string
-          format: date-time
-      required:
-      - createdAt
-      - description
-      - fee
-      - id
-      - modifiedAt
-    PatchAcceptDraftRequest:
-      type: object
-      properties:
-        referencePersonId:
-          type: string
-          format: uuid
-    PatchAppointmentRequest:
-      type: object
-      properties:
-        appointmentBookingType:
-          $ref: "#/components/schemas/AppointmentBookingType"
-        appointmentStart:
-          type: string
-          format: date-time
-        appointmentType:
-          $ref: "#/components/schemas/AppointmentType"
-        durationInMinutes:
-          type: integer
-          format: int32
-      required:
-      - appointmentBookingType
-      - appointmentStart
-      - appointmentType
-      - durationInMinutes
-    PatchEarliestDateRequest:
-      type: object
-      properties:
-        earliestDate:
-          type: string
-          format: date
-      required:
-      - earliestDate
-    PatchInformationStatementRequest:
-      type: object
-      properties:
-        documentContentDto:
-          $ref: "#/components/schemas/DocumentContent"
-        signer:
-          type: string
-          maxLength: 200
-          minLength: 0
-      required:
-      - documentContentDto
-      - signer
-    PatchManualProgressEntryRequest:
-      type: object
-      properties:
-        manualProgressEntryType:
-          $ref: "#/components/schemas/ManualProgressEntryType"
-        note:
-          type: string
-          nullable: true
-    PatchMedicalHistoryRequest:
-      type: object
-      properties:
-        medicalHistoryContent:
-          $ref: "#/components/schemas/DocumentContent"
-        note:
-          type: string
-          maxLength: 4000
-          minLength: 0
-        procedureId:
-          type: string
-          format: uuid
-      required:
-      - medicalHistoryContent
-      - procedureId
-    PatchMedicalHistoryTemplateFlagRequest:
-      type: object
-      properties:
-        flag:
-          type: boolean
-      required:
-      - flag
-    PatchOtherServiceRequest:
-      type: object
-      properties:
-        appliedAt:
-          type: string
-          format: date
-        mfa:
-          type: string
-          format: uuid
-        physician:
-          type: string
-          format: uuid
-      required:
-      - appliedAt
-      - physician
-    PatchServiceAssignmentRequest:
-      type: object
-      properties:
-        procedureStepId:
-          type: string
-          format: uuid
-      required:
-      - procedureStepId
-    PatchVaccinationConsultationPatientRequest:
-      type: object
-      properties:
-        patient:
-          $ref: "#/components/schemas/Patient"
-      required:
-      - patient
-    PatchVaccinationConsultationTravelDetailsRequest:
-      type: object
-      properties:
-        travelDestinations:
-          type: array
-          items:
-            $ref: "#/components/schemas/CountryCode"
-        travelStartDate:
-          type: string
-          format: date
-        travelTimeAmount:
-          type: integer
-          format: int32
-        travelTimeUnit:
-          $ref: "#/components/schemas/TravelTimeUnit"
-        travelType:
-          $ref: "#/components/schemas/TravelType"
-      required:
-      - travelDestinations
-      - travelType
-    PatchVaccinationRequest:
-      type: object
-      properties:
-        appliedAt:
-          type: string
-          format: date
-        batchIdentifier:
-          type: string
-          maxLength: 200
-          minLength: 0
-        mfa:
-          type: string
-          format: uuid
-        physician:
-          type: string
-          format: uuid
-      required:
-      - appliedAt
-      - batchIdentifier
-      - physician
-    Patient:
-      type: object
-      properties:
-        address:
-          $ref: "#/components/schemas/PersonAddress"
-        countryOfBirth:
-          $ref: "#/components/schemas/CountryCode"
-        dateOfBirth:
-          type: string
-          format: date
-        emailAddresses:
-          type: array
-          items:
-            type: string
-        firstName:
-          type: string
-          maxLength: 80
-          minLength: 0
-        gender:
-          $ref: "#/components/schemas/Gender"
-        lastName:
-          type: string
-          maxLength: 120
-          minLength: 0
-        nameAtBirth:
-          type: string
-          maxLength: 40
-          minLength: 1
-        phoneNumbers:
-          type: array
-          items:
-            type: string
-            maxLength: 23
-            minLength: 1
-        placeOfBirth:
-          type: string
-          maxLength: 50
-          minLength: 1
-        salutation:
-          $ref: "#/components/schemas/Salutation"
-        title:
-          type: string
-          maxLength: 119
-          minLength: 1
-      required:
-      - dateOfBirth
-      - firstName
-      - lastName
-    Pdf:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/AbstractFile"
-      - type: object
-        properties:
-          '@type':
-            type: string
-          metaData:
-            $ref: "#/components/schemas/PdfMetaData"
-      discriminator:
-        propertyName: '@type'
-      required:
-      - '@type'
-      - createdAt
-      - deletable
-      - deleted
-      - fileId
-      - fileName
-      - fileSizeBytes
-      - fileType
-      - locked
-      - modifiedAt
-    PdfMetaData:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaData"
-      - type: object
-        properties:
-          createdDate:
-            type: string
-            format: date-time
-    PdfMetaDataHistory:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/MetaDataHistory"
-      - type: object
-        properties:
-          pdfMetaData:
-            $ref: "#/components/schemas/PdfMetaData"
-      required:
-      - changedAt
-    PersonAddress:
-      type: object
-      properties:
-        addressAddition:
-          type: string
-          maxLength: 100
-          minLength: 0
-        city:
-          type: string
-          maxLength: 50
-          minLength: 0
-        country:
-          $ref: "#/components/schemas/CountryCode"
-        houseNumber:
-          type: string
-          maxLength: 11
-          minLength: 0
-        postalCode:
-          type: string
-        street:
-          type: string
-          maxLength: 55
-          minLength: 0
-      required:
-      - city
-      - country
-      - postalCode
-      - street
-    PersonSync:
-      type: object
-      properties:
-        fileStateId:
-          type: string
-          format: uuid
-        outdated:
-          type: boolean
-        version:
-          type: integer
-          format: int64
-      required:
-      - fileStateId
-      - outdated
-      - version
-    PersonType:
-      type: string
-      enum:
-      - PATIENT
-      - PARENT
-      - PROFESSIONAL
-    Population:
-      type: object
-      properties:
-        numberOfPopulatedEntities:
-          type: integer
-          format: int32
-        populatorName:
-          type: string
-        totalNumberOfEntities:
-          type: integer
-          format: int64
-      required:
-      - numberOfPopulatedEntities
-      - totalNumberOfEntities
-    PostCitizenVaccinationConsultationRequest:
-      type: object
-      properties:
-        appointmentStart:
-          type: string
-          format: date-time
-        durationInMinutes:
-          type: integer
-          format: int32
-        initialStepAppointmentType:
-          $ref: "#/components/schemas/AppointmentType"
-        patient:
-          $ref: "#/components/schemas/Patient"
-        travelInformation:
-          $ref: "#/components/schemas/TravelInformation"
-      required:
-      - appointmentStart
-      - durationInMinutes
-      - initialStepAppointmentType
-      - patient
-      - travelInformation
-    PostInformationStatementsRequest:
-      type: object
-      properties:
-        templateIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - templateIds
-    PostOtherServiceRequest:
-      type: object
-      properties:
-        description:
-          type: string
-          maxLength: 200
-          minLength: 0
-        fee:
-          type: number
-      required:
-      - description
-      - fee
-    PostPopulateAdministrativeResponse:
-      type: object
-      properties:
-        appointmentBlockGroupsCreated:
-          type: object
-          additionalProperties:
-            type: string
-            format: uuid
-        diseasesCreated:
-          type: object
-          additionalProperties:
-            type: string
-            format: uuid
-        informationStatementTemplatesCreated:
-          type: object
-          additionalProperties:
-            type: string
-            format: uuid
-        inventoryVaccinesCreated:
-          type: object
-          additionalProperties:
-            type: string
-            format: uuid
-        otherServiceTemplatesCreated:
-          type: object
-          additionalProperties:
-            type: string
-            format: uuid
-        vaccinesCreated:
-          type: object
-          additionalProperties:
-            type: string
-            format: uuid
-      required:
-      - appointmentBlockGroupsCreated
-      - diseasesCreated
-      - informationStatementTemplatesCreated
-      - inventoryVaccinesCreated
-      - otherServiceTemplatesCreated
-      - vaccinesCreated
-    PostPopulateProcedureRequest:
-      type: object
-      properties:
-        cancelSteps:
-          type: array
-          items:
-            type: string
-        certificates:
-          type: array
-          items:
-            $ref: "#/components/schemas/CertificatePopulation"
-        citizenProcedureData:
-          $ref: "#/components/schemas/PostCitizenVaccinationConsultationRequest"
-        executeOtherServices:
-          type: array
-          items:
-            type: string
-        executeVaccinations:
-          type: array
-          items:
-            type: string
-        informationStatements:
-          type: array
-          items:
-            $ref: "#/components/schemas/InformationStatementPopulation"
-        initialStep:
-          $ref: "#/components/schemas/InitialStepPopulation"
-        otherServices:
-          type: array
-          items:
-            $ref: "#/components/schemas/OtherServicePopulation"
-        procedureData:
-          $ref: "#/components/schemas/PostVaccinationConsultationRequest"
-        procedureSteps:
-          type: array
-          items:
-            $ref: "#/components/schemas/ProcedureStepPopulation"
-        targetState:
-          $ref: "#/components/schemas/ProcedureStatus"
-        vaccinations:
-          type: array
-          items:
-            $ref: "#/components/schemas/VaccinationPopulation"
-    PostPopulateProcedureResponse:
-      type: object
-      properties:
-        credentials:
-          $ref: "#/components/schemas/CitizenPortalCredentials"
-        informationStatementsCreated:
-          type: object
-          additionalProperties:
-            type: string
-            format: uuid
-        procedureId:
-          type: string
-          format: uuid
-        procedureStepsCreated:
-          type: object
-          additionalProperties:
-            type: string
-            format: uuid
-        servicesCreated:
-          type: object
-          additionalProperties:
-            type: string
-            format: uuid
-      required:
-      - informationStatementsCreated
-      - procedureId
-      - procedureStepsCreated
-      - servicesCreated
-    PostProcedureStepRequest:
-      type: object
-      properties:
-        appointmentBookingType:
-          $ref: "#/components/schemas/AppointmentBookingType"
-        appointmentStart:
-          type: string
-          format: date-time
-        durationInMinutes:
-          type: integer
-          format: int32
-        earliestDate:
-          type: string
-          format: date
-        services:
-          type: array
-          items:
-            type: string
-            format: uuid
-          maxItems: 2147483647
-          minItems: 1
-      required:
-      - appointmentBookingType
-      - services
-    PostPutCertificateRequest:
-      type: object
-      properties:
-        procedureStepId:
-          type: string
-          format: uuid
-        serviceIds:
-          type: array
-          items:
-            type: string
-            format: uuid
-        type:
-          $ref: "#/components/schemas/CertificateType"
-      required:
-      - procedureStepId
-      - serviceIds
-      - type
-    PostPutDiseaseRequest:
-      type: object
-      properties:
-        diseaseName:
-          type: string
-          maxLength: 200
-          minLength: 0
-        estimatedFee:
-          type: number
-        visibleToCitizenPortal:
-          type: boolean
-      required:
-      - diseaseName
-      - visibleToCitizenPortal
-    PostPutMedicalHistoryTemplateRequest:
-      type: object
-      properties:
-        content:
-          $ref: "#/components/schemas/TemplateContent"
-        state:
-          $ref: "#/components/schemas/MedicalHistoryTemplateState"
-        title:
-          type: string
-          maxLength: 200
-          minLength: 0
-      required:
-      - content
-      - state
-      - title
-    PostPutOtherServiceTemplateRequest:
-      type: object
-      properties:
-        description:
-          type: string
-        fee:
-          type: number
-      required:
-      - description
-      - fee
-    PostPutVaccineRequest:
-      type: object
-      properties:
-        currentBatchId:
-          type: string
-        diseaseId:
-          type: string
-          format: uuid
-        fee:
-          type: number
-        inventoryVaccineId:
-          type: string
-          format: uuid
-        name:
-          type: string
-          maxLength: 200
-          minLength: 0
-        offsets:
-          type: array
-          items:
-            type: integer
-            format: int32
-      required:
-      - diseaseId
-      - fee
-      - inventoryVaccineId
-      - name
-      - offsets
-    PostServicesRequest:
-      type: object
-      properties:
-        postOtherServiceRequests:
-          type: array
-          items:
-            $ref: "#/components/schemas/PostOtherServiceRequest"
-        postVaccinationRequests:
-          type: array
-          items:
-            $ref: "#/components/schemas/PostVaccinationRequest"
-        procedureStepId:
-          type: string
-          format: uuid
-      required:
-      - postOtherServiceRequests
-      - postVaccinationRequests
-    PostVaccinationConsultationRequest:
-      type: object
-      properties:
-        appointmentBookingType:
-          $ref: "#/components/schemas/AppointmentBookingType"
-        appointmentStart:
-          type: string
-          format: date-time
-        durationInMinutes:
-          type: integer
-          format: int32
-        initialStepAppointmentType:
-          $ref: "#/components/schemas/AppointmentType"
-        patient:
-          $ref: "#/components/schemas/Patient"
-        travelDestinations:
-          type: array
-          items:
-            $ref: "#/components/schemas/CountryCode"
-        travelStartDate:
-          type: string
-          format: date
-        travelTimeAmount:
-          type: integer
-          format: int32
-        travelTimeUnit:
-          $ref: "#/components/schemas/TravelTimeUnit"
-        travelType:
-          $ref: "#/components/schemas/TravelType"
-      required:
-      - appointmentBookingType
-      - appointmentStart
-      - durationInMinutes
-      - initialStepAppointmentType
-      - patient
-      - travelDestinations
-      - travelType
-    PostVaccinationRequest:
-      type: object
-      properties:
-        createSeries:
-          type: boolean
-        diseaseId:
-          type: string
-          format: uuid
-        vaccinationNumber:
-          type: integer
-          format: int32
-          minimum: 1
-        vaccinationType:
-          $ref: "#/components/schemas/VaccinationType"
-        vaccineId:
-          type: string
-          format: uuid
-      required:
-      - createSeries
-      - diseaseId
-      - vaccinationNumber
-      - vaccineId
-    PostboxAddress:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/Address"
-      - type: object
-        properties:
-          city:
-            type: string
-            description: The city in which the address is located.
-            example: Berlin
-            maxLength: 50
-            minLength: 1
-          country:
-            $ref: "#/components/schemas/CountryCode"
-          differentName:
-            type: string
-            description: "If the name of the addressee deviates from the present name\
-              \ of a Person or Facility, e.g. when a company pays the bill for its\
-              \ employee or a parent company shall be contacted instead of its subsidiary."
-            example: Parent Company AG
-            maxLength: 200
-            minLength: 1
-          postalCode:
-            type: string
-            description: The postal code of the address.
-            example: "10115"
-            maxLength: 20
-            minLength: 1
-          postbox:
-            type: string
-            description: The number (or name) of the postbox.
-            example: "123"
-            maxLength: 21
-            minLength: 1
-      description: An address which is a postbox.
-      required:
-      - city
-      - country
-      - postalCode
-      - postbox
-    Procedure:
-      type: object
-      properties:
-        archivingRelevanceSettings:
-          $ref: "#/components/schemas/ArchivingRelevanceSettings"
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedAt:
-          type: string
-          format: date-time
-        createdAt:
-          type: string
-          format: date-time
-        exportedAt:
-          type: string
-          format: date-time
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        procedureStatus:
-          $ref: "#/components/schemas/ProcedureStatus"
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-          pattern: "[a-zA-Z0-9.].+"
-      required:
-      - archivingRelevanceSettings
-      - businessModule
-      - createdAt
-      - modifiedAt
-      - procedureId
-      - procedureStatus
-      - procedureType
-      - summary
-    ProcedureMetric:
-      type: object
-      properties:
-        abortedCount:
-          type: integer
-          format: int64
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        closedCount:
-          type: integer
-          format: int64
-        inProgressCount:
-          type: integer
-          format: int64
-        openOrDraftCount:
-          type: integer
-          format: int64
-        procedureType:
-          $ref: "#/components/schemas/ProcedureType"
-        totalCount:
-          type: integer
-          format: int64
-      required:
-      - abortedCount
-      - businessModule
-      - closedCount
-      - inProgressCount
-      - openOrDraftCount
-      - procedureType
-      - totalCount
-    ProcedureStatus:
-      type: string
-      enum:
-      - DRAFT
-      - OPEN
-      - IN_PROGRESS
-      - CLOSED
-      - ABORTED
-    ProcedureStepPopulation:
-      type: object
-      description: "request the creation of one more procedure step/appointment, including\
-        \ the services to be attached to it"
-      properties:
-        request:
-          $ref: "#/components/schemas/PostProcedureStepRequest"
-        serviceKeys:
-          type: array
-          items:
-            type: string
-          maxItems: 2147483647
-          minItems: 1
-        stepKey:
-          type: string
-      required:
-      - request
-      - serviceKeys
-      - stepKey
-    ProcedureStepService:
-      type: object
-      properties:
-        serviceDescription:
-          type: string
-        serviceId:
-          type: string
-          format: uuid
-        vaccinationNumber:
-          type: integer
-          format: int32
-      required:
-      - serviceDescription
-      - serviceId
-    ProcedureType:
-      type: string
-      enum:
-      - REGULAR_EXAMINATION
-      - CAN_CHILD
-      - ENTRY_LEVEL
-      - DRAFT_CITIZEN_OFFICE_IMPORT
-      - DRAFT_SCHOOL_IMPORT
-      - INSPECTION
-      - TM_VACCINATION_CONSULTATION
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - MEDICAL_REGISTRY_ENTRY
-      - MEDICAL_REGISTRY_CITIZEN_DRAFT
-      - MEDICAL_REGISTRY_EMPLOYEE_DRAFT
-      - DENTAL_CHILD
-      - OFFICIAL_MEDICAL_SERVICE
-    ProcedureWithDuration:
-      type: object
-      properties:
-        createdAt:
-          type: string
-          format: date-time
-        duration:
-          type: string
-          description: A duration in ISO 8601
-        id:
-          type: string
-          format: uuid
-      required:
-      - createdAt
-      - id
-    ProcessedInboxProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          createdBy:
-            type: string
-            format: uuid
-          createdByUserFirstName:
-            type: string
-          createdByUserLastName:
-            type: string
-          inboxProcedureId:
-            type: string
-            format: uuid
-          inboxProgressEntryType:
-            $ref: "#/components/schemas/InboxProgressEntryType"
-          messageText:
-            type: string
-          subject:
-            type: string
-      required:
-      - createdAt
-      - createdBy
-      - inboxProcedureId
-      - inboxProgressEntryType
-      - modifiedAt
-      - progressEntryId
-    ProgressEntry:
-      type: object
-      discriminator:
-        propertyName: '@type'
-      properties:
-        '@type':
-          type: string
-        createdAt:
-          type: string
-          format: date-time
-        fileReference:
-          oneOf:
-          - $ref: "#/components/schemas/GenericFileReference"
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        modifiedAt:
-          type: string
-          format: date-time
-        progressEntryId:
-          type: string
-          format: uuid
-      required:
-      - '@type'
-      - createdAt
-      - modifiedAt
-      - progressEntryId
-    ProgressEntryClass:
-      type: string
-      enum:
-      - MANUAL_PROGRESS_ENTRY
-      - SYSTEM_PROGRESS_ENTRY
-      - PROCESSED_INBOX_PROGRESS_ENTRY
-    ProgressEntryReferenceFilePair:
-      type: object
-      properties:
-        file:
-          oneOf:
-          - $ref: "#/components/schemas/Image"
-          - $ref: "#/components/schemas/Mail"
-          - $ref: "#/components/schemas/Pdf"
-        progressEntryId:
-          type: string
-          format: uuid
-      required:
-      - file
-      - progressEntryId
-    ProgressEntrySortBy:
-      type: string
-      default: CREATED_AT
-      enum:
-      - CREATED_AT
-      - MODIFIED_AT
-    ProgressEntrySortOrder:
-      type: string
-      default: ASC
-      enum:
-      - ASC
-      - DESC
-    Salutation:
-      type: string
-      enum:
-      - NOT_SPECIFIED
-      - NEUTRAL
-      - FEMALE
-      - MALE
-    SearchVaccinationConsultationResponse:
-      type: object
-      properties:
-        vaccinationConsultations:
-          type: array
-          items:
-            $ref: "#/components/schemas/VaccinationConsultationSearch"
-      required:
-      - vaccinationConsultations
-    SelfAssignTaskRequest:
-      type: object
-      properties:
-        dueAt:
-          type: string
-          format: date-time
-        taskVersion:
-          type: integer
-          format: int64
-      required:
-      - taskVersion
-    ServicePlanEntry:
-      type: object
-      properties:
-        appliedAt:
-          type: string
-          format: date
-        batchIdentifier:
-          type: string
-        defaultBatchIdentifier:
-          type: string
-        diseaseName:
-          type: string
-        fee:
-          type: number
-        latency:
-          type: integer
-          format: int32
-        mfa:
-          type: string
-          format: uuid
-        physician:
-          type: string
-          format: uuid
-        serviceId:
-          type: string
-          format: uuid
-        serviceTypeDescription:
-          type: string
-        status:
-          $ref: "#/components/schemas/ServiceStatus"
-        vaccinationNumber:
-          type: integer
-          format: int32
-          minimum: 1
-        vaccineName:
-          type: string
-      required:
-      - fee
-      - serviceId
-      - serviceTypeDescription
-      - status
-    ServicePlanGroup:
-      type: object
-      properties:
-        appointment:
-          type: string
-          format: date-time
-        appointmentBookingType:
-          $ref: "#/components/schemas/AppointmentBookingType"
-        appointmentType:
-          $ref: "#/components/schemas/AppointmentType"
-        citizenHasAnswered:
-          type: boolean
-        earliestDate:
-          type: string
-          format: date
-        fee:
-          type: number
-        medicalHistoryCompleted:
-          type: boolean
-        procedureStepId:
-          type: string
-          format: uuid
-        servicePlanEntries:
-          type: array
-          items:
-            $ref: "#/components/schemas/ServicePlanEntry"
-      required:
-      - fee
-      - servicePlanEntries
-    ServiceStatus:
-      type: string
-      enum:
-      - OPEN
-      - PLANNED
-      - ACCOMPLISHED
-    SortDirection:
-      type: string
-      enum:
-      - ASC
-      - DESC
-    StepWithAppliedServices:
-      type: object
-      description: A list of the step's services which have been applied (to the resp.
-        customer)
-      properties:
-        appliedServices:
-          type: array
-          items:
-            $ref: "#/components/schemas/AppliedService"
-        appointmentDateTime:
-          type: string
-          format: date-time
-        procedureStepId:
-          type: string
-          format: uuid
-      required:
-      - appliedServices
-      - appointmentDateTime
-      - procedureStepId
-    SyncPersonRequest:
-      type: object
-      properties:
-        fileStateId:
-          type: string
-          format: uuid
-        personVersion:
-          type: integer
-          format: int64
-        referenceVersion:
-          type: integer
-          format: int64
-      required:
-      - fileStateId
-      - personVersion
-      - referenceVersion
-    SystemProgressEntry:
-      type: object
-      allOf:
-      - $ref: "#/components/schemas/ProgressEntry"
-      - type: object
-        properties:
-          changeDescription:
-            type: string
-          keyDocumentType:
-            type: string
-          keyDocumentVersion:
-            type: integer
-            format: int32
-          previousFileStateId:
-            type: string
-            format: uuid
-          systemProgressEntryType:
-            type: string
-          triggerType:
-            $ref: "#/components/schemas/TriggerType"
-          triggeredBy:
-            type: string
-            format: uuid
-          triggeredByUserFirstName:
-            type: string
-          triggeredByUserLastName:
-            type: string
-      - $ref: "#/components/schemas/KeyDocumentAwareProgressEntry"
-      required:
-      - createdAt
-      - modifiedAt
-      - progressEntryId
-      - systemProgressEntryType
-      - triggerType
-    TMCertificate:
-      type: object
-      properties:
-        appointment:
-          type: string
-          format: date-time
-        certificateFileId:
-          type: string
-          format: uuid
-        createdAt:
-          type: string
-          format: date-time
-        id:
-          type: string
-          format: uuid
-        modifiedAt:
-          type: string
-          format: date-time
-        progressEntryId:
-          type: string
-          format: uuid
-        type:
-          $ref: "#/components/schemas/CertificateType"
-      required:
-      - appointment
-      - createdAt
-      - id
-      - modifiedAt
-      - progressEntryId
-      - type
-    Task:
-      type: object
-      properties:
-        assignedById:
-          type: string
-          format: uuid
-        assigneeId:
-          type: string
-          format: uuid
-        businessModule:
-          $ref: "#/components/schemas/BusinessModule"
-        createdAt:
-          type: string
-          format: date-time
-        dueAt:
-          type: string
-          format: date-time
-        isOverdue:
-          type: boolean
-        modifiedAt:
-          type: string
-          format: date-time
-        procedureId:
-          type: string
-          format: uuid
-        summary:
-          type: string
-          maxLength: 128
-          minLength: 0
-        taskId:
-          type: string
-          format: uuid
-        taskStatus:
-          $ref: "#/components/schemas/TaskStatus"
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        version:
-          type: integer
-          format: int64
-      required:
-      - businessModule
-      - createdAt
-      - isOverdue
-      - modifiedAt
-      - procedureId
-      - summary
-      - taskId
-      - taskStatus
-      - taskType
-      - version
-    TaskMetric:
-      type: object
-      properties:
-        averageDuration:
-          type: string
-          description: A duration in ISO 8601
-        moreThanTwoOccurrencesCount:
-          type: integer
-          format: int32
-        noOccurrencesCount:
-          type: integer
-          format: int32
-        oneOccurrenceCount:
-          type: integer
-          format: int32
-        taskType:
-          $ref: "#/components/schemas/TaskType"
-        twoOccurrencesCount:
-          type: integer
-          format: int32
-      required:
-      - moreThanTwoOccurrencesCount
-      - noOccurrencesCount
-      - oneOccurrenceCount
-      - taskType
-      - twoOccurrencesCount
-    TaskResponse:
-      type: object
-      properties:
-        count:
-          type: integer
-          format: int64
-          description: total number of tasks for this query
-        tasks:
-          type: array
-          items:
-            $ref: "#/components/schemas/Task"
-          maxItems: 200
-          minItems: 0
-      required:
-      - count
-      - tasks
-    TaskStatus:
-      type: string
-      enum:
-      - OPEN
-      - CLOSED
-    TaskType:
-      type: string
-      enum:
-      - BOOK_APPOINTMENT
-      - PERFORM_SCHOOL_ENTRY_EXAMINATION
-      - INSPECTION_PLANNING
-      - INSPECTION_EXECUTION
-      - INSPECTION_REPORT
-      - TRAVEL_MEDICINE
-      - MEASLES_PROTECTION
-      - STI_PROTECTION
-      - OFFICIAL_MEDICAL_SERVICE
-    TemplateAnamnesisQuestion:
-      type: object
-      properties:
-        questionText:
-          type: string
-          maxLength: 200
-          minLength: 0
-        subElementMultiSelect:
-          type: array
-          items:
-            $ref: "#/components/schemas/TemplateSubElementMultiSelect"
-        subElementText:
-          $ref: "#/components/schemas/TemplateSubElementText"
-      required:
-      - questionText
-      - subElementMultiSelect
-    TemplateConfirmation:
-      type: object
-      properties:
-        confirmationTextField:
-          type: string
-      required:
-      - confirmationTextField
-    TemplateContent:
-      type: object
-      properties:
-        sections:
-          type: array
-          items:
-            $ref: "#/components/schemas/TemplateSection"
-          maxItems: 2147483647
-          minItems: 1
-      required:
-      - sections
-    TemplateSection:
-      type: object
-      properties:
-        sectionElements:
-          type: array
-          items:
-            $ref: "#/components/schemas/TemplateSectionElement"
-          maxItems: 2147483647
-          minItems: 1
-        sectionTitle:
-          type: string
-          maxLength: 200
-          minLength: 0
-      required:
-      - sectionElements
-    TemplateSectionElement:
-      type: object
-      properties:
-        anamnesisQuestion:
-          $ref: "#/components/schemas/TemplateAnamnesisQuestion"
-        confirmation:
-          $ref: "#/components/schemas/TemplateConfirmation"
-        textBlock:
-          $ref: "#/components/schemas/TemplateTextBlock"
-    TemplateSubElementMultiSelect:
-      type: object
-      properties:
-        questionText:
-          type: string
-          maxLength: 200
-          minLength: 0
-      required:
-      - questionText
-    TemplateSubElementText:
-      type: object
-      properties:
-        questionText:
-          type: string
-          maxLength: 200
-          minLength: 0
-      required:
-      - questionText
-    TemplateTextBlock:
-      type: object
-      properties:
-        textField:
-          type: string
-      required:
-      - textField
-    TestHelperClockSetRequest:
-      type: object
-      properties:
-        newInstant:
-          type: string
-          format: date-time
-      required:
-      - newInstant
-    TestHelperClockUpdateResponse:
-      type: object
-      properties:
-        instant:
-          type: string
-          format: date-time
-      required:
-      - instant
-    TestHelperClockWindForwardRequest:
-      type: object
-      properties:
-        days:
-          type: integer
-          format: int32
-          minimum: 0
-        hours:
-          type: integer
-          format: int32
-          minimum: 0
-        minutes:
-          type: integer
-          format: int32
-          minimum: 0
-        months:
-          type: integer
-          format: int32
-          minimum: 0
-        seconds:
-          type: integer
-          format: int32
-          minimum: 0
-        weeks:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - days
-      - hours
-      - minutes
-      - months
-      - seconds
-      - weeks
-    TestHelperInterceptionRequestFilter:
-      type: object
-      properties:
-        httpMethodFilter:
-          $ref: "#/components/schemas/HttpMethod"
-        queryPatternFilter:
-          type: string
-        urlPatternFilter:
-          type: string
-    Title:
-      type: string
-      enum:
-      - DR
-      - PROF
-      - PROF_DR
-    TravelInformation:
-      type: object
-      properties:
-        travelDestinations:
-          type: array
-          items:
-            $ref: "#/components/schemas/CountryCode"
-        travelStartDate:
-          type: string
-          format: date
-        travelTimeAmount:
-          type: integer
-          format: int32
-        travelTimeUnit:
-          $ref: "#/components/schemas/TravelTimeUnit"
-        travelType:
-          $ref: "#/components/schemas/TravelType"
-      required:
-      - travelDestinations
-      - travelType
-    TravelMedicineFeature:
-      type: string
-    TravelTimeUnit:
-      type: string
-      enum:
-      - DAYS
-      - WEEKS
-      - MONTHS
-      - YEARS
-    TravelType:
-      type: string
-      enum:
-      - UNSPECIFIED
-      - NO_TRAVEL
-      - BUSINESS
-      - VACATION
-      - BACKPACK
-    TriggerType:
-      type: string
-      enum:
-      - SYSTEM_AUTOMATIC
-      - EMPLOYEE
-      - CITIZEN
-    UpdateAppointmentTypeRequest:
-      type: object
-      properties:
-        standardDurationInMinutes:
-          type: integer
-          format: int32
-          minimum: 0
-      required:
-      - standardDurationInMinutes
-    User:
-      type: object
-      properties:
-        email:
-          type: string
-          description: The email address of a user.
-          example: example@mail.de
-        enabled:
-          type: boolean
-          description: "True, if the user can login"
-          example: false
-        externalChatUsername:
-          type: string
-          description: The chat username of the gematik TI-Messenger (matrix chat).
-          example: '@username:server'
-        firstName:
-          type: string
-          description: The given name(s) of a user.
-          example: John
-        lastName:
-          type: string
-          description: The last name of a user.
-          example: Doe
-        phoneNumber:
-          type: string
-          description: The phone number of a user.
-          example: "+491234567890"
-        userId:
-          type: string
-          format: uuid
-          description: The Id of the user.
-          example: fe9831d4-dc25-48d8-9bfe-4c0b54bfb2c1
-        username:
-          type: string
-          description: The username which is displayed in the application and can
-            be used for the login.
-          example: testuser
-      required:
-      - enabled
-      - firstName
-      - lastName
-      - userId
-      - username
-    VaccinationConsultationSearch:
-      type: object
-      properties:
-        createdBy:
-          $ref: "#/components/schemas/CreatedByUserType"
-        dateOfBirth:
-          type: string
-          format: date
-        firstName:
-          type: string
-        lastName:
-          type: string
-        procedureId:
-          type: string
-          format: uuid
-        status:
-          $ref: "#/components/schemas/ProcedureStatus"
-        travelStartDate:
-          type: string
-          format: date
-      required:
-      - createdBy
-      - dateOfBirth
-      - firstName
-      - lastName
-      - procedureId
-      - status
-    VaccinationPopulation:
-      type: object
-      description: request the creation of a vaccination service and assign a user
-        defined key
-      properties:
-        request:
-          $ref: "#/components/schemas/PostVaccinationRequest"
-        serviceKey:
-          type: string
-      required:
-      - request
-      - serviceKey
-    VaccinationType:
-      type: string
-      enum:
-      - BASIC
-      - BOOSTER
-    Vaccine:
-      type: object
-      properties:
-        createdAt:
-          type: string
-          format: date-time
-        currentBatchId:
-          type: string
-        disease:
-          $ref: "#/components/schemas/Disease"
-        fee:
-          type: number
-        id:
-          type: string
-          format: uuid
-        inventoryVaccineId:
-          type: string
-          format: uuid
-        modifiedAt:
-          type: string
-          format: date-time
-        name:
-          type: string
-          maxLength: 200
-          minLength: 0
-        numVaccinations:
-          type: integer
-          format: int32
-        offsets:
-          type: array
-          items:
-            type: integer
-            format: int32
-      required:
-      - createdAt
-      - disease
-      - id
-      - inventoryVaccineId
-      - modifiedAt
-      - name
-      - numVaccinations
-      - offsets
-    ValidateAppointmentBlockGroupResponse:
-      type: object
-      properties:
-        userIdsWithEventConflicts:
-          type: array
-          items:
-            type: string
-            format: uuid
-        userIdsWithoutEventConflicts:
-          type: array
-          items:
-            type: string
-            format: uuid
-      required:
-      - userIdsWithEventConflicts
-      - userIdsWithoutEventConflicts
diff --git a/buildSrc/src/main/groovy/workspace-package.gradle b/buildSrc/src/main/groovy/workspace-package.gradle
index 64fc4f49d..d0febd891 100644
--- a/buildSrc/src/main/groovy/workspace-package.gradle
+++ b/buildSrc/src/main/groovy/workspace-package.gradle
@@ -28,7 +28,8 @@ tasks.register('clean', Delete) {
 
 tasks.register('addWorkspaceDependency', PnpmTask) {
   group = 'workspace'
-  args = project.hasProperty('package') ? ['add', "@eshg/${project.property('package')}@workspace:*"] : []
+  def saveDevArg = project.hasProperty('dev') ? ['--save-dev'] : []
+  args = project.hasProperty('package') ? ['add', "@eshg/${project.property('package')}@workspace:*"] + saveDevArg : []
 
   finalizedBy rootProject.tasks.updateProjectReferences
 }
diff --git a/citizen-portal-api/build.gradle b/citizen-portal-api/build.gradle
index bc4732aab..d9315d2f6 100644
--- a/citizen-portal-api/build.gradle
+++ b/citizen-portal-api/build.gradle
@@ -6,9 +6,9 @@ def backendDir = rootProject.layout.projectDirectory.dir('backend')
 
 openapiGenerator {
   inputSpecs = [
-    'travelMedicine' : backendDir.file('travel-medicine/openApi.yaml'), // TODO: use separate OpenAPI specification for citizen-portal
-    'officialMedicalService' : backendDir.file('official-medical-service/openApi.yaml'), // TODO: use separate OpenAPI specification for citizen-portal
-    'medicalRegistry' : backendDir.file('medical-registry/openApi.yaml'), // TODO: use separate OpenAPI specification for citizen-portal
-    'openData' : backendDir.file('opendata/openApi.yaml'), // TODO: use separate OpenAPI specification for citizen-portal
+    'businessProcedures' : backendDir.file('lib-procedures/openApi.json'), // TODO: use separate OpenAPI specification for citizen-portal
+    'officialMedicalService' : backendDir.file('official-medical-service/openApi.json'), // TODO: use separate OpenAPI specification for citizen-portal
+    'medicalRegistry' : backendDir.file('medical-registry/openApi.json'), // TODO: use separate OpenAPI specification for citizen-portal
+    'openData' : backendDir.file('opendata/openApi.json'), // TODO: use separate OpenAPI specification for citizen-portal
   ]
 }
diff --git a/citizen-portal/.env b/citizen-portal/.env
index 8975e3179..0c41e616c 100644
--- a/citizen-portal/.env
+++ b/citizen-portal/.env
@@ -3,11 +3,14 @@ PUBLIC_DEPLOYMENT_TYPE=test
 
 PUBLIC_FRONTEND_URL=http://localhost:4001
 PUBLIC_BASE_BACKEND_URL=http://localhost:4001/api/base
-PUBLIC_MEASLES_PROTECTION_BACKEND_URL=http://localhost:4001/api/measles-protection
+PUBLIC_INSPECTION_BACKEND_URL=http://localhost:4001/api/inspection
 PUBLIC_SCHOOL_ENTRY_BACKEND_URL=http://localhost:4001/api/school-entry
 PUBLIC_TRAVEL_MEDICINE_BACKEND_URL=http://localhost:4001/api/travel-medicine
-PUBLIC_OFFICIAL_MEDICAL_SERVICE_BACKEND_URL=http://localhost:4001/api/official-medical-service
-PUBLIC_MEDICAL_REGISTRY_BACKEND_URL=http://localhost:4001/api/medical-registry
+PUBLIC_MEASLES_PROTECTION_BACKEND_URL=http://localhost:4001/api/measles-protection
 PUBLIC_OPEN_DATA_BACKEND_URL=http://localhost:4001/api/opendata
+PUBLIC_STI_PROTECTION_BACKEND_URL=http://localhost:4001/api/sti-protection
+PUBLIC_MEDICAL_REGISTRY_BACKEND_URL=http://localhost:4001/api/medical-registry
+PUBLIC_DENTAL_BACKEND_URL=http://localhost:4001/api/dental
+PUBLIC_OFFICIAL_MEDICAL_SERVICE_BACKEND_URL=http://localhost:4001/api/official-medical-service
 
 MARKDOWN_PAGE_DIRECTORY=frankfurt
diff --git a/citizen-portal/gradleDependencies.json b/citizen-portal/gradleDependencies.json
index 7b3cdf760..24f5ae485 100644
--- a/citizen-portal/gradleDependencies.json
+++ b/citizen-portal/gradleDependencies.json
@@ -4,6 +4,7 @@
     ":citizen-portal-api",
     ":lib-portal",
     ":measles-protection-api",
-    ":school-entry-api"
+    ":school-entry-api",
+    ":travel-medicine-api"
   ]
 }
diff --git a/citizen-portal/package.json b/citizen-portal/package.json
index f1de81c79..a977c658e 100644
--- a/citizen-portal/package.json
+++ b/citizen-portal/package.json
@@ -11,6 +11,7 @@
     "@eshg/lib-portal": "workspace:*",
     "@eshg/measles-protection-api": "workspace:*",
     "@eshg/school-entry-api": "workspace:*",
+    "@eshg/travel-medicine-api": "workspace:*",
     "@fontsource/poppins": "catalog:joy",
     "@fullcalendar/core": "catalog:fullcalendar",
     "@fullcalendar/daygrid": "catalog:fullcalendar",
diff --git a/citizen-portal/src/app/[lang]/(privatpersonen)/mein-bereich/datenschutzrechte/page.tsx b/citizen-portal/src/app/[lang]/(privatpersonen)/mein-bereich/datenschutzrechte/page.tsx
index 590b03d1b..a142be53d 100644
--- a/citizen-portal/src/app/[lang]/(privatpersonen)/mein-bereich/datenschutzrechte/page.tsx
+++ b/citizen-portal/src/app/[lang]/(privatpersonen)/mein-bereich/datenschutzrechte/page.tsx
@@ -8,5 +8,5 @@
 import { GdprRightsOverview } from "@/lib/baseModule/components/gdpr/page/GdprRightsOverviewPage";
 
 export default function IndividualsGdprOverview() {
-  return <GdprRightsOverview type="person" />;
+  return <GdprRightsOverview userType="person" />;
 }
diff --git a/citizen-portal/src/app/[lang]/(privatpersonen)/mein-bereich/profil/page.tsx b/citizen-portal/src/app/[lang]/(privatpersonen)/mein-bereich/profil/page.tsx
index 9a9b333e2..bd8cc6c87 100644
--- a/citizen-portal/src/app/[lang]/(privatpersonen)/mein-bereich/profil/page.tsx
+++ b/citizen-portal/src/app/[lang]/(privatpersonen)/mein-bereich/profil/page.tsx
@@ -54,8 +54,10 @@ function ProfileContent({
   if (linkedPerson === "not found") {
     return (
       <ContentSheet>
-        <ContentSheetTitle>Platzhalter</ContentSheetTitle>
-        Hier könnte Ihre Werbung stehen.
+        <ContentSheetTitle>
+          {t("gdpr:profile.unlinked.title")}
+        </ContentSheetTitle>
+        {t("gdpr:profile.unlinked.description")}
       </ContentSheet>
     );
   }
diff --git a/citizen-portal/src/app/[lang]/(static)/datenschutzrechte/page.tsx b/citizen-portal/src/app/[lang]/(static)/datenschutzrechte/page.tsx
index 2f8d8517f..ae2b0f647 100644
--- a/citizen-portal/src/app/[lang]/(static)/datenschutzrechte/page.tsx
+++ b/citizen-portal/src/app/[lang]/(static)/datenschutzrechte/page.tsx
@@ -5,11 +5,15 @@
 
 "use client";
 
+import { ExternalLink } from "@eshg/lib-portal/components/navigation/ExternalLink";
+import { InternalLink } from "@eshg/lib-portal/components/navigation/InternalLink";
 import InternetIcon from "@mui/icons-material/LanguageOutlined";
 import { Button, Sheet, SheetProps, Stack, Typography } from "@mui/joy";
 import { useState } from "react";
+import { Trans } from "react-i18next";
 
 import { UserType } from "@/lib/baseModule/components/layout/types";
+import { useRoutes } from "@/lib/baseModule/shared/routes";
 import { useTranslation } from "@/lib/i18n/client";
 import { useGetDepartmentInfo } from "@/lib/shared/api/queries/department";
 import { AddressSection } from "@/lib/shared/components/AddressSection";
@@ -39,6 +43,7 @@ export default function DataPrivacyRightsEntrypointPage() {
   });
   const { data: department } = useGetDepartmentInfo();
   const { t } = useTranslation("gdpr");
+  const routes = useRoutes();
 
   return (
     <PageLayout>
@@ -49,7 +54,18 @@ export default function DataPrivacyRightsEntrypointPage() {
           <ContentSheetTitle>
             {t("entrypoint.intro_section.title")}
           </ContentSheetTitle>
-          <Typography>{t("entrypoint.intro_section.description")}</Typography>
+          <Typography>
+            <Trans
+              i18nKey="gdpr:entrypoint.intro_section.description"
+              components={{
+                InternalLink: (
+                  <InternalLink href={routes.privacyPolicy}>
+                    {routes.privacyPolicy}
+                  </InternalLink>
+                ),
+              }}
+            />
+          </Typography>
         </ContentSheet>
 
         <ContentSheet missingTitle>
@@ -69,9 +85,40 @@ export default function DataPrivacyRightsEntrypointPage() {
                 <InfoSectionTitle>
                   {t("entrypoint.your_rights_section.online.internet.title")}
                 </InfoSectionTitle>
-                {t(
-                  "entrypoint.your_rights_section.online.internet.description",
-                )}
+                <Typography
+                  sx={{
+                    whiteSpace: "preserve",
+                    textWrap: "pretty",
+                    hyphens: "auto",
+                    overflowWrap: "anywhere",
+                  }}
+                >
+                  <Trans
+                    i18nKey="gdpr:entrypoint.your_rights_section.online.internet.description"
+                    components={{
+                      BundIdLink: (
+                        <ExternalLink
+                          href="https://id.bund.de/de"
+                          target="_blank"
+                          referrerPolicy="no-referrer"
+                          sx={{ hyphens: "manual" }}
+                        >
+                          BundID
+                        </ExternalLink>
+                      ),
+                      MukLink: (
+                        <ExternalLink
+                          href="https://info.mein-unternehmenskonto.de/"
+                          target="_blank"
+                          referrerPolicy="no-referrer"
+                          sx={{ hyphens: "manual" }}
+                        >
+                          Mein Unternehmenskonto
+                        </ExternalLink>
+                      ),
+                    }}
+                  />
+                </Typography>
               </InfoSection>
               <Stack
                 direction="row"
diff --git a/citizen-portal/src/app/[lang]/unternehmen/mein-bereich/datenschutzrechte/page.tsx b/citizen-portal/src/app/[lang]/unternehmen/mein-bereich/datenschutzrechte/page.tsx
index 42e61bbdf..2b4b78a31 100644
--- a/citizen-portal/src/app/[lang]/unternehmen/mein-bereich/datenschutzrechte/page.tsx
+++ b/citizen-portal/src/app/[lang]/unternehmen/mein-bereich/datenschutzrechte/page.tsx
@@ -8,5 +8,5 @@
 import { GdprRightsOverview } from "@/lib/baseModule/components/gdpr/page/GdprRightsOverviewPage";
 
 export default function OrganizationGdprOverview() {
-  return <GdprRightsOverview type="organization" />;
+  return <GdprRightsOverview userType="organization" />;
 }
diff --git a/citizen-portal/src/app/[lang]/unternehmen/mein-bereich/profil/page.tsx b/citizen-portal/src/app/[lang]/unternehmen/mein-bereich/profil/page.tsx
index 07c27c743..e1140a6d9 100644
--- a/citizen-portal/src/app/[lang]/unternehmen/mein-bereich/profil/page.tsx
+++ b/citizen-portal/src/app/[lang]/unternehmen/mein-bereich/profil/page.tsx
@@ -57,8 +57,10 @@ function ProfileContent({
   if (linkedFacility === "not found") {
     return (
       <ContentSheet>
-        <ContentSheetTitle>Platzhalter</ContentSheetTitle>
-        Hier könnte Ihre Werbung stehen.
+        <ContentSheetTitle>
+          {t("gdpr:profile.unlinked.title")}
+        </ContentSheetTitle>
+        {t("gdpr:profile.unlinked.description")}
       </ContentSheet>
     );
   }
diff --git a/citizen-portal/src/env/server.js b/citizen-portal/src/env/server.js
index e4ce5cfa0..a1a6ed127 100644
--- a/citizen-portal/src/env/server.js
+++ b/citizen-portal/src/env/server.js
@@ -32,12 +32,15 @@ const schema = object({
 
   PUBLIC_FRONTEND_URL: urlSchema,
   PUBLIC_BASE_BACKEND_URL: urlSchema,
-  PUBLIC_MEASLES_PROTECTION_BACKEND_URL: urlSchema,
+  PUBLIC_INSPECTION_BACKEND_URL: urlSchema,
   PUBLIC_SCHOOL_ENTRY_BACKEND_URL: urlSchema,
   PUBLIC_TRAVEL_MEDICINE_BACKEND_URL: urlSchema,
-  PUBLIC_OFFICIAL_MEDICAL_SERVICE_BACKEND_URL: urlSchema,
-  PUBLIC_MEDICAL_REGISTRY_BACKEND_URL: urlSchema,
+  PUBLIC_MEASLES_PROTECTION_BACKEND_URL: urlSchema,
   PUBLIC_OPEN_DATA_BACKEND_URL: urlSchema,
+  PUBLIC_STI_PROTECTION_BACKEND_URL: urlSchema,
+  PUBLIC_MEDICAL_REGISTRY_BACKEND_URL: urlSchema,
+  PUBLIC_DENTAL_BACKEND_URL: urlSchema,
+  PUBLIC_OFFICIAL_MEDICAL_SERVICE_BACKEND_URL: urlSchema,
 
   MARKDOWN_PAGE_DIRECTORY: string(),
 });
diff --git a/citizen-portal/src/lib/baseModule/api/queries/apiQueryKeys.ts b/citizen-portal/src/lib/baseModule/api/queries/apiQueryKeys.ts
index e25dca5cb..806db81f6 100644
--- a/citizen-portal/src/lib/baseModule/api/queries/apiQueryKeys.ts
+++ b/citizen-portal/src/lib/baseModule/api/queries/apiQueryKeys.ts
@@ -18,3 +18,7 @@ export const mukFacilityLinkApiQueryKey = queryKeyFactory(
 export const bundIdPersonLinkApiQueryKey = queryKeyFactory(
   apiQueryKey(["bundIdPersonLinkApi"]),
 );
+
+export const gdprProcedureApiQueryKey = queryKeyFactory(
+  apiQueryKey(["gdprProcedureApi"]),
+);
diff --git a/citizen-portal/src/lib/baseModule/api/queries/gdpr.ts b/citizen-portal/src/lib/baseModule/api/queries/gdpr.ts
new file mode 100644
index 000000000..431ed00cc
--- /dev/null
+++ b/citizen-portal/src/lib/baseModule/api/queries/gdpr.ts
@@ -0,0 +1,144 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import {
+  ApiBusinessModule,
+  ApiGdprDownloadPackageInfo,
+  ApiGetGdprDownloadPackagesInfoResponse,
+  GdprValidationTaskApiInterface,
+} from "@eshg/citizen-portal-api/businessProcedures";
+import { STATIC_QUERY_OPTIONS } from "@eshg/lib-portal/api/queryOptions";
+import { PortalErrorCode } from "@eshg/lib-portal/errorHandling/PortalErrorCode";
+import { resolveError } from "@eshg/lib-portal/errorHandling/errorResolvers";
+import { queryOptions, useSuspenseQueries } from "@tanstack/react-query";
+import assert from "assert";
+import { isDefined } from "remeda";
+
+import { useGdprProcedureApi } from "@/lib/baseModule/api/clients";
+import { gdprProcedureApiQueryKey } from "@/lib/baseModule/api/queries/apiQueryKeys";
+import { useGdprValidationTaskApi } from "@/lib/shared/api/clients";
+import { useGetConfig } from "@/lib/shared/api/queries/publicConfig";
+
+const businessModules = Object.freeze(Object.values(ApiBusinessModule));
+
+export function useGetSelfGdprProceduresQuery() {
+  const gdprApi = useGdprProcedureApi();
+  return queryOptions({
+    queryKey: gdprProcedureApiQueryKey([
+      "getCitizenSelfUserLinkedGdprProcedures",
+    ]),
+    queryFn: () => gdprApi.getCitizenSelfUserLinkedGdprProcedures(),
+    select: (response) => response.gdprProcedures,
+  });
+}
+
+interface DownloadPackagesQueryResponse {
+  businessModule: ApiBusinessModule;
+  downloadPackages: ApiGdprDownloadPackageInfo[];
+}
+
+function getGdprDownloadPackagesInfoQuery(
+  taskApi: GdprValidationTaskApiInterface,
+  businessModule: ApiBusinessModule,
+  gdprProcedureId: string,
+  enabled: boolean,
+) {
+  return queryOptions({
+    ...STATIC_QUERY_OPTIONS, // download packages never change
+    queryKey: gdprProcedureApiQueryKey([
+      businessModule,
+      "getGdprDownloadPackagesInfo",
+      gdprProcedureId,
+      enabled,
+    ]),
+    queryFn: async (): Promise<
+      "disabled" | ApiGetGdprDownloadPackagesInfoResponse
+    > => {
+      if (enabled) {
+        try {
+          return await taskApi.getGdprDownloadPackagesInfo(gdprProcedureId);
+        } catch (e: unknown) {
+          const resolved = resolveError(e);
+          if (resolved.errorCode === PortalErrorCode.NotFound) {
+            return "disabled";
+          }
+          throw e;
+        }
+      } else {
+        return "disabled";
+      }
+    },
+    select: (data): DownloadPackagesQueryResponse => {
+      if (data === "disabled") {
+        return {
+          businessModule,
+          downloadPackages: [],
+        };
+      } else {
+        return {
+          businessModule,
+          downloadPackages: data.downloadPackages,
+        };
+      }
+    },
+  });
+}
+
+export function useGetGdprDownloadPackagesInfo(
+  gdprProcedureId: string,
+  enabled: boolean,
+) {
+  const { data: config } = useGetConfig();
+  const queries = businessModules.map((module) => {
+    // Using hooks in a loop is allowed here, since the businessModules array is constant.
+    // eslint-disable-next-line react-hooks/rules-of-hooks
+    const gdprValidationTaskApi = useGdprValidationTaskApi(module);
+    return getGdprDownloadPackagesInfoQuery(
+      gdprValidationTaskApi,
+      module,
+      gdprProcedureId,
+      enabled && config.activeModules.includes(module),
+    );
+  });
+
+  return useSuspenseQueries({
+    queries,
+  });
+}
+
+export function useDownloadPackageFileByModule() {
+  const moduleApiHooks = businessModules.map((module) => ({
+    module,
+    // Using hooks in a loop is allowed here, since the businessModules array is constant.
+    // eslint-disable-next-line react-hooks/rules-of-hooks
+    api: useGdprValidationTaskApi(module),
+  }));
+
+  function downloadPackage(
+    businessModule: ApiBusinessModule,
+    gdprProcedureId: string,
+    downloadId: string,
+  ) {
+    const resolved = moduleApiHooks.find(
+      ({ module }) => module === businessModule,
+    )!;
+    assert(
+      isDefined(resolved),
+      `Module mapping for API should be defined for business module ${businessModule}`,
+    );
+    return resolved.api.getGdprDownloadPackageRaw({
+      gdprProcedureId,
+      downloadId,
+    });
+  }
+
+  return downloadPackage;
+}
+
+export function useDownloadBaseModulePackage() {
+  const gdprApi = useGdprProcedureApi();
+  return (gdprProcedureId: string) =>
+    gdprApi.getCentralFileDownloadPackageRaw({ id: gdprProcedureId });
+}
diff --git a/citizen-portal/src/lib/baseModule/components/gdpr/GdprProcedureDownloads.tsx b/citizen-portal/src/lib/baseModule/components/gdpr/GdprProcedureDownloads.tsx
new file mode 100644
index 000000000..c9ee5948b
--- /dev/null
+++ b/citizen-portal/src/lib/baseModule/components/gdpr/GdprProcedureDownloads.tsx
@@ -0,0 +1,148 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import {
+  ApiBusinessModule,
+  ApiCitizenUsersGdprProcedure,
+} from "@eshg/base-api";
+import { useFileDownload } from "@eshg/lib-portal/api/files/download";
+import DownloadIcon from "@mui/icons-material/DownloadOutlined";
+import FileIcon from "@mui/icons-material/FileCopyOutlined";
+import {
+  Button,
+  List,
+  ListItem,
+  ListItemDecorator,
+  Stack,
+  Typography,
+  styled,
+} from "@mui/joy";
+
+import {
+  useDownloadBaseModulePackage,
+  useDownloadPackageFileByModule,
+  useGetGdprDownloadPackagesInfo,
+} from "@/lib/baseModule/api/queries/gdpr";
+import { useTranslation } from "@/lib/i18n/client";
+import { byBreakpoint } from "@/lib/shared/breakpoints";
+
+function useFileDownloadForPackage() {
+  const downloadPackage = useDownloadPackageFileByModule();
+  return useFileDownload(
+    (params: {
+      businessModule: ApiBusinessModule;
+      gdprId: string;
+      packageId: string;
+    }) =>
+      downloadPackage(params.businessModule, params.gdprId, params.packageId),
+  );
+}
+
+function useFileDownloadForBase(gdprProcedureId: string) {
+  const download = useDownloadBaseModulePackage();
+  return useFileDownload(() => download(gdprProcedureId));
+}
+
+export function GdprProcedureDownloads({
+  procedure,
+}: {
+  procedure: ApiCitizenUsersGdprProcedure;
+}) {
+  const response = useGetGdprDownloadPackagesInfo(
+    procedure.id,
+    procedure.hasDownloads,
+  );
+  const businessModuleDownload = useFileDownloadForPackage();
+  const baseDownload = useFileDownloadForBase(procedure.id);
+  const { t } = useTranslation("gdpr");
+
+  if (!procedure.hasDownloads) {
+    return (
+      <Typography level="title-md">
+        {t("gdpr_procedure_downloads.no_results")}
+      </Typography>
+    );
+  }
+
+  const downloadButtonLabel = t("gdpr_procedure_downloads.download");
+
+  return (
+    <List size="lg">
+      <DownloadPackage
+        label={t("gdpr_procedure_downloads.central_file_data")}
+        buttonLabel={downloadButtonLabel}
+        onDownload={() => baseDownload.download()}
+      />
+      {response
+        .filter((response) => response.data.downloadPackages.length > 0)
+        .flatMap((response) =>
+          response.data.downloadPackages.map((pkg) => (
+            <DownloadPackage
+              key={pkg.id}
+              buttonLabel={downloadButtonLabel}
+              label={t(
+                `translation:business_modules.${response.data.businessModule}`,
+              )}
+              onDownload={() =>
+                businessModuleDownload.download({
+                  businessModule: response.data.businessModule,
+                  gdprId: procedure.id,
+                  packageId: pkg.id,
+                })
+              }
+            />
+          )),
+        )}
+    </List>
+  );
+}
+
+function DownloadPackage({
+  label,
+  buttonLabel,
+  onDownload,
+}: {
+  label: string;
+  buttonLabel: string;
+  onDownload: () => void;
+}) {
+  return (
+    <StyledListItem>
+      <ListItemDecorator>
+        <FileIcon />
+      </ListItemDecorator>
+      <Stack
+        direction={byBreakpoint({ mobile: "column", desktop: "row" })}
+        gap="inherit"
+        flexWrap="wrap"
+        flex={1}
+        alignItems="center"
+      >
+        <Typography
+          level="title-md"
+          sx={{ flex: 1, hyphens: "auto", minWidth: "fit-content" }}
+        >
+          {label}
+        </Typography>
+        <Button
+          variant="outlined"
+          startDecorator={<DownloadIcon />}
+          sx={{ flex: 1, maxWidth: "15rem", hyphens: "auto" }}
+          onClick={onDownload}
+        >
+          {buttonLabel}
+        </Button>
+      </Stack>
+    </StyledListItem>
+  );
+}
+
+const StyledListItem = styled(ListItem)(({ theme }) => ({
+  backgroundColor: theme.palette.background.surface,
+  borderRadius: 10,
+  margin: theme.spacing(1),
+  padding: theme.spacing(3),
+  flexWrap: "wrap",
+}));
diff --git a/citizen-portal/src/lib/baseModule/components/gdpr/GdprProcedureList.tsx b/citizen-portal/src/lib/baseModule/components/gdpr/GdprProcedureList.tsx
new file mode 100644
index 000000000..d1cda6a83
--- /dev/null
+++ b/citizen-portal/src/lib/baseModule/components/gdpr/GdprProcedureList.tsx
@@ -0,0 +1,231 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import {
+  ApiCitizenUsersGdprProcedure,
+  ApiGdprProcedureStatus,
+  ApiGdprProcedureType,
+} from "@eshg/base-api";
+import { formatDate } from "@eshg/lib-portal/formatters/dateTime";
+import UnexpandedIcon from "@mui/icons-material/KeyboardArrowDownOutlined";
+import ExpandedIcon from "@mui/icons-material/KeyboardArrowUpOutlined";
+import {
+  Accordion,
+  AccordionDetails,
+  AccordionGroup,
+  AccordionSummary,
+  CircularProgress,
+  Sheet,
+  Stack,
+  Typography,
+  accordionSummaryClasses,
+  styled,
+} from "@mui/joy";
+import { Suspense, useState } from "react";
+import { isDefined } from "remeda";
+
+import { GdprProcedureDownloads } from "@/lib/baseModule/components/gdpr/GdprProcedureDownloads";
+import { GdprProcedureStatusChip } from "@/lib/baseModule/components/gdpr/GdprProcedureStatusChip";
+import { useTranslation } from "@/lib/i18n/client";
+import { byBreakpoint } from "@/lib/shared/breakpoints";
+
+function isDetailsAvailable(procedure: ApiCitizenUsersGdprProcedure) {
+  return (
+    procedure.status === ApiGdprProcedureStatus.Aborted ||
+    procedure.status === ApiGdprProcedureStatus.Closed
+  );
+}
+
+export function GdprProcedureList({
+  procedures,
+}: Readonly<{
+  procedures: ApiCitizenUsersGdprProcedure[];
+}>) {
+  const [focused, setFocused] = useState<string | undefined>();
+
+  return (
+    <Stack gap={2}>
+      <AccordionGroup disableDivider data-testid="gdpr-procedure-results">
+        {procedures.map((procedure) => (
+          <StyledAccordion
+            key={procedure.id}
+            variant="soft"
+            disabled={!isDetailsAvailable(procedure)}
+            expanded={focused === procedure.id}
+            onChange={(_, expanded) =>
+              setFocused(expanded ? procedure.id : undefined)
+            }
+          >
+            <AccordionSummary
+              slots={{
+                indicator: GdprSummaryIndicator,
+              }}
+              slotProps={{
+                indicator: {
+                  status: procedure.status,
+                  expanded: focused === procedure.id,
+                  enabled: isDetailsAvailable(procedure),
+                },
+              }}
+            >
+              <GdprProcedureSummary procedure={procedure} />
+            </AccordionSummary>
+            <AccordionDetails>
+              <GdprProcedureDetails
+                procedure={procedure}
+                expanded={focused === procedure.id}
+              />
+            </AccordionDetails>
+          </StyledAccordion>
+        ))}
+      </AccordionGroup>
+    </Stack>
+  );
+}
+
+function GdprSummaryIndicator({
+  enabled,
+  expanded,
+  status,
+}: {
+  enabled: boolean;
+  expanded: boolean;
+  status: ApiGdprProcedureStatus;
+}) {
+  return (
+    <Stack direction="row" gap={1} alignItems="center">
+      <GdprProcedureStatusChip status={status} />
+      {expanded ? (
+        <ExpandedIcon sx={{ opacity: enabled ? 1 : 0 }} />
+      ) : (
+        <UnexpandedIcon sx={{ opacity: enabled ? 1 : 0 }} />
+      )}
+    </Stack>
+  );
+}
+
+function GdprProcedureSummary({
+  procedure,
+}: Readonly<{
+  procedure: ApiCitizenUsersGdprProcedure;
+}>) {
+  const { t } = useTranslation("gdpr");
+  return (
+    <>
+      <Stack
+        direction={byBreakpoint({ mobile: "column", desktop: "row" })}
+        flex={1}
+      >
+        <Typography
+          level="title-md"
+          sx={{
+            flex: 1,
+            maxWidth: "15rem",
+          }}
+        >
+          {t(`gdpr_procedure_summary.type.${procedure.type}`)}
+        </Typography>
+        <Typography>{formatDate(procedure.createdAt)}</Typography>
+      </Stack>
+    </>
+  );
+}
+
+function GdprProcedureDetails({
+  procedure,
+  expanded,
+}: Readonly<{
+  procedure: ApiCitizenUsersGdprProcedure;
+  expanded: boolean;
+}>) {
+  const showDownloads =
+    expanded &&
+    procedure.hasDownloads &&
+    procedure.status === ApiGdprProcedureStatus.Closed;
+
+  const hasDescription =
+    procedure.status === ApiGdprProcedureStatus.Closed ||
+    procedure.status === ApiGdprProcedureStatus.Aborted;
+
+  const { t } = useTranslation("gdpr");
+
+  const isAccess = procedure.type === ApiGdprProcedureType.OfAccess;
+  const isErasure = procedure.type === ApiGdprProcedureType.ToErasure;
+
+  const descriptionKey = "gdpr_procedure_details.description";
+  const descriptionParts = [`${procedure.status}`];
+
+  if (isAccess) {
+    descriptionParts.push(`hasDownloads.${procedure.hasDownloads}`);
+  }
+  if (isErasure) {
+    descriptionParts.push("deleteHint");
+  }
+
+  const description = descriptionParts
+    .map((key) => t(`${descriptionKey}.${key}`))
+    .join(" ");
+
+  return (
+    <Stack gap={2} sx={{ paddingInline: 1 }}>
+      {hasDescription && (
+        <Typography
+          sx={{
+            textWrap: "pretty",
+            hyphens: "auto",
+            overflowWrap: "anywhere",
+          }}
+        >
+          {description}
+        </Typography>
+      )}
+
+      {isDefined(procedure.matterOfConcern) && (
+        <Stack gap={1}>
+          <Typography level="title-sm" noWrap>
+            {t("gdpr_procedure_fields.matter_of_concern")}
+          </Typography>
+          <Typography sx={{ textWrap: "pretty", hyphens: "auto" }}>
+            {procedure.matterOfConcern}
+          </Typography>
+        </Stack>
+      )}
+      <Suspense
+        fallback={
+          <Sheet>
+            <Stack alignItems="center" gap={1}>
+              <CircularProgress />
+              <Typography level="title-md">
+                {t("translation:common.loading")}
+              </Typography>
+            </Stack>
+          </Sheet>
+        }
+      >
+        {showDownloads && <GdprProcedureDownloads procedure={procedure} />}
+      </Suspense>
+    </Stack>
+  );
+}
+
+const StyledAccordion = styled(Accordion)(({ theme, disabled }) => ({
+  "--variant-plainDisabledColor": theme.palette.text.primary,
+  borderRadius: 10,
+  margin: theme.spacing(1),
+  [`& .${accordionSummaryClasses.button}`]: {
+    padding: theme.spacing(2),
+    borderRadius: 10,
+    alignItems: "start",
+    [`@media (width < ${theme.breakpoints.values.xs}px)`]: {
+      flexDirection: "column-reverse",
+      ["& > *:last-child"]: {
+        alignSelf: "flex-end",
+      },
+    },
+  },
+  [`& .${accordionSummaryClasses.indicator}`]: {
+    opacity: disabled ? 0 : 1,
+  },
+}));
diff --git a/citizen-portal/src/lib/baseModule/components/gdpr/GdprProcedureStatusChip.tsx b/citizen-portal/src/lib/baseModule/components/gdpr/GdprProcedureStatusChip.tsx
new file mode 100644
index 000000000..c3eac31e4
--- /dev/null
+++ b/citizen-portal/src/lib/baseModule/components/gdpr/GdprProcedureStatusChip.tsx
@@ -0,0 +1,30 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { ApiGdprProcedureStatus } from "@eshg/base-api";
+import { Chip, ChipProps } from "@mui/joy";
+
+import { useTranslation } from "@/lib/i18n/client";
+
+export function GdprProcedureStatusChip({
+  status,
+}: {
+  status: ApiGdprProcedureStatus;
+}) {
+  const { t } = useTranslation("gdpr");
+  return (
+    <Chip variant="solid" color={gdprProcedureStatusColor[status]}>
+      {t(`gdpr_procedure_summary.status.${status}`)}
+    </Chip>
+  );
+}
+
+const gdprProcedureStatusColor = {
+  [ApiGdprProcedureStatus.Draft]: "warning",
+  [ApiGdprProcedureStatus.Open]: "neutral",
+  [ApiGdprProcedureStatus.InProgress]: "primary",
+  [ApiGdprProcedureStatus.Closed]: "success",
+  [ApiGdprProcedureStatus.Aborted]: "danger",
+} as const satisfies Record<ApiGdprProcedureStatus, ChipProps["color"]>;
diff --git a/citizen-portal/src/lib/baseModule/components/gdpr/form/ConfirmStartGdprProcedureDialog.tsx b/citizen-portal/src/lib/baseModule/components/gdpr/form/ConfirmStartGdprProcedureDialog.tsx
index 7c2efcd84..9e780c001 100644
--- a/citizen-portal/src/lib/baseModule/components/gdpr/form/ConfirmStartGdprProcedureDialog.tsx
+++ b/citizen-portal/src/lib/baseModule/components/gdpr/form/ConfirmStartGdprProcedureDialog.tsx
@@ -74,14 +74,6 @@ export function ConfirmStartGdprProcedureDialog({
         <Typography>
           {t(`start_procedure_dialog.${type}.description`)}
         </Typography>
-        <Typography level="title-md">
-          {/* TODO: Load attributes with get /self */}
-          Max Mustermann
-          <br />
-          Hauptstraße 33, 54032 Köln
-          <br />
-          Deutschland
-        </Typography>
         <Stack alignSelf="end" gap={2} direction="row">
           <Button variant="outlined" onClick={handleClose}>
             {t("translation:common.cancel")}
diff --git a/citizen-portal/src/lib/baseModule/components/gdpr/form/GdprContactForm.tsx b/citizen-portal/src/lib/baseModule/components/gdpr/form/GdprContactForm.tsx
index 2ca84819c..2b90e5d00 100644
--- a/citizen-portal/src/lib/baseModule/components/gdpr/form/GdprContactForm.tsx
+++ b/citizen-portal/src/lib/baseModule/components/gdpr/form/GdprContactForm.tsx
@@ -103,6 +103,7 @@ export function GdprContactForm() {
                         paddingInline: "0.5rem",
                         whiteSpace: "preserve",
                         hyphens: "auto",
+                        overflowWrap: "anywhere",
                       }}
                     >
                       {values.content}
diff --git a/citizen-portal/src/lib/baseModule/components/gdpr/page/GdprRightsOverviewPage.tsx b/citizen-portal/src/lib/baseModule/components/gdpr/page/GdprRightsOverviewPage.tsx
index e8c4a1fc9..e82d04fc5 100644
--- a/citizen-portal/src/lib/baseModule/components/gdpr/page/GdprRightsOverviewPage.tsx
+++ b/citizen-portal/src/lib/baseModule/components/gdpr/page/GdprRightsOverviewPage.tsx
@@ -6,8 +6,11 @@
 import { ApiGdprProcedureType } from "@eshg/base-api";
 import { QueryBoundary } from "@eshg/lib-portal/components/boundaries/QueryBoundary";
 import { Button, Sheet, Typography } from "@mui/joy";
+import { useSuspenseQuery } from "@tanstack/react-query";
 import { useId, useState } from "react";
 
+import { useGetSelfGdprProceduresQuery } from "@/lib/baseModule/api/queries/gdpr";
+import { GdprProcedureList } from "@/lib/baseModule/components/gdpr/GdprProcedureList";
 import { ConfirmStartGdprProcedureDialog } from "@/lib/baseModule/components/gdpr/form/ConfirmStartGdprProcedureDialog";
 import { GdprObjectionFormDialog } from "@/lib/baseModule/components/gdpr/form/GdprObjectionFormDialog";
 import { UserType } from "@/lib/baseModule/components/layout/types";
@@ -20,12 +23,16 @@ import { PageLayout, PageTitle } from "@/lib/shared/components/layout/page";
 
 const gdprProcedureTypes = Object.values(ApiGdprProcedureType);
 
-export function GdprRightsOverview({ type }: { type: UserType }) {
+export function GdprRightsOverview({ userType }: { userType: UserType }) {
   const { t } = useTranslation();
   const [chosenProcedureType, setChosenProcedureType] = useState<
     ApiGdprProcedureType | undefined
   >();
 
+  const { data: procedures } = useSuspenseQuery(
+    useGetSelfGdprProceduresQuery(),
+  );
+
   function msg(
     type: ApiGdprProcedureType,
     key: "title" | "description" | "button",
@@ -39,9 +46,15 @@ export function GdprRightsOverview({ type }: { type: UserType }) {
         <PageTitle
           toolbar={<LogoutButton text={t("translation:common.leave")} />}
         >
-          {t("gdpr:overview.title")}
+          {t(`gdpr:overview.title.${userType}`)}
         </PageTitle>
 
+        {procedures.length > 0 && (
+          <ContentSheet missingTitle>
+            <GdprProcedureList procedures={procedures} />
+          </ContentSheet>
+        )}
+
         <ContentSheet missingTitle>
           <InfoSectionGrid>
             {gdprProcedureTypes.map((type) => (
@@ -51,7 +64,9 @@ export function GdprRightsOverview({ type }: { type: UserType }) {
                 buttonLabel={msg(type, "button")}
                 onClick={() => setChosenProcedureType(type)}
               >
-                {msg(type, "description")}
+                {t(
+                  `gdpr:overview.${type.toLowerCase()}.description.${userType}`,
+                )}
               </ActionTile>
             ))}
           </InfoSectionGrid>
@@ -65,7 +80,7 @@ export function GdprRightsOverview({ type }: { type: UserType }) {
 
           <ConfirmStartGdprProcedureDialog
             type={chosenProcedureType}
-            userType={type}
+            userType={userType}
             onClose={() => setChosenProcedureType(undefined)}
           />
         </QueryBoundary>
@@ -91,12 +106,21 @@ function ActionTile(props: ActionTileProps) {
         backgroundColor: theme.palette.background.level1,
         gap: theme.spacing(2),
         display: "grid",
+        height: "100%",
       })}
     >
       <Typography level="h2" id={id}>
         {props.title}
       </Typography>
-      <Typography>{props.children}</Typography>
+      <Typography
+        sx={{
+          textWrap: "pretty",
+          hyphens: "auto",
+          overflowWrap: "anywhere",
+        }}
+      >
+        {props.children}
+      </Typography>
       <Button
         onClick={props.onClick}
         sx={{
diff --git a/citizen-portal/src/lib/baseModule/components/layout/AppLayout.tsx b/citizen-portal/src/lib/baseModule/components/layout/AppLayout.tsx
index 7dcb501c6..a0044bc61 100644
--- a/citizen-portal/src/lib/baseModule/components/layout/AppLayout.tsx
+++ b/citizen-portal/src/lib/baseModule/components/layout/AppLayout.tsx
@@ -34,7 +34,7 @@ export function AppLayout({
   return (
     <I18nProvider lang={lang}>
       <ThemeProvider>
-        <Box component="html" sx={{ height: "100%" }}>
+        <Box component="html" sx={{ height: "100%" }} lang={lang}>
           <Box
             component="body"
             sx={{
diff --git a/citizen-portal/src/lib/baseModule/locales/de/gdpr.json b/citizen-portal/src/lib/baseModule/locales/de/gdpr.json
index 4f3661529..f50aca494 100644
--- a/citizen-portal/src/lib/baseModule/locales/de/gdpr.json
+++ b/citizen-portal/src/lib/baseModule/locales/de/gdpr.json
@@ -1,40 +1,55 @@
 {
   "overview": {
-    "title": "Datenschutzrechte gemäß DSGVO",
+    "title": {
+      "person": "Datenschutzrechte gemäß DSGVO",
+      "organization": "Datenschutzrechte"
+    },
     "right_of_access": {
       "title": "Datenauskunft",
-      "description": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor Aenean massa.",
-      "button": "Datenauskunft beantragen"
+      "description": {
+        "person": "Gemäß Art. 15 DSGVO haben Sie das Recht, Auskunft über Ihre gespeicherten personenbezogenen Daten zu erhalten. Wir stellen diese Informationen in einem automatisierten Prozess für Sie bereit, der einige Zeit in Anspruch nehmen kann.",
+        "organization": "Aus Transparenzgründen bieten wir Unternehmen das Recht, Auskunft über Ihre gespeicherten personenbezogenen Daten zu erhalten. Wir stellen diese Informationen in einem automatisierten Prozess für Sie bereit, der einige Zeit in Anspruch nehmen kann."
+      },
+      "button": "Datenauskunft anfragen"
     },
     "right_to_erasure": {
       "title": "Löschanfrage",
-      "description": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor Aenean massa.",
+      "description": {
+        "person": "Gemäß Art. 17 DSGVO haben Sie das Recht, die Löschung Ihrer gespeicherten personenbezogenen Daten zu verlangen. Wir bearbeiten diese Anfrage in einem automatisierten Prozess, der einige Zeit in Anspruch nehmen kann.",
+        "organization": "Aus Transparenzgründen bieten wir Unternehmen das Recht, die Löschung Ihrer gespeicherten personenbezogenen Daten zu verlangen. Wir bearbeiten diese Anfrage in einem automatisierten Prozess, der einige Zeit in Anspruch nehmen kann."
+      },
       "button": "Daten löschen"
     },
     "right_to_object": {
       "title": "Datenverarbeitung widersprechen",
-      "description": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor Aenean massa.",
-      "button": "Widerspruch einreichen"
+      "description": {
+        "person": "Gemäß Art. 21 DSGVO haben Sie das Recht, Widerspruch gegen die Verarbeitung Ihrer personenbezogenen Daten einzulegen. Darüber hinaus können Sie auf diesem Weg auch eine Einschränkung der Verarbeitung gemäß Art. 18 DSGVO beantragen. Nutzen Sie bitte das nachfolgende Formular, um Ihr Anliegen entsprechend zu erläutern.",
+        "organization": "Aus Transparenzgründen bieten wir Unternehmen das Recht, Widerspruch gegen die Verarbeitung Ihrer personenbezogenen Daten einzulegen. Nutzen Sie bitte das nachfolgende Formular, um Ihr Anliegen entsprechend zu erläutern."
+      },
+      "button": "Widerspruch einlegen"
     },
     "right_to_rectification": {
       "title": "Datenkorrektur",
-      "description": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor Aenean massa.",
+      "description": {
+        "person": "Wir legen großen Wert auf die Korrektheit Ihrer Daten und wahren Ihr Recht auf Berichtigung gemäß Art. 16 DSGVO. Bitte benachrichtigen Sie uns, wenn Ihre Daten fehlerhaft sind oder geändert werden müssen.",
+        "organization": "Wir legen großen Wert auf die Korrektheit Ihrer Daten. Bitte benachrichtigen Sie uns, wenn Ihre Daten fehlerhaft sind oder geändert werden müssen."
+      },
       "button": "Daten korrigieren"
     }
   },
   "entrypoint": {
-    "title": "Selbstauskunft personenbezogene Daten",
+    "title": "Datenschutzrechte in GA-Lotse",
     "intro_section": {
       "title": "Datenschutzrechte",
-      "description": "Hier wird ein Intro-Text zu der Datenschutzrichtlinien eingefügt. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes.Lorem Ipsum ist ein einfacher Demo-Text für die Print- und Schriftindustrie. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis nato."
+      "description": "Als Gesundheitsamt bieten wir Ihnen die Möglichkeit, Auskunft über Ihre gespeicherten Daten zu erhalten, diese zu korrigieren, zu löschen oder der Verarbeitung zu widersprechen. Weitere Details zu Ihren Rechten finden Sie in unserer <InternalLink href=\"/datenschutz\">Datenschutzerklärung</InternalLink>."
     },
     "your_rights_section": {
-      "description": "Hier können Sie ganz einfach Ihre gespeicherten personenbezogenen Daten anfordern – entweder online oder, noch besser, persönlich vor Ort beim Gesundheitsamt. Wir freuen uns, Sie dort begrüßen zu dürfen und helfen Ihnen gerne bei der Verifizierung.",
+      "description": "Sie können Anliegen bezüglich Ihrer gespeicherten Daten sowohl online als auch persönlich vor Ort im Gesundheitsamt vorbringen und klären. Wir freuen uns darauf, Sie dort begrüßen zu dürfen und unterstützen Sie gerne bei Ihrem Anliegen.",
       "online": {
         "title": "Online",
         "internet": {
           "title": "Internet",
-          "description": "Sie können sich online als Privatperson oder Unternehmen Authentifizieren."
+          "description": "Der digitale Prozess erfordert eine eindeutige Identifikation Ihrer Person bzw. Ihres Unternehmens, um sicherzustellen, dass ausschließlich Sie auf Ihre Daten zugreifen können.\n\nDaher ist für Privatpersonen eine Authentifizierung mit <BundIdLink href=\"\">BundID</BundIdLink> bzw. für Unternehmen eine Authentifizierung mit <MukLink href=\"\">Mein Unternehmenskonto</MukLink> notwendig.\n\nBitte beachten Sie, dass nach dem erstmaligen Login einige Services von GA-Lotse noch nicht unmittelbar zur Verfügung stehen."
         },
         "buttons": {
           "person": "Als Privatperson",
@@ -46,9 +61,15 @@
       }
     }
   },
+  "profile": {
+    "unlinked": {
+      "title": "Ihre Daten",
+      "description": "Ihre Profildaten stehen Ihnen aktuell noch nicht zur Verfügung. Sie können eine Datenauskunft beantragen, um Einsicht in Ihre uns vorliegenden Daten zu erlangen."
+    }
+  },
   "contact_form": {
     "title": "Informationen korrigieren",
-    "description": "Sehen Sie einen Fehler in Ihren Informationen?\nHier können Sie mit uns Kontakt aufnehmen, um Ihre Informationen zu korrigieren.",
+    "description": "Wir legen großen Wert auf die Korrektheit Ihrer Daten. Falls Ihre Daten Fehler enthalten oder Änderungen notwendig sind, bitten wir Sie, uns diese über das Kontaktformular mitzuteilen.",
     "success": "Ihre Anfrage wurde empfangen.",
     "open": "Kontaktieren",
     "input_label": "Ihre Nachricht",
@@ -61,12 +82,12 @@
   "start_procedure_dialog": {
     "RIGHT_OF_ACCESS": {
       "title": "Datenauskunft",
-      "description": "Wir leiten einen Prozess zur Abfrage folgender Daten ein:",
+      "description": "Wir leiten einen Prozess zur Abfrage Ihrer Daten ein.",
       "submit": "Datenauskunft beantragen"
     },
     "RIGHT_TO_ERASURE": {
       "title": "Löschanfrage",
-      "description": "Diese Aktion kann nicht rückgängig gemacht werden. Wir leiten einen Prozess zur Löschung folgender Daten ein:",
+      "description": "Diese Aktion kann nicht rückgängig gemacht werden. Wir leiten einen Prozess zur Löschung Ihrer Daten ein.",
       "submit": "Löschung anfragen"
     },
     "RIGHT_TO_OBJECT": {
@@ -84,7 +105,41 @@
   "confirmation": {
     "RIGHT_OF_ACCESS": "Datenauskunft erfolgreich beantragt.",
     "RIGHT_TO_ERASURE": "Löschauftrag erfolgreich gesendet.",
-    "RIGHT_TO_OBJECT": "Daten widerspruch erfolgreich gesendet.",
+    "RIGHT_TO_OBJECT": "Widerspruch erfolgreich gesendet.",
     "RIGHT_TO_RECTIFICATION": "Datenkorrektur erfolgreich gesendet."
+  },
+  "gdpr_procedure_fields": {
+    "matter_of_concern": "Anliegen"
+  },
+  "gdpr_procedure_summary": {
+    "type": {
+      "RIGHT_OF_ACCESS": "Datenauskunft",
+      "RIGHT_TO_ERASURE": "Löschanfrage",
+      "RIGHT_TO_OBJECT": "Widerspruch",
+      "RIGHT_TO_RECTIFICATION": "Datenkorrektur"
+    },
+    "status": {
+      "DRAFT": "Gesendet",
+      "OPEN": "Angekommen",
+      "IN_PROGRESS": "In Bearbeitung",
+      "ABORTED": "Abgelehnt",
+      "CLOSED": "Abgeschlossen"
+    }
+  },
+  "gdpr_procedure_details": {
+    "description": {
+      "CLOSED": "Ihre Anfrage wurde erfolgreich bearbeitet.",
+      "ABORTED": "Ihre Anfrage wurde abgebrochen. Bitte kontaktieren Sie uns persönlich zur Wahrnehmung Ihrer Rechte.",
+      "deleteHint": "Das Löschen der betroffenen Daten kann bis zu 24 Stunden benötigen.",
+      "hasDownloads": {
+        "true": "Ihnen stehen folgende Datenpakete zum Download zur Verfügung.",
+        "false": "Es gibt keine Daten über Sie, die wir Ihnen zur Verfügung stellen können."
+      }
+    }
+  },
+  "gdpr_procedure_downloads": {
+    "no_results": "Keine Daten vorhanden.",
+    "central_file_data": "Referenzdaten",
+    "download": "Herunterladen"
   }
 }
diff --git a/citizen-portal/src/lib/baseModule/locales/de/login.json b/citizen-portal/src/lib/baseModule/locales/de/login.json
index fecc7fbd4..283d6abb8 100644
--- a/citizen-portal/src/lib/baseModule/locales/de/login.json
+++ b/citizen-portal/src/lib/baseModule/locales/de/login.json
@@ -2,13 +2,13 @@
   "login_dialog": {
     "person": {
       "title": "Verlassen unserer Seite",
-      "description": "Sie verlassen jetzt unsere Seite und werden auf die BundID-Seite weitergeleitet. Bitte loggen Sie sich dort mit Ihrem BundID-Konto ein, um Ihre Rechte weiter wahrnehmen zu können.",
-      "submit": "Login mit BundID"
+      "description": "Sie verlassen jetzt die GA-Lotse Webseite und werden zum BundID-Portal weitergeleitet. Bitte melden Sie sich dort mit Ihrem BundID-Konto an, um anschließend Ihr Anliegen weiter zu bearbeiten.",
+      "submit": "Zu BundID wechseln"
     },
     "organization": {
       "title": "Verlassen unserer Seite",
-      "description": "Sie verlassen jetzt unsere Seite und werden auf die Mein Unternehmenskonto-Seite weitergeleitet. Bitte loggen Sie sich dort mit Ihren ELSTER-Daten ein, um Ihre Rechte weiter wahrnehmen zu können.",
-      "submit": "Login mit Mein Unternehmenskonto"
+      "description": "Sie verlassen jetzt die GA-Lotse Webseite und werden zum <Quote>„Mein Unternehmenskonto“-Portal</Quote> weitergeleitet. Bitte melden Sie sich dort mit Ihrem <Quote>„Mein Unternehmenskonto“</Quote> an, um anschließend Ihr Anliegen weiter zu bearbeiten.",
+      "submit": "Zu Mein Unternehmenskonto wechseln"
     }
   }
 }
diff --git a/citizen-portal/src/lib/baseModule/locales/de/translation.json b/citizen-portal/src/lib/baseModule/locales/de/translation.json
index 2e2b87867..6299d5f42 100644
--- a/citizen-portal/src/lib/baseModule/locales/de/translation.json
+++ b/citizen-portal/src/lib/baseModule/locales/de/translation.json
@@ -16,6 +16,16 @@
   "site_keywords": "Services, Dienstleistungen, Einschulungsuntersuchung, Reisemedizinische Beratung, Amtsärztlicher Dienst, GA-Lotse, Galotse",
   "health_department_title": "Gesundheitsamt",
   "most_searched_services_title": "Meistgesuchte Services",
+  "business_modules": {
+    "SCHOOL_ENTRY": "Einschulungsuntersuchung",
+    "DENTAL": "Zahnärztlicher Dienst",
+    "INSPECTION": "Begehung",
+    "MEASLES_PROTECTION": "Masernschutz",
+    "MEDICAL_REGISTRY": "Medizinalaufsicht",
+    "OFFICIAL_MEDICAL_SERVICE": "Amtsärztlicher Dienst",
+    "TRAVEL_MEDICINE": "Reisemedizinische Beratung",
+    "STI_PROTECTION": "HIV-STI Beratung"
+  },
   "common": {
     "email": "E-Mail",
     "phone": "Telefon",
@@ -41,6 +51,7 @@
     "person_one": "Person",
     "person_other": "Personen",
     "page_loading": "Seite wird geladen…",
+    "loading": "Wird geladen...",
     "leave": "Mein Bereich verlassen"
   },
   "gender": {
diff --git a/citizen-portal/src/lib/baseModule/locales/en/gdpr.json b/citizen-portal/src/lib/baseModule/locales/en/gdpr.json
index 34393cd21..1bacbeaf1 100644
--- a/citizen-portal/src/lib/baseModule/locales/en/gdpr.json
+++ b/citizen-portal/src/lib/baseModule/locales/en/gdpr.json
@@ -1,40 +1,55 @@
 {
   "overview": {
-    "title": "Rights in accordance with GDPR",
+    "title": {
+      "person": "Rights in accordance with GDPR",
+      "organization": "Data protection rights"
+    },
     "right_of_access": {
       "title": "Right of Access",
-      "description": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor Aenean massa.",
-      "button": "Request your data"
+      "description": {
+        "person": "According to Article 15 GDPR, you have the right to access your stored personal data. We provide this information to you through an automated process, which may take some time.",
+        "organization": "For reasons of transparency, we offer companies the right to access your stored personal data. We provide this information to you through an automated process, which may take some time."
+      },
+      "button": "Request data"
     },
     "right_to_erasure": {
       "title": "Right to Erasure",
-      "description": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor Aenean massa.",
-      "button": "Delete your data"
+      "description": {
+        "person": "According to Article 17 GDPR, you have the right to request the deletion of your stored personal data. We process this request through an automated process, which may take some time.",
+        "organization": "For reasons of transparency, we offer companies the right to request the deletion of your stored personal data. We process this request through an automated process, which may take some time."
+      },
+      "button": "Delete data"
     },
     "right_to_object": {
       "title": "Right to Object",
-      "description": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor Aenean massa.",
-      "button": "Object to proceedings"
+      "description": {
+        "person": "According to Article 21 GDPR, you have the right to object to the processing of your personal data. Additionally, you can use this method to request a restriction of processing according to Article 18 GDPR. Please use the form below to explain your concern.",
+        "organization": "For reasons of transparency, we offer companies the right to object to the processing of your personal data.Please use the form below to explain your concern."
+      },
+      "button": "Object to processing"
     },
     "right_to_rectification": {
       "title": "Right to Rectification",
-      "description": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor Aenean massa.",
+      "description": {
+        "person": "We place great importance on the accuracy of your data and uphold your right to rectification in accordance with Article 16 GDPR. If your data contains errors or requires changes, please inform us about it.",
+        "organization": "We place great importance on the accuracy of your data. If your data contains errors or requires changes, please inform us about it."
+      },
       "button": "Request correction"
     }
   },
   "entrypoint": {
-    "title": "Self-Disclosure Personal Data",
+    "title": "Data protection rights in GA-Lotse",
     "intro_section": {
       "title": "Data Protection Rights",
-      "description": "This section contains an introductory text about the privacy policy. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes. Lorem Ipsum is a simple demo text for the print and typography industry. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis nato."
+      "description": "As a public health department, we offer you the opportunity to obtain information about your stored data, correct it, delete it, or object to its processing. For more details about your rights, please read our <InternalLink href=\"/datenschutz\">privacy policy</InternalLink>."
     },
     "your_rights_section": {
-      "description": "Here you can easily request your stored personal data – either online or, even better, in person at the public health office. We look forward to welcoming you there and are happy to assist you with the verification process.",
+      "description": "You can address concerns regarding your stored data both online and in person at the public health department. We look forward to welcoming you there and are happy to assist you with your concerns.",
       "online": {
         "title": "Online",
         "internet": {
           "title": "Internet",
-          "description": "You can authenticate yourself online as an individual or a company."
+          "description": "The digital process requires a clear identification of your person or your company to ensure that only you can access your data.\n\nTherefore, private individuals need to verify their identity with <BundIdLink href=\"#\">BundID</BundIdLink>, while companies need to verify their identity with <MukLink href=\"#\">Mein Unternehmenskonto</MukLink>.\n\nPlease note that some services of GA-Lotse may not be immediately available after the initial login."
         },
         "buttons": {
           "person": "As an Individual",
@@ -46,9 +61,15 @@
       }
     }
   },
+  "profile": {
+    "unlinked": {
+      "title": "Your data",
+      "description": "Your profile data is currently not available. You can request a data report to view the data we have on file for you."
+    }
+  },
   "contact_form": {
     "title": "Correcting information",
-    "description": "Did you spot any errors in your information?\nYou can contact us to correct any mistakes.",
+    "description": "We place great importance on the accuracy of your data. If your stored data contains errors or needs to be updated, please inform us using the contact form.",
     "success": "Your request has been submitted.",
     "open": "Contact",
     "input_label": "Your request",
@@ -60,31 +81,65 @@
   },
   "start_procedure_dialog": {
     "RIGHT_OF_ACCESS": {
-      "title": "Datenauskunft",
-      "description": "Wir leiten einen Prozess zur Abfrage folgender Daten ein:",
-      "submit": "Datenauskunft beantragen"
+      "title": "Request data",
+      "description": "We are initiating an automated process to query your data.",
+      "submit": "Start data inquiry"
     },
     "RIGHT_TO_ERASURE": {
-      "title": "Löschanfrage",
-      "description": "Diese Aktion kann nicht rückgängig gemacht werden. Wir leiten einen Prozess zur Löschung folgender Daten ein:",
-      "submit": "Löschung anfragen"
+      "title": "Delete data",
+      "description": "This action cannot be undone. We are initiating an automated process to delete your data.",
+      "submit": "Start erasure process"
     },
     "RIGHT_TO_OBJECT": {
-      "title": "Datenverarbeitung widersprechen",
-      "description": "Bitte nennen Sie uns ihr Anliegen des Widerspruchs.",
+      "title": "Object to processing",
+      "description": "Please explain your objection.",
       "matterOfConcern": "Matter of concern",
-      "submit": "Widerspruch einreichen"
+      "submit": "Send objection"
     },
     "RIGHT_TO_RECTIFICATION": {
-      "title": "Datenkorrektur",
-      "description": "Sie werden auf Ihr Profil weitergeleitet. Dort können Sie eine Korrektur beantragen.",
-      "submit": "Zum Profil"
+      "title": "Request correction",
+      "description": "Your are being redirected to your profil page. On this page you can open the contact form to request a correction of your data.",
+      "submit": "Open profile"
     }
   },
   "confirmation": {
-    "RIGHT_OF_ACCESS": "Datenauskunft erfolgreich beantragt.",
-    "RIGHT_TO_ERASURE": "Löschauftrag erfolgreich gesendet.",
-    "RIGHT_TO_OBJECT": "Daten widerspruch erfolgreich gesendet.",
-    "RIGHT_TO_RECTIFICATION": "Datenkorrektur erfolgreich gesendet."
+    "RIGHT_OF_ACCESS": "Data request submitted.",
+    "RIGHT_TO_ERASURE": "Deletion request submitted.",
+    "RIGHT_TO_OBJECT": "Objection request submitted.",
+    "RIGHT_TO_RECTIFICATION": "Correction request submitted."
+  },
+  "gdpr_procedure_fields": {
+    "matter_of_concern": "Matter of concern"
+  },
+  "gdpr_procedure_summary": {
+    "type": {
+      "RIGHT_OF_ACCESS": "Data request",
+      "RIGHT_TO_ERASURE": "Deletion request",
+      "RIGHT_TO_OBJECT": "Objection request",
+      "RIGHT_TO_RECTIFICATION": "Correction request"
+    },
+    "status": {
+      "DRAFT": "Sent",
+      "OPEN": "Arrived",
+      "IN_PROGRESS": "In progress",
+      "ABORTED": "Rejected",
+      "CLOSED": "Completed"
+    }
+  },
+  "gdpr_procedure_details": {
+    "description": {
+      "CLOSED": "Your request has been processed successfully.",
+      "ABORTED": "Your request was rejected. Please contact us directly to fulfill your rights.",
+      "deleteHint": "The deletion process may take up to 24 hours.",
+      "hasDownloads": {
+        "true": "We have the following data packages available for download.",
+        "false": "We do not have any data available to you."
+      }
+    }
+  },
+  "gdpr_procedure_downloads": {
+    "no_results": "We currently have no available data to show you.",
+    "central_file_data": "Reference data",
+    "download": "Download"
   }
 }
diff --git a/citizen-portal/src/lib/baseModule/locales/en/login.json b/citizen-portal/src/lib/baseModule/locales/en/login.json
index b9f6ee687..28b83c429 100644
--- a/citizen-portal/src/lib/baseModule/locales/en/login.json
+++ b/citizen-portal/src/lib/baseModule/locales/en/login.json
@@ -2,13 +2,13 @@
   "login_dialog": {
     "person": {
       "title": "You are being redirected",
-      "description": "You will be redirected to the official BundID portal. Please login with your BundID account to authenticate your identity and make use of your rights.",
-      "submit": "Login with BundID"
+      "description": "You are now leaving the GA-Lotse website and will be redirected to the BundID portal. Please log in with your BundID account there to continue processing your request.",
+      "submit": "Proceed to BundID"
     },
     "organization": {
       "title": "You are being redirected",
-      "description": "You will be redirected to the official MeinUnternehmenskonto portal. Please login with your MeinUnternehmenskonto account to authenticate your identity and make use of your rights.",
-      "submit": "Login with Mein Unternehmenskonto"
+      "description": "You are now leaving the GA-Lotse website and will be redirected to the <Quote>\"Mein Unternehmenskonto\"</Quote> portal. Please log in there with your <Quote>\"Mein Unternehmenskonto\"</Quote> account to continue processing your request.",
+      "submit": "Proceed to Mein Unternehmenskonto"
     }
   }
 }
diff --git a/citizen-portal/src/lib/baseModule/locales/en/translation.json b/citizen-portal/src/lib/baseModule/locales/en/translation.json
index 6c3a027e5..039db31d3 100644
--- a/citizen-portal/src/lib/baseModule/locales/en/translation.json
+++ b/citizen-portal/src/lib/baseModule/locales/en/translation.json
@@ -15,7 +15,17 @@
   "site_description": "Extensive services for the protection and restoration of health",
   "site_keywords": "Services, School entry examination, Travel medicine advice, Official medical service, GA-Lotse, Galotse",
   "health_department_title": "Health Department",
-  "most_searched_services_title": "Most Search for Services",
+  "most_searched_services_title": "Popular services",
+  "business_modules": {
+    "SCHOOL_ENTRY": "School entry examination",
+    "DENTAL": "Dental service",
+    "INSPECTION": "Inspection",
+    "MEASLES_PROTECTION": "Measles protection",
+    "MEDICAL_REGISTRY": "Medical registry",
+    "OFFICIAL_MEDICAL_SERVICE": "Official medical service",
+    "TRAVEL_MEDICINE": "Travel medicine advice",
+    "STI_PROTECTION": "HIV/STI counseling service"
+  },
   "common": {
     "email": "E-Mail",
     "phone": "Phone",
@@ -41,6 +51,7 @@
     "person_one": "Person",
     "person_other": "Persons",
     "page_loading": "Page loading…",
+    "loading": "Loading...",
     "leave": "Leave My Area"
   },
   "gender": {
diff --git a/citizen-portal/src/lib/businessModules/medicalRegistry/locales/de/overview.json b/citizen-portal/src/lib/businessModules/medicalRegistry/locales/de/overview.json
index c69eb2699..f706ee811 100644
--- a/citizen-portal/src/lib/businessModules/medicalRegistry/locales/de/overview.json
+++ b/citizen-portal/src/lib/businessModules/medicalRegistry/locales/de/overview.json
@@ -6,7 +6,7 @@
     "requiredFieldsHint": "Alle mit * gekennzeichneten Pflichtfelder müssen ausgefüllt sein, um das Online-Formular abschicken zu können."
   },
   "sidebar": {
-    "title": "Möchten Sie einen Gesundheitsberuf melden?",
+    "title": "Möchten Sie sich in der Berufskartei für Gesundheitsberufe eintragen?",
     "content": "Verwenden Sie das Meldeformular, um einen Eintrag anzulegen oder zu aktualisieren.",
     "registrationForm": "Zum Meldeformular"
   }
diff --git a/citizen-portal/src/lib/businessModules/medicalRegistry/locales/en/overview.json b/citizen-portal/src/lib/businessModules/medicalRegistry/locales/en/overview.json
index dfdbe06ca..67c98977d 100644
--- a/citizen-portal/src/lib/businessModules/medicalRegistry/locales/en/overview.json
+++ b/citizen-portal/src/lib/businessModules/medicalRegistry/locales/en/overview.json
@@ -6,7 +6,7 @@
     "requiredFieldsHint": "All mandatory fields indicated by an asterisk (*) must be filled out to submit the online form."
   },
   "sidebar": {
-    "title": "Would you like to register a healthcare profession?",
+    "title": "Would you like to register in the professional registry for healthcare professions?",
     "content": "Use the registration form to create a new entry or update an existing one.",
     "registrationForm": "To the registration form"
   }
diff --git a/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/ProfessionalRegistrationSidePanel.tsx b/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/ProfessionalRegistrationSidePanel.tsx
index 91bb4d9f9..7760da98c 100644
--- a/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/ProfessionalRegistrationSidePanel.tsx
+++ b/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/ProfessionalRegistrationSidePanel.tsx
@@ -6,6 +6,7 @@
 import { useFileDownload } from "@eshg/lib-portal/api/files/download";
 import {
   DataPrivacyFormValues,
+  MedicalRegistryCreateProcedureFormValues,
   WrittenConfirmationFormValues,
 } from "@eshg/lib-portal/businessModules/medicalRegistry/medicalRegistryCreateProcedureFormValues";
 import { ButtonLink } from "@eshg/lib-portal/components/buttons/ButtonLink";
@@ -14,7 +15,7 @@ import { BooleanRadioField } from "@eshg/lib-portal/components/formFields/Boolea
 import { InternalLinkButton } from "@eshg/lib-portal/components/navigation/InternalLinkButton";
 import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
 import { Button, Typography } from "@mui/joy";
-import { useField, useFormikContext } from "formik";
+import { useFormikContext } from "formik";
 import { isEmpty } from "remeda";
 
 import { useMedicalRegistryPublicCitizenApi } from "@/lib/businessModules/medicalRegistry/api/clients";
@@ -29,7 +30,7 @@ export function ProfessionalRegistrationSidePanel() {
   const { t } = useTranslation([
     "medicalRegistry/professionalRegistrationForm",
   ]);
-  const { handleSubmit, validateForm, setTouched, touched } =
+  const { values, handleSubmit, validateForm, setTouched, touched } =
     useFormikContext();
   const { currentStep, totalSteps, goForward, goBack } = useMultiStepForm();
   const citizenRoutes = useCitizenRoutes();
@@ -39,12 +40,23 @@ export function ProfessionalRegistrationSidePanel() {
       "writtenConfirmationForm",
     );
 
-  const [requestForWrittenConfirmation] = useField<boolean>(
-    writtenConfirmationForm("requestForWrittenConfirmation"),
-  );
+  const requestForWrittenConfirmation = (
+    values as MedicalRegistryCreateProcedureFormValues
+  ).writtenConfirmationForm.requestForWrittenConfirmation;
 
   const snackbar = useSnackbar();
 
+  async function handleFormWithSnackbar(handleFunction: () => void) {
+    const errors = await validateForm();
+    await setTouched({ ...touched, ...errors });
+
+    if (isEmpty(errors)) {
+      handleFunction();
+    } else {
+      snackbar.error(t("snackbar.errors"), { manualClose: false });
+    }
+  }
+
   return (
     <>
       {currentStep === totalSteps && (
@@ -56,7 +68,7 @@ export function ProfessionalRegistrationSidePanel() {
             name={writtenConfirmationForm("requestForWrittenConfirmation")}
             label={t("stepFour.sidePanel.label.writtenConfirmation")}
           />
-          {requestForWrittenConfirmation.value && (
+          {requestForWrittenConfirmation && (
             <>
               <CheckboxField
                 name={writtenConfirmationForm("confirmationFee")}
@@ -75,18 +87,7 @@ export function ProfessionalRegistrationSidePanel() {
 
       <ContentSheet>
         {currentStep < totalSteps && (
-          <Button
-            onClick={async () => {
-              const errors = await validateForm();
-              await setTouched({ ...touched, ...errors });
-
-              if (isEmpty(errors)) {
-                goForward();
-              } else {
-                snackbar.error(t("snackbar.errors"));
-              }
-            }}
-          >
+          <Button onClick={() => handleFormWithSnackbar(goForward)}>
             {t("navigation.continue")}
           </Button>
         )}
@@ -96,7 +97,7 @@ export function ProfessionalRegistrationSidePanel() {
               {t("stepFour.sidePanel.completion")}
             </Typography>
             <PrivacyPolicyConfirmationForm />
-            <Button onClick={() => handleSubmit()}>
+            <Button onClick={() => handleFormWithSnackbar(handleSubmit)}>
               {t("navigation.submit")}
             </Button>
           </>
diff --git a/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/ProfessionalRegistrationStepper.tsx b/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/ProfessionalRegistrationStepper.tsx
index 5787c26a0..6c39ef930 100644
--- a/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/ProfessionalRegistrationStepper.tsx
+++ b/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/ProfessionalRegistrationStepper.tsx
@@ -4,18 +4,16 @@
  */
 
 import { ApiTypeOfChange } from "@eshg/citizen-portal-api/medicalRegistry";
-import {
-  GeneralInformationFormValues,
-  MedicalRegistryCreateProcedureFormValues,
-} from "@eshg/lib-portal/businessModules/medicalRegistry/medicalRegistryCreateProcedureFormValues";
+import { MedicalRegistryCreateProcedureFormValues } from "@eshg/lib-portal/businessModules/medicalRegistry/medicalRegistryCreateProcedureFormValues";
 import { shouldEnable } from "@eshg/lib-portal/businessModules/medicalRegistry/sections";
 import { FormPlus } from "@eshg/lib-portal/components/form/FormPlus";
 import {
   MultiStepForm,
   StepFactory,
 } from "@eshg/lib-portal/components/form/MultiStepForm";
+import { OptionalFieldValue } from "@eshg/lib-portal/types/form";
 import { Typography } from "@mui/joy";
-import { FormikProps, useField } from "formik";
+import { FormikProps, useFormikContext } from "formik";
 
 import { theme } from "@/lib/baseModule/theme/theme";
 import { ProfessionalRegistrationSidePanel } from "@/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/ProfessionalRegistrationSidePanel";
@@ -24,7 +22,6 @@ import { ProfessionalRegistrationFormStepThree } from "@/lib/businessModules/med
 import { useTranslation } from "@/lib/i18n/client";
 import { TwoColumnGrid } from "@/lib/shared/components/layout/grid";
 import { PageTitle } from "@/lib/shared/components/layout/page";
-import { createFieldNameMapper } from "@/lib/shared/helpers/form";
 
 import { ProfessionalRegistrationFormStepOne } from "./steps/ProfessionalRegistrationFormStepOne";
 import { ProfessionalRegistrationFormStepTwo } from "./steps/ProfessionalRegistrationFormStepTwo";
@@ -36,14 +33,9 @@ interface ProfessionalRegistrationStepperProps {
 export function ProfessionalRegistrationStepper(
   props: ProfessionalRegistrationStepperProps,
 ) {
-  const generalInformationForm =
-    createFieldNameMapper<GeneralInformationFormValues>(
-      "generalInformationForm",
-    );
-
-  const [changeType] = useField<ApiTypeOfChange>(
-    generalInformationForm("changeType"),
-  );
+  const values = useFormikContext()
+    .values as MedicalRegistryCreateProcedureFormValues;
+  const changeType = values.generalInformationForm.changeType;
 
   const { t } = useTranslation([
     "medicalRegistry/professionalRegistrationForm",
@@ -51,7 +43,7 @@ export function ProfessionalRegistrationStepper(
 
   return (
     <MultiStepForm<MedicalRegistryCreateProcedureFormValues>
-      steps={steps(changeType.value)}
+      steps={steps(changeType)}
     >
       {({ Outlet, currentStep, totalSteps }) => (
         <>
@@ -77,7 +69,7 @@ export function ProfessionalRegistrationStepper(
   );
 }
 
-function steps(changeType: ApiTypeOfChange) {
+function steps(changeType: OptionalFieldValue<ApiTypeOfChange>) {
   const steps: StepFactory<MedicalRegistryCreateProcedureFormValues>[] = [
     ProfessionalRegistrationFormStepOne,
   ];
diff --git a/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/steps/ProfessionalRegistrationFormStepFour.tsx b/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/steps/ProfessionalRegistrationFormStepFour.tsx
index 206ef2c34..51316bd2c 100644
--- a/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/steps/ProfessionalRegistrationFormStepFour.tsx
+++ b/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/steps/ProfessionalRegistrationFormStepFour.tsx
@@ -9,8 +9,7 @@ import {
 } from "@eshg/citizen-portal-api/medicalRegistry";
 import {
   EmployeeInformationFormValues,
-  GeneralInformationFormValues,
-  PersonalInformationFormValues,
+  MedicalRegistryCreateProcedureFormValues,
   RequiredDocumentsFormValues,
 } from "@eshg/lib-portal/businessModules/medicalRegistry/medicalRegistryCreateProcedureFormValues";
 import { shouldEnable } from "@eshg/lib-portal/businessModules/medicalRegistry/sections";
@@ -18,7 +17,7 @@ import { FileType } from "@eshg/lib-portal/components/formFields/file/FileType";
 import { validateFile } from "@eshg/lib-portal/helpers/validators";
 import { Add, DeleteOutlined } from "@mui/icons-material";
 import { Button, Grid, IconButton, Sheet, Stack, Typography } from "@mui/joy";
-import { FieldArray, useField } from "formik";
+import { FieldArray, useFormikContext } from "formik";
 import { Fragment } from "react";
 
 import { requiredFieldMessageKey } from "@/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/ProfessionalRegistrationForm";
@@ -35,39 +34,22 @@ const BYTES_PER_MB = 1048576;
 const MAX_FILE_SIZE = 25 * BYTES_PER_MB;
 
 export function ProfessionalRegistrationFormStepFour() {
-  const requiredDocumentsForm =
-    createFieldNameMapper<RequiredDocumentsFormValues>("requiredDocumentsForm");
+  const values =
+    useFormikContext<MedicalRegistryCreateProcedureFormValues>().values;
 
-  const [otherRelevantDocuments] = useField<File[]>(
-    requiredDocumentsForm("otherRelevantDocuments"),
-  );
+  const changeType = values.generalInformationForm.changeType;
+  const nationality = values.personalInformationForm.nationality;
+  const employeesEmployed = values.employeeInformationForm.employeesEmployed;
+  const otherRelevantDocuments =
+    values.requiredDocumentsForm.otherRelevantDocuments;
 
   const employeeInformationForm =
     createFieldNameMapper<EmployeeInformationFormValues>(
       "employeeInformationForm",
     );
 
-  const [employeesEmployed] = useField<boolean>(
-    employeeInformationForm("employeesEmployed"),
-  );
-
-  const personalInformationForm =
-    createFieldNameMapper<PersonalInformationFormValues>(
-      "personalInformationForm",
-    );
-
-  const [nationality] = useField<ApiCountryCode>(
-    personalInformationForm("nationality"),
-  );
-
-  const generalInformationForm =
-    createFieldNameMapper<GeneralInformationFormValues>(
-      "generalInformationForm",
-    );
-
-  const [changeType] = useField<ApiTypeOfChange>(
-    generalInformationForm("changeType"),
-  );
+  const requiredDocumentsForm =
+    createFieldNameMapper<RequiredDocumentsFormValues>("requiredDocumentsForm");
 
   const { t } = useTranslation([
     "medicalRegistry/professionalRegistrationForm",
@@ -88,18 +70,24 @@ export function ProfessionalRegistrationFormStepFour() {
             validate={validateFile(FileType.Jpeg.extensions, MAX_FILE_SIZE)}
           />
         </Sheet>
-        {shouldEnable("optionalDocuments", changeType.value) && (
+        {shouldEnable("optionalDocuments", changeType) && (
           <Sheet variant="soft">
             <TranslatedFileField
               name={requiredDocumentsForm("license")}
               label={t("stepFour.contentSheetOne.label.license")}
               accept={FileType.Jpeg}
+              required={
+                changeType === ApiTypeOfChange.NewRegistration ||
+                changeType === ApiTypeOfChange.ReRegistration
+                  ? t(requiredFieldMessageKey)
+                  : undefined
+              }
               validate={validateFile(FileType.Jpeg.extensions, MAX_FILE_SIZE)}
             />
           </Sheet>
         )}
-        {shouldEnable("optionalDocuments", changeType.value) &&
-          nationality.value !== ApiCountryCode.De && (
+        {shouldEnable("optionalDocuments", changeType) &&
+          nationality !== ApiCountryCode.De && (
             <Sheet variant="soft">
               <TranslatedFileField
                 name={requiredDocumentsForm("workPermit")}
@@ -111,86 +99,83 @@ export function ProfessionalRegistrationFormStepFour() {
             </Sheet>
           )}
 
-        {shouldEnable("optionalDocuments", changeType.value) && (
-          <FieldArray name={requiredDocumentsForm("otherRelevantDocuments")}>
-            {({ push, remove }) => (
-              <>
-                {otherRelevantDocuments.value.map((values, index) => (
-                  <Fragment key={index}>
-                    <Stack
-                      direction="row"
-                      gap={2}
-                      alignItems="flex-start"
+        <FieldArray name={requiredDocumentsForm("otherRelevantDocuments")}>
+          {({ push, remove }) => (
+            <>
+              {otherRelevantDocuments.map((values, index) => (
+                <Fragment key={index}>
+                  <Stack
+                    direction="row"
+                    gap={2}
+                    alignItems="flex-start"
+                    sx={{
+                      ">:first-child": { flexGrow: 1 },
+                    }}
+                  >
+                    <Sheet variant="soft">
+                      <TranslatedFileField
+                        name={`requiredDocumentsForm.otherRelevantDocuments.${index}`}
+                        label={t(
+                          "stepFour.contentSheetOne.label.otherRelevantDocument",
+                        )}
+                        accept={FileType.Jpeg}
+                        required={t(requiredFieldMessageKey)}
+                        validate={validateFile(
+                          FileType.Jpeg.extensions,
+                          MAX_FILE_SIZE,
+                        )}
+                      />
+                    </Sheet>
+
+                    <IconButton
+                      aria-label="Dokument löschen"
+                      color="neutral"
+                      variant="outlined"
                       sx={{
-                        ">:first-child": { flexGrow: 1 },
+                        marginTop: "27px",
+                        "--Icon-fontSize": (theme) => theme.fontSize.xl,
                       }}
+                      onClick={() => remove(index)}
                     >
-                      <Sheet variant="soft">
-                        <TranslatedFileField
-                          name={`requiredDocumentsForm.otherRelevantDocuments.${index}`}
-                          label={t(
-                            "stepFour.contentSheetOne.label.otherRelevantDocument",
-                          )}
-                          accept={FileType.Jpeg}
-                          required={t(requiredFieldMessageKey)}
-                          validate={validateFile(
-                            FileType.Jpeg.extensions,
-                            MAX_FILE_SIZE,
-                          )}
-                        />
-                      </Sheet>
-
-                      <IconButton
-                        aria-label="Dokument löschen"
-                        color="neutral"
-                        variant="outlined"
-                        sx={{
-                          marginTop: "27px",
-                          "--Icon-fontSize": (theme) => theme.fontSize.xl,
-                        }}
-                        onClick={() => remove(index)}
-                      >
-                        <DeleteOutlined />
-                      </IconButton>
-                    </Stack>
-                  </Fragment>
-                ))}
-                <Grid xxs={6}>
-                  {otherRelevantDocuments.value.length <
-                    MAX_OTHER_RELEVANT_DOCUMENTS && (
-                    <Button onClick={() => push(null)} startDecorator={<Add />}>
-                      {t(
-                        "stepFour.contentSheetOne.label.anotherRelevantDocument",
-                      )}
-                    </Button>
-                  )}
-                </Grid>
-              </>
-            )}
-          </FieldArray>
-        )}
+                      <DeleteOutlined />
+                    </IconButton>
+                  </Stack>
+                </Fragment>
+              ))}
+              <Grid xxs={6}>
+                {otherRelevantDocuments.length <
+                  MAX_OTHER_RELEVANT_DOCUMENTS && (
+                  <Button onClick={() => push(null)} startDecorator={<Add />}>
+                    {t(
+                      "stepFour.contentSheetOne.label.anotherRelevantDocument",
+                    )}
+                  </Button>
+                )}
+              </Grid>
+            </>
+          )}
+        </FieldArray>
       </ContentSheet>
 
-      {shouldEnable("employees", changeType.value) &&
-        employeesEmployed.value && (
-          <ContentSheet>
-            <Typography level="h2">
-              {t("stepFour.contentSheetTwo.pageTitle")}
-            </Typography>
-            <Typography level="body-md">
-              {t("stepFour.contentSheetTwo.hint")}
-            </Typography>
-            <Sheet variant="soft">
-              <TranslatedFileField
-                name={employeeInformationForm("employeesFile")}
-                label={t("stepFour.contentSheetTwo.label.employeesFile")}
-                accept={FileType.Jpeg}
-                required={t(requiredFieldMessageKey)}
-                validate={validateFile(FileType.Jpeg.extensions, MAX_FILE_SIZE)}
-              />
-            </Sheet>
-          </ContentSheet>
-        )}
+      {shouldEnable("employees", changeType) && employeesEmployed && (
+        <ContentSheet>
+          <Typography level="h2">
+            {t("stepFour.contentSheetTwo.pageTitle")}
+          </Typography>
+          <Typography level="body-md">
+            {t("stepFour.contentSheetTwo.hint")}
+          </Typography>
+          <Sheet variant="soft">
+            <TranslatedFileField
+              name={employeeInformationForm("employeesFile")}
+              label={t("stepFour.contentSheetTwo.label.employeesFile")}
+              accept={FileType.Jpeg}
+              required={t(requiredFieldMessageKey)}
+              validate={validateFile(FileType.Jpeg.extensions, MAX_FILE_SIZE)}
+            />
+          </Sheet>
+        </ContentSheet>
+      )}
     </Stack>
   );
 }
diff --git a/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/steps/ProfessionalRegistrationFormStepOne.tsx b/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/steps/ProfessionalRegistrationFormStepOne.tsx
index 4b730667f..e55fca689 100644
--- a/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/steps/ProfessionalRegistrationFormStepOne.tsx
+++ b/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/steps/ProfessionalRegistrationFormStepOne.tsx
@@ -3,9 +3,11 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { ApiTypeOfChange } from "@eshg/citizen-portal-api/medicalRegistry";
 import { changeTypeNames } from "@eshg/lib-portal/businessModules/medicalRegistry/constants";
 import {
   GeneralInformationFormValues,
+  MedicalRegistryCreateProcedureFormValues,
   PersonalInformationFormValues,
 } from "@eshg/lib-portal/businessModules/medicalRegistry/medicalRegistryCreateProcedureFormValues";
 import { DateField } from "@eshg/lib-portal/components/formFields/DateField";
@@ -15,8 +17,12 @@ import { PhoneNumberField } from "@eshg/lib-portal/components/formFields/PhoneNu
 import { SelectField } from "@eshg/lib-portal/components/formFields/SelectField";
 import { GENDER_OPTIONS } from "@eshg/lib-portal/components/formFields/constants";
 import { buildEnumOptions } from "@eshg/lib-portal/helpers/form";
-import { validateLength } from "@eshg/lib-portal/helpers/validators";
+import {
+  validateLength,
+  validatePastOrTodayDate,
+} from "@eshg/lib-portal/helpers/validators";
 import { Grid, Typography } from "@mui/joy";
+import { useFormikContext } from "formik";
 import { useMemo } from "react";
 
 import { requiredFieldMessageKey } from "@/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/ProfessionalRegistrationForm";
@@ -30,6 +36,11 @@ import { createFieldNameMapper } from "@/lib/shared/helpers/form";
 const changeTypeNamesOptions = buildEnumOptions(changeTypeNames);
 
 export function ProfessionalRegistrationFormStepOne() {
+  const values =
+    useFormikContext<MedicalRegistryCreateProcedureFormValues>().values;
+
+  const changeType = values.generalInformationForm.changeType;
+
   const generalInformationForm =
     createFieldNameMapper<GeneralInformationFormValues>(
       "generalInformationForm",
@@ -123,6 +134,11 @@ export function ProfessionalRegistrationFormStepOne() {
             <InputField
               name={personalInformationForm("birthName")}
               label={t("stepOne.contentSheetTwo.label.birthName")}
+              required={
+                changeType === ApiTypeOfChange.ChangeOfName
+                  ? t(requiredFieldMessageKey)
+                  : undefined
+              }
               validate={validateLength(1, 40)}
             />
           </Grid>
@@ -131,6 +147,7 @@ export function ProfessionalRegistrationFormStepOne() {
               name={personalInformationForm("birthDate")}
               label={t("stepOne.contentSheetTwo.label.birthDate")}
               required={t(requiredFieldMessageKey)}
+              validate={validatePastOrTodayDate}
             />
           </Grid>
           <Grid {...byBreakpoint({ mobile: 12, desktop: 6 })}>
@@ -191,6 +208,7 @@ export function ProfessionalRegistrationFormStepOne() {
             <EmailField
               name={personalInformationForm("email")}
               label={t("stepOne.contentSheetTwo.label.email")}
+              validate={validateLength(1, 254)}
             />
           </Grid>
           <Grid {...byBreakpoint({ mobile: 12, desktop: 6 })}>
diff --git a/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/steps/ProfessionalRegistrationFormStepThree.tsx b/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/steps/ProfessionalRegistrationFormStepThree.tsx
index d42a9b0de..919edf07b 100644
--- a/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/steps/ProfessionalRegistrationFormStepThree.tsx
+++ b/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/steps/ProfessionalRegistrationFormStepThree.tsx
@@ -3,10 +3,9 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiTypeOfChange } from "@eshg/citizen-portal-api/medicalRegistry";
 import {
   EmployeeInformationFormValues,
-  GeneralInformationFormValues,
+  MedicalRegistryCreateProcedureFormValues,
   PracticeInformationFormValues,
 } from "@eshg/lib-portal/businessModules/medicalRegistry/medicalRegistryCreateProcedureFormValues";
 import { shouldEnable } from "@eshg/lib-portal/businessModules/medicalRegistry/sections";
@@ -19,7 +18,7 @@ import {
   validateNumber,
 } from "@eshg/lib-portal/helpers/validators";
 import { Grid, Typography } from "@mui/joy";
-import { useField } from "formik";
+import { useFormikContext } from "formik";
 
 import { requiredFieldMessageKey } from "@/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/ProfessionalRegistrationForm";
 import { useTranslation } from "@/lib/i18n/client";
@@ -28,44 +27,34 @@ import { ContentSheet } from "@/lib/shared/components/layout/contentSheet";
 import { createFieldNameMapper } from "@/lib/shared/helpers/form";
 
 export function ProfessionalRegistrationFormStepThree() {
+  const values =
+    useFormikContext<MedicalRegistryCreateProcedureFormValues>().values;
+
+  const proprietaryPractice =
+    values.practiceInformationForm.proprietaryPractice;
+  const changeType = values.generalInformationForm.changeType;
+  const forceProprietaryPractice = !shouldEnable("practiceChoice", changeType);
+
   const practiceInformationForm =
     createFieldNameMapper<PracticeInformationFormValues>(
       "practiceInformationForm",
     );
 
-  const [proprietaryPractice] = useField<boolean>(
-    practiceInformationForm("proprietaryPractice"),
-  );
-
   const employeeInformationForm =
     createFieldNameMapper<EmployeeInformationFormValues>(
       "employeeInformationForm",
     );
 
-  const generalInformationForm =
-    createFieldNameMapper<GeneralInformationFormValues>(
-      "generalInformationForm",
-    );
-
-  const [changeType] = useField<ApiTypeOfChange>(
-    generalInformationForm("changeType"),
-  );
-
   const { t } = useTranslation([
     "medicalRegistry/professionalRegistrationForm",
   ]);
 
-  const forceProprietaryPractice = !shouldEnable(
-    "practiceChoice",
-    changeType.value,
-  );
-
   return (
     <>
       <ContentSheet>
         <Typography level="h2">{t("stepThree.pageTitle")}</Typography>
 
-        {shouldEnable("practice", changeType.value) && (
+        {shouldEnable("practice", changeType) && (
           <>
             {forceProprietaryPractice ? (
               <Alert color="primary" message={t("stepThree.hint")} />
@@ -83,7 +72,7 @@ export function ProfessionalRegistrationFormStepThree() {
               </>
             )}
 
-            {(forceProprietaryPractice || proprietaryPractice.value) && (
+            {(forceProprietaryPractice || proprietaryPractice) && (
               <>
                 <Typography level="h4">
                   {t("stepThree.subTitle.practiceInformation")}
@@ -93,7 +82,7 @@ export function ProfessionalRegistrationFormStepThree() {
                     <InputField
                       name={practiceInformationForm("practiceName")}
                       label={t("stepThree.label.practiceName")}
-                      required={requiredFieldMessageKey}
+                      required={t(requiredFieldMessageKey)}
                       validate={validateLength(1, 300)}
                     />
                   </Grid>
@@ -101,7 +90,7 @@ export function ProfessionalRegistrationFormStepThree() {
                     <InputField
                       name={practiceInformationForm("street")}
                       label={t("stepThree.label.street")}
-                      required={requiredFieldMessageKey}
+                      required={t(requiredFieldMessageKey)}
                       validate={validateLength(1, 55)}
                     />
                   </Grid>
@@ -109,7 +98,7 @@ export function ProfessionalRegistrationFormStepThree() {
                     <InputField
                       name={practiceInformationForm("houseNumber")}
                       label={t("stepThree.label.houseNumber")}
-                      required={requiredFieldMessageKey}
+                      required={t(requiredFieldMessageKey)}
                       validate={validateLength(1, 11)}
                     />
                   </Grid>
@@ -117,7 +106,7 @@ export function ProfessionalRegistrationFormStepThree() {
                     <InputField
                       name={practiceInformationForm("postalCode")}
                       label={t("stepThree.label.postalCode")}
-                      required={requiredFieldMessageKey}
+                      required={t(requiredFieldMessageKey)}
                       validate={validateLength(1, 20)}
                     />
                   </Grid>
@@ -125,7 +114,7 @@ export function ProfessionalRegistrationFormStepThree() {
                     <InputField
                       name={practiceInformationForm("city")}
                       label={t("stepThree.label.city")}
-                      required={requiredFieldMessageKey}
+                      required={t(requiredFieldMessageKey)}
                       validate={validateLength(1, 50)}
                     />
                   </Grid>
@@ -133,7 +122,7 @@ export function ProfessionalRegistrationFormStepThree() {
                     <InputField
                       name={practiceInformationForm("phoneNumber")}
                       label={t("stepThree.label.phoneNumber")}
-                      required={requiredFieldMessageKey}
+                      required={t(requiredFieldMessageKey)}
                       validate={validateLength(1, 23)}
                     />
                   </Grid>
@@ -141,7 +130,8 @@ export function ProfessionalRegistrationFormStepThree() {
                     <EmailField
                       name={practiceInformationForm("email")}
                       label={t("stepThree.label.email")}
-                      required={requiredFieldMessageKey}
+                      required={t(requiredFieldMessageKey)}
+                      validate={validateLength(1, 254)}
                     />
                   </Grid>
                   <Grid {...allBreakpoints(12)}>
@@ -184,7 +174,7 @@ export function ProfessionalRegistrationFormStepThree() {
           </>
         )}
 
-        {shouldEnable("employees", changeType.value) && (
+        {shouldEnable("employees", changeType) && (
           <>
             <Typography level="h4">
               {t("stepThree.label.employeesEmployed")}
diff --git a/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/steps/ProfessionalRegistrationFormStepTwo.tsx b/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/steps/ProfessionalRegistrationFormStepTwo.tsx
index a2abce109..573c8f258 100644
--- a/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/steps/ProfessionalRegistrationFormStepTwo.tsx
+++ b/citizen-portal/src/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/steps/ProfessionalRegistrationFormStepTwo.tsx
@@ -10,7 +10,7 @@ import {
 } from "@eshg/citizen-portal-api/medicalRegistry";
 import { professionalTitleNames } from "@eshg/lib-portal/businessModules/medicalRegistry/constants";
 import {
-  GeneralInformationFormValues,
+  MedicalRegistryCreateProcedureFormValues,
   OccupationalInformationFormValues,
   ProfessionalismInformationFormValues,
 } from "@eshg/lib-portal/businessModules/medicalRegistry/medicalRegistryCreateProcedureFormValues";
@@ -20,8 +20,12 @@ import { DateField } from "@eshg/lib-portal/components/formFields/DateField";
 import { InputField } from "@eshg/lib-portal/components/formFields/InputField";
 import { SelectField } from "@eshg/lib-portal/components/formFields/SelectField";
 import { buildEnumOptions } from "@eshg/lib-portal/helpers/form";
+import {
+  validateLength,
+  validatePastOrTodayDate,
+} from "@eshg/lib-portal/helpers/validators";
 import { Grid, Radio, Typography } from "@mui/joy";
-import { useField } from "formik";
+import { useFormikContext } from "formik";
 import { useMemo } from "react";
 
 import { requiredFieldMessageKey } from "@/lib/businessModules/medicalRegistry/pages/professionalRegistrationForm/ProfessionalRegistrationForm";
@@ -35,6 +39,11 @@ import { createFieldNameMapper } from "@/lib/shared/helpers/form";
 const professionalTitleNamesOptions = buildEnumOptions(professionalTitleNames);
 
 export function ProfessionalRegistrationFormStepTwo() {
+  const values =
+    useFormikContext<MedicalRegistryCreateProcedureFormValues>().values;
+
+  const changeType = values.generalInformationForm.changeType;
+
   const occupationalInformationForm =
     createFieldNameMapper<OccupationalInformationFormValues>(
       "occupationalInformationForm",
@@ -45,15 +54,6 @@ export function ProfessionalRegistrationFormStepTwo() {
       "professionalismInformationForm",
     );
 
-  const generalInformationForm =
-    createFieldNameMapper<GeneralInformationFormValues>(
-      "generalInformationForm",
-    );
-
-  const [changeType] = useField<ApiTypeOfChange>(
-    generalInformationForm("changeType"),
-  );
-
   const { t } = useTranslation([
     "medicalRegistry/professionalRegistrationForm",
   ]);
@@ -75,7 +75,7 @@ export function ProfessionalRegistrationFormStepTwo() {
     <>
       <ContentSheet>
         <Typography level="h2">{t("stepTwo.pageTitle")}</Typography>
-        {shouldEnable("profession", changeType.value) && (
+        {shouldEnable("profession", changeType) && (
           <>
             <Grid container spacing={2} sx={{ flexGrow: 1 }}>
               <Grid {...byBreakpoint({ mobile: 12, desktop: 6 })}>
@@ -83,25 +83,28 @@ export function ProfessionalRegistrationFormStepTwo() {
                   name={occupationalInformationForm("professionalTitle")}
                   label={t("stepTwo.label.professionalTitle")}
                   options={translatedProfessionalTitleNamesOptions}
-                  required={requiredFieldMessageKey}
+                  required={t(requiredFieldMessageKey)}
                 />
               </Grid>
               <Grid {...byBreakpoint({ mobile: 12, desktop: 6 })}>
                 <InputField
                   name={occupationalInformationForm("fieldOfExpertise")}
                   label={t("stepTwo.label.fieldOfExpertise")}
+                  validate={validateLength(1, 100)}
                 />
               </Grid>
               <Grid {...byBreakpoint({ mobile: 12, desktop: 6 })}>
                 <InputField
                   name={occupationalInformationForm("specialistTitle")}
                   label={t("stepTwo.label.specialistTitle")}
+                  validate={validateLength(1, 100)}
                 />
               </Grid>
               <Grid {...byBreakpoint({ mobile: 12, desktop: 6 })}>
                 <InputField
                   name={occupationalInformationForm("furtherTraining")}
                   label={t("stepTwo.label.furtherTraining")}
+                  validate={validateLength(1, 300)}
                 />
               </Grid>
               <Grid {...byBreakpoint({ mobile: 12, desktop: 6 })}>
@@ -121,7 +124,13 @@ export function ProfessionalRegistrationFormStepTwo() {
                 <DateField
                   name={occupationalInformationForm("approbationGrantedOn")}
                   label={t("stepTwo.label.approbationGrantedOn")}
-                  required={requiredFieldMessageKey}
+                  required={
+                    changeType === ApiTypeOfChange.NewRegistration ||
+                    changeType === ApiTypeOfChange.ReRegistration
+                      ? t(requiredFieldMessageKey)
+                      : undefined
+                  }
+                  validate={validatePastOrTodayDate}
                 />
               </Grid>
               <Grid {...byBreakpoint({ mobile: 12, desktop: 6 })}>
@@ -130,7 +139,8 @@ export function ProfessionalRegistrationFormStepTwo() {
                     "approbationIssuingAuthority",
                   )}
                   label={t("stepTwo.label.approbationIssuingAuthority")}
-                  required={requiredFieldMessageKey}
+                  required={t(requiredFieldMessageKey)}
+                  validate={validateLength(1, 100)}
                 />
               </Grid>
             </Grid>
@@ -142,7 +152,7 @@ export function ProfessionalRegistrationFormStepTwo() {
               name={professionalismInformationForm("employmentType")}
               label={t("stepTwo.label.employmentType")}
               orientation="horizontal"
-              required={requiredFieldMessageKey}
+              required={t(requiredFieldMessageKey)}
             >
               <Radio
                 value={ApiEmploymentType.FullTime}
@@ -157,7 +167,7 @@ export function ProfessionalRegistrationFormStepTwo() {
               name={professionalismInformationForm("employmentStatus")}
               label={t("stepTwo.label.employmentStatus")}
               orientation="horizontal"
-              required={requiredFieldMessageKey}
+              required={t(requiredFieldMessageKey)}
             >
               <Radio
                 value={ApiEmploymentStatus.SelfEmployed}
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/api/clients.ts b/citizen-portal/src/lib/businessModules/travelMedicine/api/clients.ts
index f3028d609..937c8cb86 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/api/clients.ts
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/api/clients.ts
@@ -3,13 +3,13 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { useApiConfiguration } from "@eshg/lib-portal/api/ApiProvider";
 import {
   CitizenAuthApi,
   CitizenPublicApi,
   Configuration,
   TravelMedicineFeatureTogglesPublicApi,
-} from "@eshg/citizen-portal-api/travelMedicine";
-import { useApiConfiguration } from "@eshg/lib-portal/api/ApiProvider";
+} from "@eshg/travel-medicine-api";
 
 function useConfiguration() {
   const configurationParameters = useApiConfiguration(
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/api/mutations/citizenAuthApi.ts b/citizen-portal/src/lib/businessModules/travelMedicine/api/mutations/citizenAuthApi.ts
index 2c7ab8c02..5cfcd360b 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/api/mutations/citizenAuthApi.ts
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/api/mutations/citizenAuthApi.ts
@@ -3,15 +3,15 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { unwrapRawResponse } from "@eshg/lib-portal/api/unwrapRawResponse";
+import { useHandledMutation } from "@eshg/lib-portal/api/useHandledMutation";
+import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
 import {
   ApiAppointment,
   ApiDocumentContent,
   ApiPatchInformationStatementRequest,
   DeleteAppointmentCpRequest,
-} from "@eshg/citizen-portal-api/travelMedicine";
-import { unwrapRawResponse } from "@eshg/lib-portal/api/unwrapRawResponse";
-import { useHandledMutation } from "@eshg/lib-portal/api/useHandledMutation";
-import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+} from "@eshg/travel-medicine-api";
 
 import { useCitizenAuthApi } from "@/lib/businessModules/travelMedicine/api/clients";
 import { useTranslation } from "@/lib/i18n/client";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/api/mutations/citizenPublicApi.ts b/citizen-portal/src/lib/businessModules/travelMedicine/api/mutations/citizenPublicApi.ts
index b23dc21fa..d6683eddf 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/api/mutations/citizenPublicApi.ts
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/api/mutations/citizenPublicApi.ts
@@ -3,9 +3,9 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiPostCitizenVaccinationConsultationRequest } from "@eshg/citizen-portal-api/travelMedicine";
 import { useHandledMutation } from "@eshg/lib-portal/api/useHandledMutation";
 import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+import { ApiPostCitizenVaccinationConsultationRequest } from "@eshg/travel-medicine-api";
 
 import { useCitizenPublicApi } from "@/lib/businessModules/travelMedicine/api/clients";
 
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/api/queries/citizenPublicApi.ts b/citizen-portal/src/lib/businessModules/travelMedicine/api/queries/citizenPublicApi.ts
index ca25a5f82..ebf1d02ad 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/api/queries/citizenPublicApi.ts
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/api/queries/citizenPublicApi.ts
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAppointmentType } from "@eshg/citizen-portal-api/travelMedicine";
+import { ApiAppointmentType } from "@eshg/travel-medicine-api";
 import { queryOptions, useSuspenseQuery } from "@tanstack/react-query";
 
 import { useCitizenPublicApi } from "@/lib/businessModules/travelMedicine/api/clients";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/AppointmentFormButtonBar.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/AppointmentFormButtonBar.tsx
index 27c4e76df..504e17284 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/AppointmentFormButtonBar.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/AppointmentFormButtonBar.tsx
@@ -3,10 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import {
-  ApiAppointmentType,
-  ApiTravelType,
-} from "@eshg/citizen-portal-api/travelMedicine";
+import { ApiAppointmentType, ApiTravelType } from "@eshg/travel-medicine-api";
 import { useFormikContext } from "formik";
 import { useRouter } from "next/navigation";
 
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/AppointmentTypeStep.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/AppointmentTypeStep.tsx
index dff9291f7..f743204d8 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/AppointmentTypeStep.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/AppointmentTypeStep.tsx
@@ -3,11 +3,11 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { Alert } from "@eshg/lib-portal/components/Alert";
 import {
   ApiAppointmentType,
   ApiAppointmentTypeConfig,
-} from "@eshg/citizen-portal-api/travelMedicine";
-import { Alert } from "@eshg/lib-portal/components/Alert";
+} from "@eshg/travel-medicine-api";
 import { List, ListItem, Sheet, Stack, Typography } from "@mui/joy";
 import { useFormikContext } from "formik";
 import { TOptions } from "i18next";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/TravelDataStep.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/TravelDataStep.tsx
index f5fdd170a..038aff927 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/TravelDataStep.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/TravelDataStep.tsx
@@ -3,10 +3,10 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiTravelType } from "@eshg/citizen-portal-api/travelMedicine";
 import { DateField } from "@eshg/lib-portal/components/formFields/DateField";
 import { NumberField } from "@eshg/lib-portal/components/formFields/NumberField";
 import { SelectField } from "@eshg/lib-portal/components/formFields/SelectField";
+import { ApiTravelType } from "@eshg/travel-medicine-api";
 import { Stack } from "@mui/joy";
 import { useFormikContext } from "formik";
 
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/TravelTypeStep.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/TravelTypeStep.tsx
index 3f2f6a62e..b44e8e02c 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/TravelTypeStep.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/TravelTypeStep.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiTravelType } from "@eshg/citizen-portal-api/travelMedicine";
+import { ApiTravelType } from "@eshg/travel-medicine-api";
 import { FormikValues, useFormikContext } from "formik";
 
 import {
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/appointmentSlotStep/AppointmentContent.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/appointmentSlotStep/AppointmentContent.tsx
index 6eebbbf5f..4927101a4 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/appointmentSlotStep/AppointmentContent.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/appointmentSlotStep/AppointmentContent.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAppointmentType } from "@eshg/citizen-portal-api/travelMedicine";
+import { ApiAppointmentType } from "@eshg/travel-medicine-api";
 import { isAfter, isEqual } from "date-fns";
 import { useFormikContext } from "formik";
 import { useEffect } from "react";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/appointmentSlotStep/calendar/AppointmentDayPicker.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/appointmentSlotStep/calendar/AppointmentDayPicker.tsx
index 28319a533..c3e43cd1f 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/appointmentSlotStep/calendar/AppointmentDayPicker.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/appointmentSlotStep/calendar/AppointmentDayPicker.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAppointment } from "@eshg/citizen-portal-api/travelMedicine";
+import { ApiAppointment } from "@eshg/travel-medicine-api";
 import { DateSelectArg } from "@fullcalendar/core/index.js";
 import deLocale from "@fullcalendar/core/locales/de";
 import dayGridPlugin from "@fullcalendar/daygrid";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/appointmentSlotStep/calendar/AppointmentPicker.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/appointmentSlotStep/calendar/AppointmentPicker.tsx
index 573623b10..0109dd823 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/appointmentSlotStep/calendar/AppointmentPicker.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/appointmentSlotStep/calendar/AppointmentPicker.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAppointment } from "@eshg/citizen-portal-api/travelMedicine";
 import { durationBetweenDatesInMinutes } from "@eshg/lib-portal/helpers/dateTime";
+import { ApiAppointment } from "@eshg/travel-medicine-api";
 import InfoOutlinedIcon from "@mui/icons-material/InfoOutlined";
 import { Stack } from "@mui/joy";
 import Grid from "@mui/joy/Grid";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/appointmentSlotStep/calendar/AppointmentTimePicker.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/appointmentSlotStep/calendar/AppointmentTimePicker.tsx
index 6720413dc..7870ab712 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/appointmentSlotStep/calendar/AppointmentTimePicker.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/appointmentSlotStep/calendar/AppointmentTimePicker.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAppointment } from "@eshg/citizen-portal-api/travelMedicine";
+import { ApiAppointment } from "@eshg/travel-medicine-api";
 import { Stack } from "@mui/joy";
 import Button from "@mui/joy/Button/Button";
 import Grid from "@mui/joy/Grid";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/overview/TravelInformationOverviewDetails.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/overview/TravelInformationOverviewDetails.tsx
index d6f0c3c4c..ee55be063 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/overview/TravelInformationOverviewDetails.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/steps/overview/TravelInformationOverviewDetails.tsx
@@ -3,10 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import {
-  ApiTravelTimeUnit,
-  ApiTravelType,
-} from "@eshg/citizen-portal-api/travelMedicine";
+import { ApiTravelTimeUnit, ApiTravelType } from "@eshg/travel-medicine-api";
 import { TravelExploreOutlined } from "@mui/icons-material";
 import { Stack, Typography } from "@mui/joy";
 import { useFormikContext } from "formik";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/types.ts b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/types.ts
index 78777681a..9ac33f9f8 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/types.ts
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/appointment/types.ts
@@ -3,13 +3,13 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { OptionalFieldValue } from "@eshg/lib-portal/types/form";
 import {
   ApiAppointmentType,
   ApiCountryCode,
   ApiTravelTimeUnit,
   ApiTravelType,
-} from "@eshg/citizen-portal-api/travelMedicine";
-import { OptionalFieldValue } from "@eshg/lib-portal/types/form";
+} from "@eshg/travel-medicine-api";
 
 export interface AppointmentFormValues {
   patient: PatientFormValues;
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/informationStatement/InformationStatementPanel.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/informationStatement/InformationStatementPanel.tsx
index 6ccafdab5..77bd966fe 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/informationStatement/InformationStatementPanel.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/informationStatement/InformationStatementPanel.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiDocumentContent } from "@eshg/citizen-portal-api/travelMedicine";
 import { useMultiStepForm } from "@eshg/lib-portal/components/form/MultiStepForm";
+import { ApiDocumentContent } from "@eshg/travel-medicine-api";
 import { Button } from "@mui/joy";
 
 import { useTranslation } from "@/lib/i18n/client";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/informationStatement/InformationStatementStep.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/informationStatement/InformationStatementStep.tsx
index 052593293..9b5bd35f1 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/informationStatement/InformationStatementStep.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/informationStatement/InformationStatementStep.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiDocumentSection } from "@eshg/citizen-portal-api/travelMedicine";
 import { useMultiStepForm } from "@eshg/lib-portal/components/form/MultiStepForm";
+import { ApiDocumentSection } from "@eshg/travel-medicine-api";
 
 import { DocumentSection } from "@/lib/businessModules/travelMedicine/components/shared/components/document/DocumentSection";
 import { SignatureSection } from "@/lib/businessModules/travelMedicine/components/shared/components/document/SignatureSection";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/informationStatement/InformationStatementStepper.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/informationStatement/InformationStatementStepper.tsx
index c1d9f7217..839eb7d12 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/informationStatement/InformationStatementStepper.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/informationStatement/InformationStatementStepper.tsx
@@ -3,15 +3,15 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import {
-  ApiDocumentContent,
-  ApiDocumentSection,
-} from "@eshg/citizen-portal-api/travelMedicine";
 import { FormPlus } from "@eshg/lib-portal/components/form/FormPlus";
 import {
   MultiStepForm,
   StepFactory,
 } from "@eshg/lib-portal/components/form/MultiStepForm";
+import {
+  ApiDocumentContent,
+  ApiDocumentSection,
+} from "@eshg/travel-medicine-api";
 import { Stack } from "@mui/joy";
 import { Formik, FormikErrors } from "formik";
 import { useRouter, useSearchParams } from "next/navigation";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/medicalHistory/MedicalHistorySidePanel.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/medicalHistory/MedicalHistorySidePanel.tsx
index 76326e5c9..207587bce 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/medicalHistory/MedicalHistorySidePanel.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/medicalHistory/MedicalHistorySidePanel.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiDocumentContent } from "@eshg/citizen-portal-api/travelMedicine";
+import { ApiDocumentContent } from "@eshg/travel-medicine-api";
 import { Button, Stack } from "@mui/joy";
 import { Dispatch, SetStateAction } from "react";
 
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/medicalHistory/MedicalHistoryStepper.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/medicalHistory/MedicalHistoryStepper.tsx
index f95f4f619..cbdd275ee 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/medicalHistory/MedicalHistoryStepper.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/medicalHistory/MedicalHistoryStepper.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiDocumentContent } from "@eshg/citizen-portal-api/travelMedicine";
 import { Alert } from "@eshg/lib-portal/components/Alert";
+import { ApiDocumentContent } from "@eshg/travel-medicine-api";
 import { FormikValues } from "formik";
 import { useRouter, useSearchParams } from "next/navigation";
 import { useState } from "react";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/AnamnesisQuestion.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/AnamnesisQuestion.tsx
index 7d459ba1d..9ca4fdfa2 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/AnamnesisQuestion.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/AnamnesisQuestion.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiDocumentAnamnesisQuestion } from "@eshg/citizen-portal-api/travelMedicine";
 import { SetFieldValueHelper } from "@eshg/lib-portal/types/form";
+import { ApiDocumentAnamnesisQuestion } from "@eshg/travel-medicine-api";
 import { Stack } from "@mui/joy";
 import { FieldConfig, FieldInputProps } from "formik";
 
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/ConfirmationElement.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/ConfirmationElement.tsx
index 4d00394b5..5fbc93df3 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/ConfirmationElement.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/ConfirmationElement.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiDocumentConfirmation } from "@eshg/citizen-portal-api/travelMedicine";
 import { useBaseField } from "@eshg/lib-portal/components/formFields/BaseField";
+import { ApiDocumentConfirmation } from "@eshg/travel-medicine-api";
 import { Checkbox } from "@mui/joy";
 
 interface ConfirmationElementProps {
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/DocumentMultiSelectElement.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/DocumentMultiSelectElement.tsx
index 7e41e13da..42f6be10e 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/DocumentMultiSelectElement.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/DocumentMultiSelectElement.tsx
@@ -3,14 +3,14 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import {
-  ApiDocumentAnamnesisQuestion,
-  ApiDocumentSubElementMultiSelect,
-} from "@eshg/citizen-portal-api/travelMedicine";
 import {
   BaseFieldProps,
   useBaseField,
 } from "@eshg/lib-portal/components/formFields/BaseField";
+import {
+  ApiDocumentAnamnesisQuestion,
+  ApiDocumentSubElementMultiSelect,
+} from "@eshg/travel-medicine-api";
 import { Checkbox, List, ListItem, Stack, Typography } from "@mui/joy";
 import { ChangeEvent } from "react";
 
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/DocumentRadioButtonElement.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/DocumentRadioButtonElement.tsx
index e9183747c..53baa1f4b 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/DocumentRadioButtonElement.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/DocumentRadioButtonElement.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiDocumentAnamnesisQuestion } from "@eshg/citizen-portal-api/travelMedicine";
 import { SetFieldValueHelper } from "@eshg/lib-portal/types/form";
+import { ApiDocumentAnamnesisQuestion } from "@eshg/travel-medicine-api";
 import { Typography, styled } from "@mui/joy";
 
 import { RadioButtonsField } from "@/lib/businessModules/travelMedicine/components/shared/components/RadioButtonsField";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/DocumentSection.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/DocumentSection.tsx
index f85995a38..ecbe8d04a 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/DocumentSection.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/DocumentSection.tsx
@@ -6,7 +6,7 @@
 import {
   ApiDocumentContent,
   ApiDocumentSection,
-} from "@eshg/citizen-portal-api/travelMedicine";
+} from "@eshg/travel-medicine-api";
 import { Stack } from "@mui/joy";
 import { useFormikContext } from "formik";
 import { ReactNode } from "react";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/TextBlock.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/TextBlock.tsx
index 688d4482b..dcd1e11c5 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/TextBlock.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/components/document/TextBlock.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiDocumentTextBlock } from "@eshg/citizen-portal-api/travelMedicine";
+import { ApiDocumentTextBlock } from "@eshg/travel-medicine-api";
 import { Box } from "@mui/joy";
 
 interface TextBlockProps {
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/contexts/IdContext.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/contexts/IdContext.tsx
index cb9b47c75..2faeddd87 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/contexts/IdContext.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/shared/contexts/IdContext.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiGetAppointmentDetailsResponse } from "@eshg/citizen-portal-api/travelMedicine";
 import { RequiresChildren } from "@eshg/lib-portal/types/react";
+import { ApiGetAppointmentDetailsResponse } from "@eshg/travel-medicine-api";
 import { useSearchParams } from "next/navigation";
 import { createContext, useContext } from "react";
 
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/ApointmentDetailsInformationStatementList.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/ApointmentDetailsInformationStatementList.tsx
index d89c151ba..526516102 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/ApointmentDetailsInformationStatementList.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/ApointmentDetailsInformationStatementList.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiInformationStatementSummary } from "@eshg/citizen-portal-api/travelMedicine";
+import { ApiInformationStatementSummary } from "@eshg/travel-medicine-api";
 
 import { AppointmentDetailsInformationStatement } from "@/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetailsInformationStatement";
 
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetails.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetails.tsx
index 516a009d0..3a56fd620 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetails.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetails.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiGetAppointmentDetailsResponse } from "@eshg/citizen-portal-api/travelMedicine";
+import { ApiGetAppointmentDetailsResponse } from "@eshg/travel-medicine-api";
 
 import { AppointmentDetailsAdditionalInformation } from "@/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetailsAdditionalInformation";
 import { AppointmentDetailsMetaInformation } from "@/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetailsMetaInformation";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetailsAdditionalInformation.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetailsAdditionalInformation.tsx
index a52191a79..b3ff3819a 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetailsAdditionalInformation.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetailsAdditionalInformation.tsx
@@ -6,7 +6,7 @@
 import {
   ApiAppointmentBookingType,
   ApiGetAppointmentDetailsResponse,
-} from "@eshg/citizen-portal-api/travelMedicine";
+} from "@eshg/travel-medicine-api";
 import { Box, styled } from "@mui/joy";
 
 import { theme } from "@/lib/baseModule/theme/theme";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetailsInformationStatement.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetailsInformationStatement.tsx
index 932233310..2b6f0fde0 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetailsInformationStatement.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetailsInformationStatement.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiInformationStatementSummary } from "@eshg/citizen-portal-api/travelMedicine";
+import { ApiInformationStatementSummary } from "@eshg/travel-medicine-api";
 import { Check, CloseOutlined } from "@mui/icons-material";
 import { Button, Typography } from "@mui/joy";
 import { useRouter } from "next/navigation";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetailsMetaInformation.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetailsMetaInformation.tsx
index b7663cca9..151cb42b3 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetailsMetaInformation.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetailsMetaInformation.tsx
@@ -3,12 +3,12 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { formatDate, formatTime } from "@eshg/lib-portal/formatters/dateTime";
+import { durationBetweenDatesInMinutes } from "@eshg/lib-portal/helpers/dateTime";
 import {
   ApiAppointmentType,
   ApiGetAppointmentDetailsResponse,
-} from "@eshg/citizen-portal-api/travelMedicine";
-import { formatDate, formatTime } from "@eshg/lib-portal/formatters/dateTime";
-import { durationBetweenDatesInMinutes } from "@eshg/lib-portal/helpers/dateTime";
+} from "@eshg/travel-medicine-api";
 import {
   CakeOutlined,
   DateRangeOutlined,
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetailsSidePanel.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetailsSidePanel.tsx
index 2595a4339..6d8c755c1 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetailsSidePanel.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentDetailsSidePanel.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAppointmentBookingType } from "@eshg/citizen-portal-api/travelMedicine";
+import { ApiAppointmentBookingType } from "@eshg/travel-medicine-api";
 import { Button, Stack } from "@mui/joy";
 import { useRouter } from "next/navigation";
 
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentOverviewSheet.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentOverviewSheet.tsx
index da17df37d..91d921cda 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentOverviewSheet.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentOverviewSheet.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAppointmentSummary } from "@eshg/citizen-portal-api/travelMedicine";
+import { ApiAppointmentSummary } from "@eshg/travel-medicine-api";
 import { Stack } from "@mui/joy";
 
 import { AppointmentOverviewSheetButton } from "@/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentOverviewSheetButton";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentOverviewSheetButton.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentOverviewSheetButton.tsx
index fa24ef2de..e39f5311b 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentOverviewSheetButton.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/AppointmentOverviewSheetButton.tsx
@@ -3,13 +3,13 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { formatDate, formatTime } from "@eshg/lib-portal/formatters/dateTime";
+import { durationBetweenDatesInMinutes } from "@eshg/lib-portal/helpers/dateTime";
 import {
   ApiAppointmentBookingType,
   ApiAppointmentSummary,
   ApiAppointmentType,
-} from "@eshg/citizen-portal-api/travelMedicine";
-import { formatDate, formatTime } from "@eshg/lib-portal/formatters/dateTime";
-import { durationBetweenDatesInMinutes } from "@eshg/lib-portal/helpers/dateTime";
+} from "@eshg/travel-medicine-api";
 import {
   ChevronRightOutlined,
   DateRangeOutlined,
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/rebook/RebookAppointment.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/rebook/RebookAppointment.tsx
index 22d933a7a..1e778780c 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/rebook/RebookAppointment.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/rebook/RebookAppointment.tsx
@@ -3,9 +3,9 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAppointment } from "@eshg/citizen-portal-api/travelMedicine";
 import { Alert } from "@eshg/lib-portal/components/Alert";
 import { durationBetweenDatesInMinutes } from "@eshg/lib-portal/helpers/dateTime";
+import { ApiAppointment } from "@eshg/travel-medicine-api";
 import InfoOutlinedIcon from "@mui/icons-material/InfoOutlined";
 import { Grid, Stack, Typography } from "@mui/joy";
 import { useFormikContext } from "formik";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/rebook/RebookAppointmentSidePanel.tsx b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/rebook/RebookAppointmentSidePanel.tsx
index 78a1cadfc..a65f5d4f4 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/rebook/RebookAppointmentSidePanel.tsx
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/components/viewAppointment/rebook/RebookAppointmentSidePanel.tsx
@@ -3,9 +3,9 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAppointmentBookingType } from "@eshg/citizen-portal-api/travelMedicine";
 import { formatTime } from "@eshg/lib-portal/formatters/dateTime";
 import { formatDateToFullReadableString } from "@eshg/lib-portal/helpers/dateTime";
+import { ApiAppointmentBookingType } from "@eshg/travel-medicine-api";
 import { AccessTimeOutlined, DateRange } from "@mui/icons-material";
 import { Button, Stack } from "@mui/joy";
 import { useFormikContext } from "formik";
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/helpers/appointmentFormHelper.ts b/citizen-portal/src/lib/businessModules/travelMedicine/helpers/appointmentFormHelper.ts
index 683618f40..9ec57f00c 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/helpers/appointmentFormHelper.ts
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/helpers/appointmentFormHelper.ts
@@ -4,6 +4,9 @@
  */
 
 import { ApiGetDepartmentInfoResponse } from "@eshg/base-api";
+import { toUtcDate } from "@eshg/lib-portal/helpers/dateTime";
+import { mapOptionalValue } from "@eshg/lib-portal/helpers/form";
+import { isEmptyString } from "@eshg/lib-portal/helpers/guards";
 import {
   ApiAppointmentType,
   ApiCountryCode,
@@ -11,10 +14,7 @@ import {
   ApiPostCitizenVaccinationConsultationRequest,
   ApiTravelInformation,
   ApiTravelType,
-} from "@eshg/citizen-portal-api/travelMedicine";
-import { toUtcDate } from "@eshg/lib-portal/helpers/dateTime";
-import { mapOptionalValue } from "@eshg/lib-portal/helpers/form";
-import { isEmptyString } from "@eshg/lib-portal/helpers/guards";
+} from "@eshg/travel-medicine-api";
 import { isDefined, isEmpty } from "remeda";
 
 import {
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/helpers/options.ts b/citizen-portal/src/lib/businessModules/travelMedicine/helpers/options.ts
index e6b3a35a2..262dd49f8 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/helpers/options.ts
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/helpers/options.ts
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiTravelTimeUnit } from "@eshg/citizen-portal-api/travelMedicine";
 import { buildEnumOptions } from "@eshg/lib-portal/helpers/form";
+import { ApiTravelTimeUnit } from "@eshg/travel-medicine-api";
 
 import { TRAVEL_TIME_UNITS } from "@/lib/businessModules/travelMedicine/helpers/translations";
 
diff --git a/citizen-portal/src/lib/businessModules/travelMedicine/helpers/translations.ts b/citizen-portal/src/lib/businessModules/travelMedicine/helpers/translations.ts
index 2e5cdb2a9..c710eff1e 100644
--- a/citizen-portal/src/lib/businessModules/travelMedicine/helpers/translations.ts
+++ b/citizen-portal/src/lib/businessModules/travelMedicine/helpers/translations.ts
@@ -3,12 +3,12 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { EnumMap } from "@eshg/lib-portal/types/helpers";
 import {
   ApiAppointmentType,
   ApiTravelTimeUnit,
   ApiTravelType,
-} from "@eshg/citizen-portal-api/travelMedicine";
-import { EnumMap } from "@eshg/lib-portal/types/helpers";
+} from "@eshg/travel-medicine-api";
 
 export const TRAVEL_TYPES: EnumMap<ApiTravelType> = {
   [ApiTravelType.Unspecified]: "nicht erfasst",
diff --git a/citizen-portal/src/lib/shared/api/clients.ts b/citizen-portal/src/lib/shared/api/clients.ts
index e82e1eb13..3ba677568 100644
--- a/citizen-portal/src/lib/shared/api/clients.ts
+++ b/citizen-portal/src/lib/shared/api/clients.ts
@@ -4,7 +4,29 @@
  */
 
 import { Configuration, DepartmentApi, PublicConfigApi } from "@eshg/base-api";
-import { useApiConfiguration } from "@eshg/lib-portal/api/ApiProvider";
+import {
+  ApiBusinessModule,
+  Configuration as BusinessModuleConfiguration,
+  ConfigurationParameters,
+  GdprValidationTaskApi,
+} from "@eshg/citizen-portal-api/businessProcedures";
+import {
+  ApiConfiguration,
+  useApiConfiguration,
+} from "@eshg/lib-portal/api/ApiProvider";
+
+export const BUSINESS_MODULE_URLS = {
+  [ApiBusinessModule.SchoolEntry]: "PUBLIC_SCHOOL_ENTRY_BACKEND_URL",
+  [ApiBusinessModule.Inspection]: "PUBLIC_INSPECTION_BACKEND_URL",
+  [ApiBusinessModule.MeaslesProtection]:
+    "PUBLIC_MEASLES_PROTECTION_BACKEND_URL",
+  [ApiBusinessModule.TravelMedicine]: "PUBLIC_TRAVEL_MEDICINE_BACKEND_URL",
+  [ApiBusinessModule.StiProtection]: "PUBLIC_STI_PROTECTION_BACKEND_URL",
+  [ApiBusinessModule.MedicalRegistry]: "PUBLIC_MEDICAL_REGISTRY_BACKEND_URL",
+  [ApiBusinessModule.Dental]: "PUBLIC_DENTAL_BACKEND_URL",
+  [ApiBusinessModule.OfficialMedicalService]:
+    "PUBLIC_OFFICIAL_MEDICAL_SERVICE_BACKEND_URL",
+} as const satisfies Record<ApiBusinessModule, keyof ApiConfiguration>;
 
 function useConfiguration() {
   const configurationParameters = useApiConfiguration(
@@ -22,3 +44,25 @@ export function usePublicConfigApi() {
   const configuration = useConfiguration();
   return new PublicConfigApi(configuration);
 }
+
+type ConfigurationConstructor<TConfiguration> = new (
+  params: ConfigurationParameters,
+) => TConfiguration;
+
+export function useConfigurationByBusinessModule<TConfiguration>(
+  businessModule: ApiBusinessModule,
+  Configuration: ConfigurationConstructor<TConfiguration>,
+): TConfiguration {
+  const configurationParameters = useApiConfiguration(
+    BUSINESS_MODULE_URLS[businessModule as keyof typeof BUSINESS_MODULE_URLS],
+  );
+  return new Configuration(configurationParameters);
+}
+
+export function useGdprValidationTaskApi(businessModule: ApiBusinessModule) {
+  const configuration = useConfigurationByBusinessModule(
+    businessModule,
+    BusinessModuleConfiguration,
+  );
+  return new GdprValidationTaskApi(configuration);
+}
diff --git a/citizen-portal/src/lib/shared/api/config.ts b/citizen-portal/src/lib/shared/api/config.ts
index f1f29c36e..6dced99a7 100644
--- a/citizen-portal/src/lib/shared/api/config.ts
+++ b/citizen-portal/src/lib/shared/api/config.ts
@@ -10,12 +10,15 @@ import { env } from "@/env/server";
 declare module "@eshg/lib-portal/api/ApiProvider" {
   interface ApiConfiguration {
     PUBLIC_BASE_BACKEND_URL: string;
-    PUBLIC_MEASLES_PROTECTION_BACKEND_URL: string;
+    PUBLIC_INSPECTION_BACKEND_URL: string;
     PUBLIC_SCHOOL_ENTRY_BACKEND_URL: string;
     PUBLIC_TRAVEL_MEDICINE_BACKEND_URL: string;
-    PUBLIC_OFFICIAL_MEDICAL_SERVICE_BACKEND_URL: string;
-    PUBLIC_MEDICAL_REGISTRY_BACKEND_URL: string;
+    PUBLIC_MEASLES_PROTECTION_BACKEND_URL: string;
     PUBLIC_OPEN_DATA_BACKEND_URL: string;
+    PUBLIC_STI_PROTECTION_BACKEND_URL: string;
+    PUBLIC_MEDICAL_REGISTRY_BACKEND_URL: string;
+    PUBLIC_DENTAL_BACKEND_URL: string;
+    PUBLIC_OFFICIAL_MEDICAL_SERVICE_BACKEND_URL: string;
   }
 }
 
@@ -33,4 +36,7 @@ export const API_CONFIGURATION: ApiConfiguration = {
     env.PUBLIC_OFFICIAL_MEDICAL_SERVICE_BACKEND_URL,
   PUBLIC_MEDICAL_REGISTRY_BACKEND_URL: env.PUBLIC_MEDICAL_REGISTRY_BACKEND_URL,
   PUBLIC_OPEN_DATA_BACKEND_URL: env.PUBLIC_OPEN_DATA_BACKEND_URL,
+  PUBLIC_INSPECTION_BACKEND_URL: env.PUBLIC_INSPECTION_BACKEND_URL,
+  PUBLIC_STI_PROTECTION_BACKEND_URL: env.PUBLIC_STI_PROTECTION_BACKEND_URL,
+  PUBLIC_DENTAL_BACKEND_URL: env.PUBLIC_DENTAL_BACKEND_URL,
 };
diff --git a/citizen-portal/src/lib/shared/components/OpeningHoursSection.tsx b/citizen-portal/src/lib/shared/components/OpeningHoursSection.tsx
index 1832820ec..0fd5f594b 100644
--- a/citizen-portal/src/lib/shared/components/OpeningHoursSection.tsx
+++ b/citizen-portal/src/lib/shared/components/OpeningHoursSection.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
-import { ApiGetOpeningHoursResponse } from "@eshg/citizen-portal-api/travelMedicine";
+import { ApiGetOpeningHoursResponse } from "@eshg/travel-medicine-api";
 import { AccessTimeOutlined } from "@mui/icons-material";
 import { Typography } from "@mui/joy";
 import { isDefined } from "remeda";
diff --git a/citizen-portal/src/lib/shared/components/dialogs/LoginRedirectDialog.tsx b/citizen-portal/src/lib/shared/components/dialogs/LoginRedirectDialog.tsx
index a984634ee..1245dc588 100644
--- a/citizen-portal/src/lib/shared/components/dialogs/LoginRedirectDialog.tsx
+++ b/citizen-portal/src/lib/shared/components/dialogs/LoginRedirectDialog.tsx
@@ -8,6 +8,7 @@
 import { BaseModal } from "@eshg/lib-portal/components/BaseModal";
 import { InternalLinkButton } from "@eshg/lib-portal/components/navigation/InternalLinkButton";
 import { Button, Stack, Typography } from "@mui/joy";
+import { Trans } from "react-i18next";
 
 import { UserType } from "@/lib/baseModule/components/layout/types";
 import { useRoutes } from "@/lib/baseModule/shared/routes";
@@ -33,7 +34,21 @@ export function LoginRedirectDialog(props: Readonly<LoginRedirectDialogProps>) {
       onClose={props.onClose}
       modalTitle={dialogText("title")}
     >
-      <Typography>{dialogText("description")}</Typography>
+      <Typography>
+        <Trans
+          i18nKey={`login:login_dialog.${props.type}.description`}
+          components={{
+            Quote: (
+              <Typography
+                sx={{
+                  minWidth: "fit-content",
+                  display: "inline-block",
+                }}
+              />
+            ),
+          }}
+        />
+      </Typography>
       <Stack direction="row" justifyContent="end" gap={2}>
         <Button
           onClick={() => props.onClose()}
diff --git a/citizen-portal/src/lib/shared/components/icon/GradientIcon.tsx b/citizen-portal/src/lib/shared/components/icon/GradientIcon.tsx
index edc9502b2..7d3b35b1a 100644
--- a/citizen-portal/src/lib/shared/components/icon/GradientIcon.tsx
+++ b/citizen-portal/src/lib/shared/components/icon/GradientIcon.tsx
@@ -14,7 +14,7 @@ export interface GradientIconProps extends Omit<SvgIconProps, "style"> {
 }
 
 export function GradientIcon({ iconClass, ...props }: GradientIconProps) {
-  const iconProps = { ...props, sx: { fill: "url(#gradient)" } };
+  const iconProps = { ...props, sx: { fill: "url(#gradient)", ...props.sx } };
   const icon = createElement(iconClass, iconProps);
 
   return (
diff --git a/docs/workspace-management.adoc b/docs/workspace-management.adoc
index 3e5e8d805..d5dea53fb 100644
--- a/docs/workspace-management.adoc
+++ b/docs/workspace-management.adoc
@@ -21,11 +21,13 @@ In order to add a new workspace package, run the `addWorkspaceDependency` task o
 .Example
 [,bash]
 ----
-./gradlew :employee-portal:addWorkspaceDependency -Ppackage=base-api
+./gradlew :employee-portal:addWorkspaceDependency -Ppackage=base-api [-Pdev]
 ----
 
 The task automatically updates all project references.
 
+Adding the `-Pdev` argument will add the package to the `devDependencie`.
+
 === Updating project references
 
 Whenever internal packages are added as a dependency to another internal package, the project references on TypeScript and Gradle level need to be updated accordingly.
diff --git a/employee-portal-api/build.gradle b/employee-portal-api/build.gradle
index 760a3f8f8..7d45fc5d0 100644
--- a/employee-portal-api/build.gradle
+++ b/employee-portal-api/build.gradle
@@ -6,16 +6,15 @@ def backendDir = rootProject.layout.projectDirectory.dir('backend')
 
 openapiGenerator {
   inputSpecs = [
-    'auditlog'              : backendDir.file('auditlog/openApi.yaml'),
-    'businessProcedures'    : backendDir.file('lib-procedures/openApi.yaml'),
-    'libEditor'             : backendDir.file('lib-editor/openApi.yaml'),
-    'libStatistics'         : backendDir.file('lib-statistics/openApi.yaml'),
-    'inspection'            : backendDir.file('inspection/openApi.yaml'),
-    'opendata'              : backendDir.file('opendata/openApi.yaml'),
-    'travelMedicine'        : backendDir.file('travel-medicine/openApi.yaml'),
-    'chatManagement'        : backendDir.file('chat-management/openApi.yaml'),
-    'stiProtection'         : backendDir.file('sti-protection/openApi.yaml'),
-    'medicalRegistry'       : backendDir.file('medical-registry/openApi.yaml'),
-    'officialMedicalService': backendDir.file('official-medical-service/openApi.yaml')
+    'auditlog'              : backendDir.file('auditlog/openApi.json'),
+    'businessProcedures'    : backendDir.file('lib-procedures/openApi.json'),
+    'libEditor'             : backendDir.file('lib-editor/openApi.json'),
+    'libStatistics'         : backendDir.file('lib-statistics/openApi.json'),
+    'inspection'            : backendDir.file('inspection/openApi.json'),
+    'opendata'              : backendDir.file('opendata/openApi.json'),
+    'chatManagement'        : backendDir.file('chat-management/openApi.json'),
+    'stiProtection'         : backendDir.file('sti-protection/openApi.json'),
+    'medicalRegistry'       : backendDir.file('medical-registry/openApi.json'),
+    'officialMedicalService': backendDir.file('official-medical-service/openApi.json')
   ]
 }
diff --git a/employee-portal/gradleDependencies.json b/employee-portal/gradleDependencies.json
index 6beec3bbf..0d59661c6 100644
--- a/employee-portal/gradleDependencies.json
+++ b/employee-portal/gradleDependencies.json
@@ -8,6 +8,7 @@
     ":lib-portal",
     ":measles-protection-api",
     ":school-entry-api",
-    ":statistics-api"
+    ":statistics-api",
+    ":travel-medicine-api"
   ]
 }
diff --git a/employee-portal/package.json b/employee-portal/package.json
index a7f773239..0a36af8f4 100644
--- a/employee-portal/package.json
+++ b/employee-portal/package.json
@@ -16,6 +16,7 @@
     "@eshg/measles-protection-api": "workspace:*",
     "@eshg/school-entry-api": "workspace:*",
     "@eshg/statistics-api": "workspace:*",
+    "@eshg/travel-medicine-api": "workspace:*",
     "@fontsource/poppins": "catalog:joy",
     "@fontsource/source-code-pro": "catalog:joy",
     "@fullcalendar/core": "catalog:fullcalendar",
diff --git a/employee-portal/src/app/(baseModule)/gdpr/page.tsx b/employee-portal/src/app/(baseModule)/gdpr/page.tsx
index 4cffcca72..75e702a7a 100644
--- a/employee-portal/src/app/(baseModule)/gdpr/page.tsx
+++ b/employee-portal/src/app/(baseModule)/gdpr/page.tsx
@@ -28,14 +28,12 @@ function parseSearchParams(
   return {
     type: parseOptionalEnum(ApiGdprProcedureType, searchParams.get("type")),
     ...parseReadonlyPageParams(searchParams),
-    sortKey: parseOptionalEnum(
-      ApiGdprProcedureSortKey,
-      searchParams.get("sortKey"),
-    ),
-    sortDirection: parseOptionalEnum(
-      ApiSortDirection,
-      searchParams.get("sortDirection"),
-    ),
+    sortKey:
+      parseOptionalEnum(ApiGdprProcedureSortKey, searchParams.get("sortKey")) ??
+      ApiGdprProcedureSortKey.CreatedAt,
+    sortDirection:
+      parseOptionalEnum(ApiSortDirection, searchParams.get("sortDirection")) ??
+      ApiSortDirection.Asc,
   };
 }
 
diff --git a/employee-portal/src/app/(businessModules)/dental/children/[childId]/examinations/[examinationId]/page.tsx b/employee-portal/src/app/(businessModules)/dental/children/[childId]/examinations/[examinationId]/page.tsx
index 6007f5c6d..f776e4acc 100644
--- a/employee-portal/src/app/(businessModules)/dental/children/[childId]/examinations/[examinationId]/page.tsx
+++ b/employee-portal/src/app/(businessModules)/dental/children/[childId]/examinations/[examinationId]/page.tsx
@@ -5,11 +5,9 @@
 
 "use client";
 
-import { UpdateExaminationRequest } from "@eshg/dental-api";
 import {
   ApiExaminationResult,
-  ApiFluoridationExaminationResult,
-  ApiScreeningExaminationResult,
+  UpdateExaminationRequest,
 } from "@eshg/dental-api";
 import { Examination } from "@eshg/dental/api/models/Examination";
 import { useUpdateExamination } from "@eshg/dental/api/mutations/childApi";
@@ -18,15 +16,18 @@ import { useDentalApi } from "@eshg/dental/shared/DentalProvider";
 import {
   mapOptionalValue,
   mapRequiredValue,
-  parseOptionalValue,
 } from "@eshg/lib-portal/helpers/form";
 import { useSuspenseQuery } from "@tanstack/react-query";
 
 import { DentalChildPageProps } from "@/app/(businessModules)/dental/children/[childId]/layout";
+import { ChildExaminationForm } from "@/lib/businessModules/dental/features/children/details/ChildExaminationForm";
+import { AdditionalInformationFormSection } from "@/lib/businessModules/dental/features/examinations/AdditionalInformationFormSection";
 import {
-  ExaminationDetails,
+  ExaminationFormLayout,
   ExaminationFormValues,
-} from "@/lib/businessModules/dental/features/children/details/ExaminationDetails";
+  mapToExaminationFormValues,
+} from "@/lib/businessModules/dental/features/examinations/ExaminationFormLayout";
+import { NoteFormSection } from "@/lib/businessModules/dental/features/examinations/NoteFormSection";
 
 export default function ExaminationDetailsPage(props: DentalChildPageProps) {
   const { childApi } = useDentalApi();
@@ -35,69 +36,55 @@ export default function ExaminationDetailsPage(props: DentalChildPageProps) {
     getExaminationQuery(childApi, examinationId),
   );
   const updateExamination = useUpdateExamination(examinationId);
+
   async function handleSubmit(values: ExaminationFormValues) {
     await updateExamination.mutateAsync(
-      mapToRequest(examinationId, values, examination.version),
+      mapToRequest(examination, values, examination.version),
     );
   }
 
   return (
-    <ExaminationDetails
-      initialValues={mapToFormValues(examination)}
+    <ChildExaminationForm
+      initialValues={mapToExaminationFormValues(
+        examination.result,
+        examination.note,
+      )}
       onSubmit={handleSubmit}
-    />
+    >
+      <ExaminationFormLayout
+        additionalInformation={
+          <AdditionalInformationFormSection
+            screening={examination.screening}
+            fluoridation={examination.fluoridation}
+            fluoridationConsentGiven={examination.fluoridationConsentGiven}
+          />
+        }
+        note={<NoteFormSection />}
+      />
+    </ChildExaminationForm>
   );
 }
 
-function mapToFormValues(apiExamination: Examination): ExaminationFormValues {
-  return {
-    screening: apiExamination.screening,
-    fluoridation: apiExamination.fluoridation,
-    note: parseOptionalValue(apiExamination.note),
-    ...mapExaminationResultFormValues(apiExamination),
-  };
-}
-
-function mapExaminationResultFormValues(apiExamination: Examination) {
-  if (apiExamination.screening) {
-    const screeningResult =
-      apiExamination.result as ApiScreeningExaminationResult;
-    return {
-      oralHygieneStatus: parseOptionalValue(screeningResult?.oralHygieneStatus),
-      fluorideVarnishApplied: parseOptionalValue(
-        screeningResult?.fluorideVarnishApplied,
-      ),
-    };
-  } else {
-    const fluoridationResult =
-      apiExamination.result as ApiFluoridationExaminationResult;
-    return {
-      fluorideVarnishApplied: parseOptionalValue(
-        fluoridationResult?.fluorideVarnishApplied,
-      ),
-    };
-  }
-}
-
 function mapToRequest(
-  examinationId: string,
+  examination: Examination,
   formValues: ExaminationFormValues,
   version: number,
 ): UpdateExaminationRequest {
   return {
-    examinationId,
+    examinationId: examination.id,
     apiUpdateExaminationRequest: {
       version,
       note: mapOptionalValue(formValues.note),
-      result: mapExaminationResultRequest(formValues),
+      result: mapExaminationResultRequest(examination, formValues),
     },
   };
 }
 
 function mapExaminationResultRequest(
+  examination: Examination,
   formValues: ExaminationFormValues,
 ): ApiExaminationResult | undefined {
-  if (formValues.screening) {
+  if (examination.screening) {
     return {
       type: "ScreeningExaminationResult",
       oralHygieneStatus: mapOptionalValue(formValues.oralHygieneStatus),
@@ -105,7 +92,9 @@ function mapExaminationResultRequest(
         mapOptionalValue(formValues.fluorideVarnishApplied) ?? false,
       toothDiagnoses: [],
     };
-  } else if (formValues.fluoridation) {
+  }
+
+  if (examination.fluoridation) {
     return {
       type: "FluoridationExaminationResult",
       fluorideVarnishApplied: mapRequiredValue(
@@ -113,4 +102,6 @@ function mapExaminationResultRequest(
       ),
     };
   }
+
+  return undefined;
 }
diff --git a/employee-portal/src/app/(businessModules)/dental/prophylaxis-sessions/[prophylaxisSessionId]/examinations/[participantIndex]/page.tsx b/employee-portal/src/app/(businessModules)/dental/prophylaxis-sessions/[prophylaxisSessionId]/examinations/[participantIndex]/page.tsx
index 76f9e3777..3b8ba9679 100644
--- a/employee-portal/src/app/(businessModules)/dental/prophylaxis-sessions/[prophylaxisSessionId]/examinations/[participantIndex]/page.tsx
+++ b/employee-portal/src/app/(businessModules)/dental/prophylaxis-sessions/[prophylaxisSessionId]/examinations/[participantIndex]/page.tsx
@@ -5,15 +5,24 @@
 
 "use client";
 
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+import { isDefined } from "remeda";
 import * as v from "valibot";
 
-import { ProphylaxisSessionExaminationBottomBar } from "@/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionExaminationBottomBar";
-import { ProphylaxisSessionExaminationToolbar } from "@/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionExaminationToolbar";
+import { AdditionalInformationFormSection } from "@/lib/businessModules/dental/features/examinations/AdditionalInformationFormSection";
+import { ExaminationFormLayout } from "@/lib/businessModules/dental/features/examinations/ExaminationFormLayout";
+import { NoteFormSection } from "@/lib/businessModules/dental/features/examinations/NoteFormSection";
+import { ProphylaxisSessionExaminationBottomBar } from "@/lib/businessModules/dental/features/prophylaxisSessions/examination/ProphylaxisSessionExaminationBottomBar";
+import { ProphylaxisSessionExaminationForm } from "@/lib/businessModules/dental/features/prophylaxisSessions/examination/ProphylaxisSessionExaminationForm";
+import { ProphylaxisSessionExaminationToolbar } from "@/lib/businessModules/dental/features/prophylaxisSessions/examination/ProphylaxisSessionExaminationToolbar";
+import { ADDITIONAL_INFO_FORM_COMPONENTS } from "@/lib/businessModules/dental/features/prophylaxisSessions/examination/formComponents";
+import { useProphylaxisSessionExaminationForm } from "@/lib/businessModules/dental/features/prophylaxisSessions/examination/useProphylaxisSessionExaminationForm";
+import { useProphylaxisSessionExaminationNavigation } from "@/lib/businessModules/dental/features/prophylaxisSessions/examination/useProphylaxisSessionExaminationNavigation";
 import {
   useFilteredParticipants,
   useProphylaxisSessionStore,
 } from "@/lib/businessModules/dental/features/prophylaxisSessions/store/ProphylaxisSessionStoreProvider";
-import { MainContentLayout } from "@/lib/shared/components/layout/MainContentLayout";
 import { StickyToolbarLayout } from "@/lib/shared/components/layout/StickyToolbarLayout";
 
 const PageParamsSchema = v.object({
@@ -35,21 +44,44 @@ export default function ProphylaxisSessionExaminationPage(
   props: ProphylaxisSessionExaminationPageProps,
 ) {
   const { participantIndex } = v.parse(PageParamsSchema, props.params);
-  const prophylaxisSessionId = useProphylaxisSessionStore((state) => state.id);
   const filteredParticipants = useFilteredParticipants();
-
   const participant = filteredParticipants.at(participantIndex);
   if (participant === undefined) {
     throw new Error(
       `Participant with index ${participantIndex} does not exist`,
     );
   }
-  const previousParticipantIndex =
-    participantIndex > 0 ? participantIndex - 1 : undefined;
-  const nextParticipantIndex =
-    participantIndex < filteredParticipants.length - 1
-      ? participantIndex + 1
-      : undefined;
+
+  const router = useRouter();
+  const prophylaxisSessionId = useProphylaxisSessionStore((state) => state.id);
+  const isScreening = useProphylaxisSessionStore((state) => state.isScreening);
+  const fluoridationVarnish = useProphylaxisSessionStore(
+    (state) => state.fluoridationVarnish,
+  );
+  const setExaminationResult = useProphylaxisSessionStore(
+    (state) => state.setExaminationResult,
+  );
+
+  const [nextRoute, setNextRoute] = useState<string>();
+  const examinationForm = useProphylaxisSessionExaminationForm({
+    examinationResult: participant.result,
+    note: participant.note,
+    onSubmit: (examinationResult) => {
+      setExaminationResult(participant.childId, examinationResult);
+      if (isDefined(nextRoute)) {
+        setNextRoute(undefined);
+        router.push(nextRoute);
+      }
+    },
+  });
+  const examinationNavigation = useProphylaxisSessionExaminationNavigation({
+    participantIndex,
+    participantsLength: filteredParticipants.length,
+    onNavigate: (nextRoute) => {
+      setNextRoute(nextRoute);
+      void examinationForm.submitForm();
+    },
+  });
 
   return (
     <StickyToolbarLayout
@@ -58,15 +90,34 @@ export default function ProphylaxisSessionExaminationPage(
           prophylaxisSessionId={prophylaxisSessionId}
           participant={participant}
           participantIndex={participantIndex}
+          onBackClicked={examinationNavigation.gotoOverview}
         />
       }
     >
-      <MainContentLayout fullViewportHeight></MainContentLayout>
-      <ProphylaxisSessionExaminationBottomBar
-        prophylaxisSessionId={prophylaxisSessionId}
-        previousParticipantIndex={previousParticipantIndex}
-        nextParticipantIndex={nextParticipantIndex}
-      />
+      <ProphylaxisSessionExaminationForm
+        form={examinationForm}
+        bottomBar={
+          <ProphylaxisSessionExaminationBottomBar
+            onPreviousParticipantClicked={
+              examinationNavigation.gotoPreviousParticipant
+            }
+            onNextParticipantClicked={examinationNavigation.gotoNextParticipant}
+            onOverviewClicked={examinationNavigation.gotoOverview}
+          />
+        }
+      >
+        <ExaminationFormLayout
+          additionalInformation={
+            <AdditionalInformationFormSection
+              screening={isScreening}
+              fluoridation={isDefined(fluoridationVarnish)}
+              fluoridationConsentGiven={participant.fluoridationConsentGiven}
+              components={ADDITIONAL_INFO_FORM_COMPONENTS}
+            />
+          }
+          note={<NoteFormSection />}
+        />
+      </ProphylaxisSessionExaminationForm>
     </StickyToolbarLayout>
   );
 }
diff --git a/employee-portal/src/app/(businessModules)/school-entry/procedures/[procedureId]/examinations/layout.tsx b/employee-portal/src/app/(businessModules)/school-entry/procedures/[procedureId]/examinations/layout.tsx
index 272e86904..98e853068 100644
--- a/employee-portal/src/app/(businessModules)/school-entry/procedures/[procedureId]/examinations/layout.tsx
+++ b/employee-portal/src/app/(businessModules)/school-entry/procedures/[procedureId]/examinations/layout.tsx
@@ -5,14 +5,14 @@
 
 "use client";
 
-import { ApiRequiredProcedureData } from "@eshg/school-entry-api";
+import { ApiRequiredProcedureArea } from "@eshg/school-entry-api";
 import { Button, Grid, Stack } from "@mui/joy";
 import { PropsWithChildren, useState } from "react";
 
 import { SchoolEntryProcedurePageProps } from "@/app/(businessModules)/school-entry/procedures/[procedureId]/layout";
 import { useSchoolEntryApi } from "@/lib/businessModules/schoolEntry/api/clients";
 import { useGetProcedure } from "@/lib/businessModules/schoolEntry/api/queries/schoolEntryApi";
-import { RequiredProcedureDataDialog } from "@/lib/businessModules/schoolEntry/features/procedures/examinations/RequiredProcedureDataModal";
+import { IncompleteProcedureAreasModal } from "@/lib/businessModules/schoolEntry/features/procedures/examinations/IncompleteProcedureAreasModal";
 import { useMedicalReportSidebar } from "@/lib/businessModules/schoolEntry/features/procedures/reports/MedicalReportSidebar";
 import { useSchoolInfoLetterSidebar } from "@/lib/businessModules/schoolEntry/features/procedures/reports/SchoolInfoLetterSidebar";
 import { routes } from "@/lib/businessModules/schoolEntry/shared/routes";
@@ -87,20 +87,20 @@ interface CreateReportsPanelProps {
 function CreateReportsPanel(props: CreateReportsPanelProps) {
   const medicalReportSidebar = useMedicalReportSidebar();
   const schoolInfoLetterSidebar = useSchoolInfoLetterSidebar();
-  const [requiredProcedureData, setRequiredProcedureData] = useState<
-    ApiRequiredProcedureData[]
+  const [incompleteProcedureAreas, setIncompleteProcedureAreas] = useState<
+    ApiRequiredProcedureArea[]
   >([]);
   const schoolEntryApi = useSchoolEntryApi();
 
   async function handleSchoolInfoLetterClick() {
-    const data = await schoolEntryApi.validateCompleteness(props.procedureId);
-    const invalidAreas = data.invalidAreas;
-    if (invalidAreas?.length === 0) {
+    const validationResponse = await schoolEntryApi.validateCompleteness(
+      props.procedureId,
+    );
+    const incompleteAreas = validationResponse.incompleteAreas;
+    if (incompleteAreas.length === 0) {
       schoolInfoLetterSidebar.open({ procedureId: props.procedureId });
-      setRequiredProcedureData([]);
-    } else {
-      setRequiredProcedureData(invalidAreas);
     }
+    setIncompleteProcedureAreas(incompleteAreas);
   }
 
   return (
@@ -109,10 +109,10 @@ function CreateReportsPanel(props: CreateReportsPanelProps) {
       <Button variant="solid" onClick={handleSchoolInfoLetterClick}>
         Schulinfobrief erstellen
       </Button>
-      <RequiredProcedureDataDialog
-        open={requiredProcedureData.length > 0}
-        onClose={() => setRequiredProcedureData([])}
-        requiredProcedureData={requiredProcedureData}
+      <IncompleteProcedureAreasModal
+        open={incompleteProcedureAreas.length > 0}
+        onClose={() => setIncompleteProcedureAreas([])}
+        incompleteProcedureAreas={incompleteProcedureAreas}
       />
       <Button
         variant="outlined"
diff --git a/employee-portal/src/app/(businessModules)/statistics/evaluations/[id]/table/page.tsx b/employee-portal/src/app/(businessModules)/statistics/evaluations/[id]/table/page.tsx
index 943d71990..fb98cb49a 100644
--- a/employee-portal/src/app/(businessModules)/statistics/evaluations/[id]/table/page.tsx
+++ b/employee-portal/src/app/(businessModules)/statistics/evaluations/[id]/table/page.tsx
@@ -5,8 +5,9 @@
 
 "use client";
 
-import { startTransition, useState } from "react";
-import { isDefined } from "remeda";
+import { ApiSortDirection } from "@eshg/employee-portal-api/stiProtection";
+import { startTransition, useEffect, useState } from "react";
+import { isDefined, isNullish } from "remeda";
 
 import {
   isValidAttributeKey,
@@ -32,9 +33,9 @@ export default function EvaluationDetailsTablePage(
 ) {
   const { resetPageNumber, page, pageSize, getPaginationProps } =
     usePagination();
-  const { sortKey, sortDirection, manualSortingProps } = useTableSorting({
-    onSortingChange: () => resetPageNumber(),
-  });
+
+  const [sortKey, setSortKey] = useState<string>();
+  const [sortDirection, setSortDirection] = useState<ApiSortDirection>();
 
   const [filters, setFilters] = useState<EvaluationFilter[]>([]);
 
@@ -55,6 +56,31 @@ export default function EvaluationDetailsTablePage(
     props.params.id,
   );
 
+  const sortableAccessorKey = evaluation.attributes.find(
+    (attribute) => attribute.type !== "ProcedureReferenceAttribute",
+  )?.key;
+
+  const {
+    sortKey: tableSortKey,
+    sortDirection: tableSortDirection,
+    manualSortingProps,
+  } = useTableSorting({
+    onSortingChange: () => resetPageNumber(),
+    initialSorting: isDefined(sortableAccessorKey)
+      ? {
+          id: sortableAccessorKey,
+          desc: false,
+        }
+      : undefined,
+  });
+
+  useEffect(() => {
+    startTransition(() => {
+      setSortKey(tableSortKey);
+      setSortDirection(tableSortDirection);
+    });
+  }, [tableSortDirection, tableSortKey]);
+
   const evaluationDetailsTableProps: EvaluationDetailsTableProps = {
     attributes: evaluation.attributes,
     tableData: evaluation.tableData,
@@ -69,6 +95,7 @@ export default function EvaluationDetailsTablePage(
         resetPageNumber();
       }),
     filterTemplates: filterTemplates,
+    loading: isNullish(sortKey),
   };
 
   return (
diff --git a/employee-portal/src/app/playground/charts/page.tsx b/employee-portal/src/app/playground/charts/page.tsx
index f7943b06e..8d2638b5c 100644
--- a/employee-portal/src/app/playground/charts/page.tsx
+++ b/employee-portal/src/app/playground/charts/page.tsx
@@ -47,7 +47,7 @@ function PlaygroundChartBox({
           description="Hier könnte Ihre Werbung stehen"
           filterLabels={["Label 1", "Label 2"]}
           evaluatedDataAmount={42}
-          chart={chart}
+          getChart={() => chart}
         />
         <Stack direction="row" gap={3}>
           {switches}
diff --git a/employee-portal/src/lib/baseModule/components/gdpr/overview/GDPRTable.tsx b/employee-portal/src/lib/baseModule/components/gdpr/overview/GDPRTable.tsx
index 81ffceee3..203c27b7c 100644
--- a/employee-portal/src/lib/baseModule/components/gdpr/overview/GDPRTable.tsx
+++ b/employee-portal/src/lib/baseModule/components/gdpr/overview/GDPRTable.tsx
@@ -30,6 +30,10 @@ export function GDPRTable({ params }: { params: GetGdprProceduresRequest }) {
   const tableControl = useTableControl({
     serverSideSorting: true,
     sortFieldName: "sortKey",
+    initialSorting: {
+      id: "dueDate",
+      desc: false,
+    },
   });
   const {
     data: { elements, totalNumberOfElements },
@@ -84,6 +88,7 @@ export function GDPRTable({ params }: { params: GetGdprProceduresRequest }) {
           data={elements}
           columns={columns}
           sorting={tableControl.tableSorting}
+          enableSortingRemoval={false}
           rowNavigation={{
             focusColumnAccessorKey: "identificationData",
             route: (row) => routes.gdpr.details(row.original.id),
diff --git a/employee-portal/src/lib/baseModule/components/gdpr/overview/columns.tsx b/employee-portal/src/lib/baseModule/components/gdpr/overview/columns.tsx
index a112f2b83..4da8129ed 100644
--- a/employee-portal/src/lib/baseModule/components/gdpr/overview/columns.tsx
+++ b/employee-portal/src/lib/baseModule/components/gdpr/overview/columns.tsx
@@ -67,7 +67,7 @@ export const columns = [
   columnHelper.accessor("createdAt", {
     id: "dueDate",
     header: "Frist",
-    enableSorting: false,
+    enableSorting: true,
     cell: (cell) => dueDate(cell),
     meta: {
       width: "20ch",
@@ -78,7 +78,7 @@ export const columns = [
   }),
   columnHelper.accessor("createdAt", {
     header: "Erstellt",
-    enableSorting: true,
+    enableSorting: false,
     cell: (cell) => formatDateTime(cell.getValue()),
     meta: {
       width: "20rem",
diff --git a/employee-portal/src/lib/baseModule/components/gdpr/procedure/GDPRProcedureDetails.tsx b/employee-portal/src/lib/baseModule/components/gdpr/procedure/GDPRProcedureDetails.tsx
index 1ce4834a8..8ac2ddb24 100644
--- a/employee-portal/src/lib/baseModule/components/gdpr/procedure/GDPRProcedureDetails.tsx
+++ b/employee-portal/src/lib/baseModule/components/gdpr/procedure/GDPRProcedureDetails.tsx
@@ -16,8 +16,12 @@ import {
 import { QueryBoundary } from "@eshg/lib-portal/components/boundaries/QueryBoundary";
 import { Stack } from "@mui/joy";
 import { SxProps } from "@mui/joy/styles/types";
+import { isDefined } from "remeda";
 
-import { isGdprPerson } from "@/lib/baseModule/components/gdpr/helpers";
+import {
+  isGdprFacility,
+  isGdprPerson,
+} from "@/lib/baseModule/components/gdpr/helpers";
 import {
   LinkFacilitySidebar,
   LinkPersonSidebar,
@@ -55,6 +59,15 @@ const COLUMN_STYLE: SxProps = {
   maxWidth: (theme) => ({ md: `calc(100%/3 - 2 * ${theme.spacing(2)})` }),
 };
 
+function isExternalIdentity(
+  identity: ApiGetGdprProcedureResponse["identificationData"],
+) {
+  return (
+    (isGdprPerson(identity) && isDefined(identity.bpk2)) ||
+    (isGdprFacility(identity) && isDefined(identity.dataTransmitterPseudonymId))
+  );
+}
+
 export function GDPRProcedureDetails({
   procedure,
   hasDownload,
@@ -81,6 +94,10 @@ export function GDPRProcedureDetails({
     procedure.status === ApiGdprProcedureStatus.InProgress &&
     procedure.type === ApiGdprProcedureType.ToRectification;
 
+  const showDownloads =
+    procedure.status === ApiGdprProcedureStatus.Closed &&
+    procedure.type === ApiGdprProcedureType.OfAccess;
+
   function openLinkSidebar() {
     if (isGdprPerson(identity)) {
       linkPersonSidebar.open({
@@ -137,7 +154,7 @@ export function GDPRProcedureDetails({
               canEdit={canEditCentralFile}
               onEdit={() => editPerson(person)}
             >
-              {index + 1}. Datensatz aus dem Stammdaten-Konverter
+              {index + 1}. Stammdatensatz
             </SectionTitle>
             <CentralFilePersonDetails person={person} columnSx={COLUMN_STYLE} />
           </SectionTile>
@@ -149,7 +166,7 @@ export function GDPRProcedureDetails({
               canEdit={canEditCentralFile}
               onEdit={() => editFacility(facility)}
             >
-              {index + 1}. Datensatz aus dem Stammdaten-Konverter
+              {index + 1}. Stammdatensatz
             </SectionTitle>
             <CentralFileFacilityDetails
               facility={facility}
@@ -166,13 +183,13 @@ export function GDPRProcedureDetails({
           title="Datenpakete"
           loadingText="Datenpakete werden geladen..."
         >
-          {procedure.status === ApiGdprProcedureStatus.Closed &&
-            procedure.type === ApiGdprProcedureType.OfAccess && (
-              <GdprDownloadPackagesTile
-                gdprProcedure={procedure}
-                hasDownload={hasDownload}
-              />
-            )}
+          {showDownloads && (
+            <GdprDownloadPackagesTile
+              gdprProcedure={procedure}
+              hasDownload={hasDownload}
+              isExternal={isExternalIdentity(procedure.identificationData)}
+            />
+          )}
         </SheetQueryBoundary>
         {procedure.status === ApiGdprProcedureStatus.Draft && (
           <CentralFileLinkTile
diff --git a/employee-portal/src/lib/baseModule/components/gdpr/procedure/tiles/GdprDownloadPackagesTile.tsx b/employee-portal/src/lib/baseModule/components/gdpr/procedure/tiles/GdprDownloadPackagesTile.tsx
index 36bffba3c..1eeba1854 100644
--- a/employee-portal/src/lib/baseModule/components/gdpr/procedure/tiles/GdprDownloadPackagesTile.tsx
+++ b/employee-portal/src/lib/baseModule/components/gdpr/procedure/tiles/GdprDownloadPackagesTile.tsx
@@ -6,6 +6,7 @@
 import { ApiGetGdprProcedureResponse } from "@eshg/base-api";
 import { ApiBusinessModule } from "@eshg/employee-portal-api/businessProcedures";
 import { useFileDownload } from "@eshg/lib-portal/api/files/download";
+import CheckmarkIcon from "@mui/icons-material/Check";
 import DownloadIcon from "@mui/icons-material/SimCardDownloadOutlined";
 import {
   Accordion,
@@ -16,6 +17,7 @@ import {
   ListItem,
   ListItemButton,
   ListItemDecorator,
+  Typography,
   accordionDetailsClasses,
   accordionSummaryClasses,
   styled,
@@ -54,13 +56,15 @@ function useFileDownloadForBase(gdprProcedureId: string) {
 export function GdprDownloadPackagesTile({
   gdprProcedure,
   hasDownload,
+  isExternal,
 }: {
   gdprProcedure: ApiGetGdprProcedureResponse;
   hasDownload: boolean;
+  isExternal: boolean;
 }) {
   const responses = useGetGdprDownloadPackagesInfo(
     gdprProcedure.id,
-    hasDownload,
+    hasDownload && !isExternal,
   );
   const businessModuleDownload = useFileDownloadForPackage();
   const baseDownload = useFileDownloadForBase(gdprProcedure.id);
@@ -70,7 +74,15 @@ export function GdprDownloadPackagesTile({
     <SectionTile id={id}>
       <SectionTitle id={id}>Datenpakete</SectionTitle>
 
-      {!hasDownload ? (
+      {isExternal ? (
+        <Typography
+          sx={{ textWrap: "pretty" }}
+          startDecorator={<CheckmarkIcon color="success" size="lg" />}
+        >
+          Verfügbare Daten wurden übermittelt und können nun vom Antragsteller
+          abgerufen werden.
+        </Typography>
+      ) : !hasDownload ? (
         <NoSearchResults info="Keine Daten gefunden." />
       ) : (
         <AccordionGroup variant="outlined" color="primary">
diff --git a/employee-portal/src/lib/baseModule/components/gdpr/procedure/tiles/GdprFacilityDataTile.tsx b/employee-portal/src/lib/baseModule/components/gdpr/procedure/tiles/GdprFacilityDataTile.tsx
index 54884a498..ec553086d 100644
--- a/employee-portal/src/lib/baseModule/components/gdpr/procedure/tiles/GdprFacilityDataTile.tsx
+++ b/employee-portal/src/lib/baseModule/components/gdpr/procedure/tiles/GdprFacilityDataTile.tsx
@@ -37,7 +37,10 @@ export function GdprFacilityDataTile({
               name="dataTransmitterPseudonymId"
               label="Mein Unternehmenskonto"
               value={
-                <Typography startDecorator={<VerifiedIcon color="success" />}>
+                <Typography
+                  startDecorator={<VerifiedIcon color="success" />}
+                  noWrap
+                >
                   Authentifiziert
                 </Typography>
               }
diff --git a/employee-portal/src/lib/baseModule/components/gdpr/procedure/tiles/GdprPersonDataTile.tsx b/employee-portal/src/lib/baseModule/components/gdpr/procedure/tiles/GdprPersonDataTile.tsx
index 3dc859a76..e0b56222c 100644
--- a/employee-portal/src/lib/baseModule/components/gdpr/procedure/tiles/GdprPersonDataTile.tsx
+++ b/employee-portal/src/lib/baseModule/components/gdpr/procedure/tiles/GdprPersonDataTile.tsx
@@ -79,7 +79,10 @@ export function GdprPersonDataTile({
               name="bpk2"
               label="BundID"
               value={
-                <Typography startDecorator={<VerifiedIcon color="success" />}>
+                <Typography
+                  startDecorator={<VerifiedIcon color="success" />}
+                  noWrap
+                >
                   Authentifiziert
                 </Typography>
               }
diff --git a/employee-portal/src/lib/baseModule/theme/theme.ts b/employee-portal/src/lib/baseModule/theme/theme.ts
index d29894561..1da006b03 100644
--- a/employee-portal/src/lib/baseModule/theme/theme.ts
+++ b/employee-portal/src/lib/baseModule/theme/theme.ts
@@ -461,6 +461,15 @@ export const theme = extendTheme({
     },
     JoyCheckbox: {
       styleOverrides: {
+        root: ({ theme, ownerState }) => ({
+          "&.Mui-disabled": {
+            label: {
+              color: ownerState.disabled
+                ? theme.palette.text.secondary
+                : theme.palette.text.primary,
+            },
+          },
+        }),
         label: ({ theme }) => ({
           fontWeight: 400,
           fontSize: theme.fontSize.md,
diff --git a/employee-portal/src/lib/businessModules/dental/features/children/details/AdditionalInformation.tsx b/employee-portal/src/lib/businessModules/dental/features/children/details/AdditionalInformation.tsx
deleted file mode 100644
index 183109907..000000000
--- a/employee-portal/src/lib/businessModules/dental/features/children/details/AdditionalInformation.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * Copyright 2025 cronn GmbH
- * SPDX-License-Identifier: AGPL-3.0-only
- */
-
-import { BooleanSelectField } from "@eshg/lib-portal/components/formFields/BooleanSelectField";
-import { SelectField } from "@eshg/lib-portal/components/formFields/SelectField";
-
-import { ORAL_HYGIENE_STATUS_OPTIONS } from "@/lib/businessModules/dental/features/children/options";
-import { DetailsSection } from "@/lib/shared/components/detailsSection/DetailsSection";
-import { InformationSheet } from "@/lib/shared/components/infoTile/InformationSheet";
-
-interface Props {
-  screening: boolean;
-  fluoridation: boolean;
-}
-
-export function AdditionalInformation(props: Props) {
-  return (
-    <InformationSheet>
-      <DetailsSection title="Zusatzinfos">
-        {props.screening && (
-          <SelectField
-            name="oralHygieneStatus"
-            label="Mundhygienestatus"
-            options={ORAL_HYGIENE_STATUS_OPTIONS}
-          />
-        )}
-        {props.fluoridation && (
-          <BooleanSelectField
-            name="fluorideVarnishApplied"
-            label="Fluoridierung"
-            required="Bitte angeben, ob fluoridiert wurde."
-          />
-        )}
-      </DetailsSection>
-    </InformationSheet>
-  );
-}
diff --git a/employee-portal/src/lib/businessModules/dental/features/children/details/ChildExaminationForm.tsx b/employee-portal/src/lib/businessModules/dental/features/children/details/ChildExaminationForm.tsx
new file mode 100644
index 000000000..531130142
--- /dev/null
+++ b/employee-portal/src/lib/businessModules/dental/features/children/details/ChildExaminationForm.tsx
@@ -0,0 +1,37 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+"use client";
+
+import { FormProps } from "@eshg/lib-portal/types/form";
+import { RequiresChildren } from "@eshg/lib-portal/types/react";
+import { Formik } from "formik";
+
+import { ExaminationFormValues } from "@/lib/businessModules/dental/features/examinations/ExaminationFormLayout";
+import { FormFooter } from "@/lib/businessModules/schoolEntry/features/procedures/examinations/FormFooter";
+import { FormStack } from "@/lib/shared/components/form/FormStack";
+
+interface ChildExaminationFormProps
+  extends FormProps<ExaminationFormValues>,
+    RequiresChildren {}
+
+export function ChildExaminationForm(props: ChildExaminationFormProps) {
+  return (
+    <Formik
+      initialValues={props.initialValues}
+      onSubmit={props.onSubmit}
+      enableReinitialize
+    >
+      {({ handleSubmit, isSubmitting }) => {
+        return (
+          <FormStack onSubmit={handleSubmit}>
+            {props.children}
+            <FormFooter isSubmitting={isSubmitting} />
+          </FormStack>
+        );
+      }}
+    </Formik>
+  );
+}
diff --git a/employee-portal/src/lib/businessModules/dental/features/children/details/ExaminationDetails.tsx b/employee-portal/src/lib/businessModules/dental/features/children/details/ExaminationDetails.tsx
deleted file mode 100644
index d1d6ce232..000000000
--- a/employee-portal/src/lib/businessModules/dental/features/children/details/ExaminationDetails.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * Copyright 2025 cronn GmbH
- * SPDX-License-Identifier: AGPL-3.0-only
- */
-
-"use client";
-
-import { ApiOralHygieneStatus } from "@eshg/dental-api";
-import { InputField } from "@eshg/lib-portal/components/formFields/InputField";
-import { FormProps, OptionalFieldValue } from "@eshg/lib-portal/types/form";
-import { Grid } from "@mui/joy";
-import { Formik } from "formik";
-
-import { AdditionalInformation } from "@/lib/businessModules/dental/features/children/details/AdditionalInformation";
-import { FormFooter } from "@/lib/businessModules/schoolEntry/features/procedures/examinations/FormFooter";
-import { FormStack } from "@/lib/shared/components/form/FormStack";
-import { InformationSheet } from "@/lib/shared/components/infoTile/InformationSheet";
-import { PageGrid } from "@/lib/shared/components/page/PageGrid";
-
-export interface ExaminationFormValues {
-  screening: boolean;
-  fluoridation: boolean;
-  note: OptionalFieldValue<string>;
-  oralHygieneStatus?: OptionalFieldValue<ApiOralHygieneStatus>;
-  fluorideVarnishApplied: OptionalFieldValue<boolean>;
-}
-
-export function ExaminationDetails(props: FormProps<ExaminationFormValues>) {
-  return (
-    <Formik
-      initialValues={props.initialValues}
-      onSubmit={props.onSubmit}
-      enableReinitialize
-    >
-      {({ handleSubmit, isSubmitting }) => {
-        return (
-          <FormStack onSubmit={handleSubmit}>
-            <PageGrid>
-              <Grid xxs={12} md={4}>
-                <AdditionalInformation
-                  screening={props.initialValues.screening}
-                  fluoridation={props.initialValues.fluoridation}
-                />
-              </Grid>
-              <Grid xxs={12} md={8}>
-                <InformationSheet>
-                  <InputField type="text" label="Bemerkung" name="note" />
-                </InformationSheet>
-              </Grid>
-            </PageGrid>
-            <FormFooter isSubmitting={isSubmitting} />
-          </FormStack>
-        );
-      }}
-    </Formik>
-  );
-}
diff --git a/employee-portal/src/lib/businessModules/dental/features/children/options.ts b/employee-portal/src/lib/businessModules/dental/features/children/options.ts
deleted file mode 100644
index 495d4d669..000000000
--- a/employee-portal/src/lib/businessModules/dental/features/children/options.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * Copyright 2025 cronn GmbH
- * SPDX-License-Identifier: AGPL-3.0-only
- */
-
-import { ApiOralHygieneStatus } from "@eshg/dental-api";
-import { buildEnumOptions } from "@eshg/lib-portal/helpers/form";
-
-import { ORAL_HYGIENE_STATUS_STATUS } from "@/lib/businessModules/dental/features/children/translations";
-
-export const ORAL_HYGIENE_STATUS_OPTIONS =
-  buildEnumOptions<ApiOralHygieneStatus>(ORAL_HYGIENE_STATUS_STATUS, true);
diff --git a/employee-portal/src/lib/businessModules/dental/features/children/translations.ts b/employee-portal/src/lib/businessModules/dental/features/children/translations.ts
deleted file mode 100644
index 621dbfc60..000000000
--- a/employee-portal/src/lib/businessModules/dental/features/children/translations.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Copyright 2025 cronn GmbH
- * SPDX-License-Identifier: AGPL-3.0-only
- */
-
-import { ApiOralHygieneStatus } from "@eshg/dental-api";
-import { EnumMap } from "@eshg/lib-portal/types/helpers";
-
-export const ORAL_HYGIENE_STATUS_STATUS: EnumMap<ApiOralHygieneStatus> = {
-  [ApiOralHygieneStatus.Excellent]: "Sehr gut",
-  [ApiOralHygieneStatus.Good]: "Gut",
-  [ApiOralHygieneStatus.Poor]: "Schlecht",
-};
diff --git a/employee-portal/src/lib/businessModules/dental/features/examinations/AdditionalInformationFormSection.tsx b/employee-portal/src/lib/businessModules/dental/features/examinations/AdditionalInformationFormSection.tsx
new file mode 100644
index 000000000..cf5decc3f
--- /dev/null
+++ b/employee-portal/src/lib/businessModules/dental/features/examinations/AdditionalInformationFormSection.tsx
@@ -0,0 +1,108 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { ApiOralHygieneStatus } from "@eshg/dental-api";
+import { Alert } from "@eshg/lib-portal/components/Alert";
+import {
+  BooleanSelectField,
+  BooleanSelectFieldProps,
+} from "@eshg/lib-portal/components/formFields/BooleanSelectField";
+import {
+  SelectField,
+  SelectFieldProps,
+} from "@eshg/lib-portal/components/formFields/SelectField";
+import { buildEnumOptions } from "@eshg/lib-portal/helpers/form";
+import { OptionalFieldValue } from "@eshg/lib-portal/types/form";
+import { ReactNode } from "react";
+
+import { DetailsSection } from "@/lib/shared/components/detailsSection/DetailsSection";
+import { InformationSheet } from "@/lib/shared/components/infoTile/InformationSheet";
+
+import { ORAL_HYGIENE_STATUS } from "./translations";
+
+const DEFAULT_COMPONENTS: AdditionalInformationFormComponents = {
+  SelectField,
+  BooleanSelectField,
+};
+
+export const ORAL_HYGIENE_STATUS_OPTIONS =
+  buildEnumOptions<ApiOralHygieneStatus>(ORAL_HYGIENE_STATUS, true);
+
+export interface AdditionalInformationFormValues {
+  oralHygieneStatus?: OptionalFieldValue<ApiOralHygieneStatus>;
+  fluorideVarnishApplied: OptionalFieldValue<boolean>;
+}
+
+export interface AdditionalInformationFormComponents {
+  SelectField: <
+    TMultiple extends boolean = false,
+    TOptionLabel extends string | ReactNode = string,
+  >(
+    props: SelectFieldProps<TMultiple, TOptionLabel>,
+  ) => ReactNode;
+  BooleanSelectField: (props: BooleanSelectFieldProps) => ReactNode;
+}
+
+interface AdditionalInformationFormSectionProps {
+  screening: boolean;
+  fluoridation: boolean;
+  fluoridationConsentGiven?: boolean;
+  components?: AdditionalInformationFormComponents;
+}
+
+export function AdditionalInformationFormSection(
+  props: AdditionalInformationFormSectionProps,
+) {
+  const { screening, fluoridation, fluoridationConsentGiven, components } =
+    props;
+
+  const { SelectField, BooleanSelectField } = components ?? DEFAULT_COMPONENTS;
+
+  return (
+    <InformationSheet>
+      <DetailsSection title="Zusatzinfos">
+        {screening && (
+          <SelectField
+            name="oralHygieneStatus"
+            label="Mundhygienestatus"
+            options={ORAL_HYGIENE_STATUS_OPTIONS}
+          />
+        )}
+        {fluoridation && (
+          <FluoridationField
+            component={BooleanSelectField}
+            fluoridationConsentGiven={fluoridationConsentGiven}
+          />
+        )}
+      </DetailsSection>
+    </InformationSheet>
+  );
+}
+
+interface FluoridationFieldProps {
+  component: AdditionalInformationFormComponents["BooleanSelectField"];
+  fluoridationConsentGiven?: boolean;
+}
+
+function FluoridationField(props: FluoridationFieldProps) {
+  if (!props.fluoridationConsentGiven) {
+    return (
+      <Alert
+        color="warning"
+        message="Keine Einverständniserklärung für die Fluoridierung."
+      />
+    );
+  }
+
+  const FieldComponent = props.component;
+
+  return (
+    <FieldComponent
+      name="fluorideVarnishApplied"
+      label="Fluoridierung"
+      required="Bitte angeben, ob fluoridiert wurde."
+    />
+  );
+}
diff --git a/employee-portal/src/lib/businessModules/dental/features/examinations/ExaminationFormLayout.tsx b/employee-portal/src/lib/businessModules/dental/features/examinations/ExaminationFormLayout.tsx
new file mode 100644
index 000000000..6e5a4f30c
--- /dev/null
+++ b/employee-portal/src/lib/businessModules/dental/features/examinations/ExaminationFormLayout.tsx
@@ -0,0 +1,74 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+"use client";
+
+import { ExaminationResult } from "@eshg/dental/api/models/ExaminationResult";
+import { parseOptionalValue } from "@eshg/lib-portal/helpers/form";
+import { Grid } from "@mui/joy";
+import { ReactNode } from "react";
+
+import { PageGrid } from "@/lib/shared/components/page/PageGrid";
+
+import { AdditionalInformationFormValues } from "./AdditionalInformationFormSection";
+import { NoteFormValues } from "./NoteFormSection";
+
+export interface ExaminationFormValues
+  extends AdditionalInformationFormValues,
+    NoteFormValues {}
+
+interface ExaminationFormLayoutProps {
+  additionalInformation: ReactNode;
+  note: ReactNode;
+}
+
+export function ExaminationFormLayout(props: ExaminationFormLayoutProps) {
+  return (
+    <PageGrid>
+      <Grid xxs={12} md={4}>
+        {props.additionalInformation}
+      </Grid>
+      <Grid xxs={12} md={8}>
+        {props.note}
+      </Grid>
+    </PageGrid>
+  );
+}
+
+export function mapToExaminationFormValues(
+  examinationResult: ExaminationResult | undefined,
+  note: string | undefined,
+): ExaminationFormValues {
+  return {
+    note: parseOptionalValue(note),
+    ...mapExaminationResultFormValues(examinationResult),
+  };
+}
+
+function mapExaminationResultFormValues(
+  examinationResult: ExaminationResult | undefined,
+): AdditionalInformationFormValues {
+  if (examinationResult?.type === "screening") {
+    return {
+      oralHygieneStatus: parseOptionalValue(
+        examinationResult.oralHygieneStatus,
+      ),
+      fluorideVarnishApplied: parseOptionalValue(
+        examinationResult.fluorideVarnishApplied,
+      ),
+    };
+  }
+
+  if (examinationResult?.type === "fluoridation") {
+    return {
+      oralHygieneStatus: "",
+      fluorideVarnishApplied: parseOptionalValue(
+        examinationResult.fluorideVarnishApplied,
+      ),
+    };
+  }
+
+  return { oralHygieneStatus: "", fluorideVarnishApplied: "" };
+}
diff --git a/employee-portal/src/lib/businessModules/dental/features/examinations/NoteFormSection.tsx b/employee-portal/src/lib/businessModules/dental/features/examinations/NoteFormSection.tsx
new file mode 100644
index 000000000..d17564f66
--- /dev/null
+++ b/employee-portal/src/lib/businessModules/dental/features/examinations/NoteFormSection.tsx
@@ -0,0 +1,21 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { InputField } from "@eshg/lib-portal/components/formFields/InputField";
+import { OptionalFieldValue } from "@eshg/lib-portal/types/form";
+
+import { InformationSheet } from "@/lib/shared/components/infoTile/InformationSheet";
+
+export interface NoteFormValues {
+  note: OptionalFieldValue<string>;
+}
+
+export function NoteFormSection() {
+  return (
+    <InformationSheet>
+      <InputField type="text" label="Bemerkung" name="note" />
+    </InformationSheet>
+  );
+}
diff --git a/employee-portal/src/lib/businessModules/dental/features/examinations/translations.ts b/employee-portal/src/lib/businessModules/dental/features/examinations/translations.ts
index 0bb168189..42d96b8b9 100644
--- a/employee-portal/src/lib/businessModules/dental/features/examinations/translations.ts
+++ b/employee-portal/src/lib/businessModules/dental/features/examinations/translations.ts
@@ -3,9 +3,16 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { ApiOralHygieneStatus } from "@eshg/dental-api";
 import { ExaminationStatus } from "@eshg/dental/api/models/ExaminationStatus";
 
 export const EXAMINATION_STATUS: Record<ExaminationStatus, string> = {
   OPEN: "offen",
   CLOSED: "abgeschlossen",
 };
+
+export const ORAL_HYGIENE_STATUS: Record<ApiOralHygieneStatus, string> = {
+  [ApiOralHygieneStatus.Excellent]: "Sehr gut",
+  [ApiOralHygieneStatus.Good]: "Gut",
+  [ApiOralHygieneStatus.Poor]: "Schlecht",
+};
diff --git a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/CreateProphylaxisSessionSidebar.tsx b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/CreateProphylaxisSessionSidebar.tsx
index 341861c0d..caed5316b 100644
--- a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/CreateProphylaxisSessionSidebar.tsx
+++ b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/CreateProphylaxisSessionSidebar.tsx
@@ -60,8 +60,8 @@ export interface CreateProphylaxisSessionValues {
   institution: ApiAddContact200Response | null;
   groupName: OptionalFieldValue<string>;
   type: OptionalFieldValue<ApiProphylaxisType>;
-  screening: boolean;
-  fluoridation: boolean;
+  isScreening: boolean;
+  isFluoridation: boolean;
   fluoridationVarnish: OptionalFieldValue<ApiFluoridationVarnish>;
   dentistIds: string[];
   zfaIds: string[];
@@ -95,8 +95,8 @@ function CreateProphylaxisSessionSidebar(props: SidebarWithFormRefProps) {
         institution: null,
         groupName: "",
         type: "",
-        screening: false,
-        fluoridation: false,
+        isScreening: false,
+        isFluoridation: false,
         fluoridationVarnish: "",
         dentistIds: [],
         zfaIds: [],
@@ -184,7 +184,7 @@ const CreateProphylaxisSessionSidebarForm = forwardRef<
             options={PROPHYLAXIS_TYPE_OPTIONS}
             required="Bitte den Typ der Prophylaxe angeben."
           />
-          <CheckboxField name="screening" label="Reihenuntersuchung" />
+          <CheckboxField name="isScreening" label="Reihenuntersuchung" />
           <FluoridationField />
           <Typography component="h3" level="title-sm">
             Durchführende Personen
@@ -228,8 +228,8 @@ function mapValues(
     institutionId: mapRequiredValue(values.institution)?.id,
     groupName: mapRequiredValue(values.groupName),
     type: mapRequiredValue(values.type),
-    screening: values.screening,
-    fluoridationVarnish: values.fluoridation
+    isScreening: values.isScreening,
+    fluoridationVarnish: values.isFluoridation
       ? mapRequiredValue(values.fluoridationVarnish)
       : undefined,
     dentistIds: values.dentistIds,
diff --git a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/FluoridationField.tsx b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/FluoridationField.tsx
index fe32fef98..5e24c86e2 100644
--- a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/FluoridationField.tsx
+++ b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/FluoridationField.tsx
@@ -11,12 +11,12 @@ import { FLUORIDATION_VARNISH_OPTIONS } from "@/lib/businessModules/dental/featu
 import { CheckboxField } from "@/lib/shared/components/formFields/CheckboxField";
 
 export function FluoridationField() {
-  const [fluoridation] = useField<boolean>("fluoridation");
+  const [isFluoridation] = useField<boolean>("isFluoridation");
 
   return (
     <Stack gap={3}>
-      <CheckboxField name="fluoridation" label="Fluoridierung" />
-      {fluoridation.value && (
+      <CheckboxField name="isFluoridation" label="Fluoridierung" />
+      {isFluoridation.value && (
         <SelectField
           name="fluoridationVarnish"
           label="Lack"
diff --git a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionDetails.tsx b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionDetails.tsx
index 6613b025f..816a2290e 100644
--- a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionDetails.tsx
+++ b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionDetails.tsx
@@ -54,7 +54,7 @@ export function ProphylaxisSessionDetails() {
               />
               <DetailsCell
                 label="Reihenuntersuchung"
-                value={displayBoolean(prophylaxisSession.screening)}
+                value={displayBoolean(prophylaxisSession.isScreening)}
               />
               <DetailsCell
                 label="Teilnehmer"
diff --git a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionExaminationBottomBar.tsx b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionExaminationBottomBar.tsx
deleted file mode 100644
index e9ceac22d..000000000
--- a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionExaminationBottomBar.tsx
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Copyright 2025 cronn GmbH
- * SPDX-License-Identifier: AGPL-3.0-only
- */
-
-import { routes } from "@eshg/dental/shared/routes";
-import { InternalLinkButton } from "@eshg/lib-portal/components/navigation/InternalLinkButton";
-import {
-  KeyboardArrowLeftOutlined,
-  KeyboardArrowRightOutlined,
-} from "@mui/icons-material";
-import { isDefined } from "remeda";
-
-import { StickyBottomButtonBar } from "@/lib/shared/components/buttons/StickyBottomButtonBar";
-
-interface ProphylaxisSessionExaminationBottomBarProps {
-  prophylaxisSessionId: string;
-  previousParticipantIndex?: number;
-  nextParticipantIndex?: number;
-}
-
-export function ProphylaxisSessionExaminationBottomBar(
-  props: ProphylaxisSessionExaminationBottomBarProps,
-) {
-  const {
-    prophylaxisSessionId,
-    previousParticipantIndex,
-    nextParticipantIndex,
-  } = props;
-
-  return (
-    <StickyBottomButtonBar
-      left={
-        <>
-          {isDefined(previousParticipantIndex) && (
-            <InternalLinkButton
-              href={routes.prophylaxisSessions
-                .byId(prophylaxisSessionId)
-                .examinations.byIndex(previousParticipantIndex)}
-              startDecorator={<KeyboardArrowLeftOutlined />}
-              variant="outlined"
-            >
-              Vorheriges Kind
-            </InternalLinkButton>
-          )}
-          <InternalLinkButton
-            href={routes.prophylaxisSessions.byId(prophylaxisSessionId).details}
-            variant="plain"
-          >
-            Zur Übersicht
-          </InternalLinkButton>
-        </>
-      }
-      right={
-        isDefined(nextParticipantIndex) ? (
-          <InternalLinkButton
-            href={routes.prophylaxisSessions
-              .byId(prophylaxisSessionId)
-              .examinations.byIndex(nextParticipantIndex)}
-            endDecorator={<KeyboardArrowRightOutlined />}
-          >
-            Fertig & nächstes Kind
-          </InternalLinkButton>
-        ) : (
-          <InternalLinkButton
-            href={routes.prophylaxisSessions.byId(prophylaxisSessionId).details}
-            endDecorator={<KeyboardArrowRightOutlined />}
-          >
-            Fertig & zur Übersicht
-          </InternalLinkButton>
-        )
-      }
-    />
-  );
-}
diff --git a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionParticipantsTable.tsx b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionParticipantsTable.tsx
index 12542721e..0993924c0 100644
--- a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionParticipantsTable.tsx
+++ b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionParticipantsTable.tsx
@@ -4,11 +4,10 @@
  */
 
 import { ChildExamination } from "@eshg/dental/api/models/ChildExamination";
-import { useUpdateProphylaxisSessionParticipants } from "@eshg/dental/api/mutations/prophylaxisSessionApi";
+import { useDeleteProphylaxisSessionParticipantOptions } from "@eshg/dental/api/mutations/prophylaxisSessionApi";
 import { routes } from "@eshg/dental/shared/routes";
 import { GENDER_VALUES } from "@eshg/lib-portal/components/formFields/constants";
 import { InternalLinkButton } from "@eshg/lib-portal/components/navigation/InternalLinkButton";
-import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
 import { formatDate } from "@eshg/lib-portal/formatters/dateTime";
 import { Add } from "@mui/icons-material";
 import DeleteIcon from "@mui/icons-material/DeleteOutlined";
@@ -72,11 +71,13 @@ export function ProphylaxisSessionParticipantsTable() {
   const setParticipantSorting = useProphylaxisSessionStore(
     (state) => state.setParticipantSorting,
   );
-  const { mutateAsync: updateParticipants } =
-    useUpdateProphylaxisSessionParticipants(prophylaxisSessionId);
   const { openConfirmationDialog } = useConfirmationDialog();
 
-  const snackbar = useSnackbar();
+  const deleteOptions = useDeleteProphylaxisSessionParticipantOptions(
+    prophylaxisSessionId,
+    prophylaxisSessionVersion,
+    allParticipants,
+  );
 
   function handleRemoveParticipant(childExternalId: string) {
     openConfirmationDialog({
@@ -84,21 +85,11 @@ export function ProphylaxisSessionParticipantsTable() {
       title: "Kind entfernen?",
       confirmLabel: "Entfernen",
       description: "Möchten Sie das Kind aus der Prophylaxe entfernen?",
-      onConfirm: async () => {
-        await updateParticipants(
-          {
-            version: prophylaxisSessionVersion,
-            participants: allParticipants
-              .map((childExamination) => childExamination.childId)
-              .filter((id) => id !== childExternalId),
-          },
-          {
-            onSuccess: () => {
-              snackbar.confirmation("Kind erfolgreich entfernt.");
-            },
-          },
-        );
+      onConfirmMutation: {
+        mutationOptions: deleteOptions,
+        variableSupplier: () => childExternalId,
       },
+      onConfirm: () => Promise.resolve(),
     });
   }
 
@@ -151,7 +142,7 @@ export function ProphylaxisSessionParticipantsTable() {
                   />
                   <Divider orientation="vertical" />
                   <ParticipantFilter
-                    name="fluoridationConsent"
+                    name="fluoridationConsentGiven"
                     label="Fluoridierungseinverständnis"
                     filters={FLUORIDATION_CONSENT_FILTERS}
                   />
@@ -182,6 +173,7 @@ export function ProphylaxisSessionParticipantsTable() {
         }}
         sorting={tableControl.tableSorting}
         enableSortingRemoval={false}
+        minWidth={1200}
       />
     </TablePage>
   );
@@ -242,13 +234,13 @@ function columnDefs(
         width: 110,
       },
     }),
-    columnHelper.accessor("fluoridationConsent", {
+    columnHelper.accessor("fluoridationConsentGiven", {
       header: "Fluoridierungseinverständnis",
       cell: (props) => displayBoolean(props.getValue()),
       enableSorting: true,
       meta: {
         canNavigate: { parentRow: true },
-        width: 110,
+        width: 205,
       },
     }),
     columnHelper.accessor("status", {
diff --git a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionsTable.tsx b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionsTable.tsx
index f1e55ece1..181e614b5 100644
--- a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionsTable.tsx
+++ b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionsTable.tsx
@@ -127,7 +127,7 @@ export function ProphylaxisSessionsTable(props: ProphylaxisSessionsTableProps) {
           columns={COLUMNS}
           sorting={tableControl.tableSorting}
           enableSortingRemoval={false}
-          minWidth={500}
+          minWidth={1200}
           rowNavigation={{
             route: (row) =>
               routes.prophylaxisSessions.byId(row.original.id).details,
@@ -183,12 +183,12 @@ const COLUMNS = [
       canNavigate: { parentRow: true },
     },
   }),
-  columnHelper.accessor("screening", {
+  columnHelper.accessor("isScreening", {
     header: "Reihenuntersuchung",
     cell: (props) => displayBoolean(props.getValue()),
     enableSorting: true,
     meta: {
-      width: 120,
+      width: 130,
       canNavigate: { parentRow: true },
     },
   }),
@@ -207,6 +207,6 @@ const SORT_KEY_MAPPING: Record<string, ApiProphylaxisSessionSortKey> = {
   dateAndTime: ApiProphylaxisSessionSortKey.DateAndTime,
   groupName: ApiProphylaxisSessionSortKey.GroupName,
   type: ApiProphylaxisSessionSortKey.Type,
-  screening: ApiProphylaxisSessionSortKey.Screening,
+  isScreening: ApiProphylaxisSessionSortKey.IsScreening,
   fluoridationVarnish: ApiProphylaxisSessionSortKey.FluoridationVarnish,
 };
diff --git a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/ProphylaxisSessionExaminationBottomBar.tsx b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/ProphylaxisSessionExaminationBottomBar.tsx
new file mode 100644
index 000000000..08a2d0959
--- /dev/null
+++ b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/ProphylaxisSessionExaminationBottomBar.tsx
@@ -0,0 +1,67 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import {
+  KeyboardArrowLeftOutlined,
+  KeyboardArrowRightOutlined,
+} from "@mui/icons-material";
+import { Button } from "@mui/joy";
+import { isDefined } from "remeda";
+
+import { StickyBottomButtonBar } from "@/lib/shared/components/buttons/StickyBottomButtonBar";
+
+interface ProphylaxisSessionExaminationBottomBarProps {
+  onPreviousParticipantClicked?: () => void;
+  onNextParticipantClicked?: () => void;
+  onOverviewClicked: () => void;
+}
+
+export function ProphylaxisSessionExaminationBottomBar(
+  props: ProphylaxisSessionExaminationBottomBarProps,
+) {
+  const {
+    onPreviousParticipantClicked,
+    onNextParticipantClicked,
+    onOverviewClicked,
+  } = props;
+
+  return (
+    <StickyBottomButtonBar
+      left={
+        <>
+          {isDefined(onPreviousParticipantClicked) && (
+            <Button
+              startDecorator={<KeyboardArrowLeftOutlined />}
+              variant="outlined"
+              onClick={props.onPreviousParticipantClicked}
+            >
+              Vorheriges Kind
+            </Button>
+          )}
+          <Button variant="plain" onClick={props.onOverviewClicked}>
+            Zur Übersicht
+          </Button>
+        </>
+      }
+      right={
+        isDefined(onNextParticipantClicked) ? (
+          <Button
+            endDecorator={<KeyboardArrowRightOutlined />}
+            onClick={onNextParticipantClicked}
+          >
+            Fertig & nächstes Kind
+          </Button>
+        ) : (
+          <Button
+            endDecorator={<KeyboardArrowRightOutlined />}
+            onClick={onOverviewClicked}
+          >
+            Fertig & zur Übersicht
+          </Button>
+        )
+      }
+    />
+  );
+}
diff --git a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/ProphylaxisSessionExaminationForm.tsx b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/ProphylaxisSessionExaminationForm.tsx
new file mode 100644
index 000000000..d4e74e6b0
--- /dev/null
+++ b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/ProphylaxisSessionExaminationForm.tsx
@@ -0,0 +1,42 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+"use client";
+
+import { FormPlus } from "@eshg/lib-portal/components/form/FormPlus";
+import { RequiresChildren } from "@eshg/lib-portal/types/react";
+import { styled } from "@mui/joy";
+import { FormikProps, FormikProvider } from "formik";
+import { ReactNode } from "react";
+
+import { ExaminationFormValues } from "@/lib/businessModules/dental/features/examinations/ExaminationFormLayout";
+import { MainContentLayout } from "@/lib/shared/components/layout/MainContentLayout";
+
+const FullHeightFormPlus = styled(FormPlus)({
+  display: "flex",
+  flexDirection: "column",
+  height: "100%",
+});
+
+export interface ProphylaxisSessionExaminationFormProps
+  extends RequiresChildren {
+  form: FormikProps<ExaminationFormValues>;
+  bottomBar: ReactNode;
+}
+
+export function ProphylaxisSessionExaminationForm(
+  props: ProphylaxisSessionExaminationFormProps,
+) {
+  return (
+    <FormikProvider value={props.form}>
+      <FullHeightFormPlus>
+        <MainContentLayout fullViewportHeight>
+          {props.children}
+        </MainContentLayout>
+        {props.bottomBar}
+      </FullHeightFormPlus>
+    </FormikProvider>
+  );
+}
diff --git a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionExaminationToolbar.tsx b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/ProphylaxisSessionExaminationToolbar.tsx
similarity index 82%
rename from employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionExaminationToolbar.tsx
rename to employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/ProphylaxisSessionExaminationToolbar.tsx
index e12db2ce1..3e3b3cf98 100644
--- a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/ProphylaxisSessionExaminationToolbar.tsx
+++ b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/ProphylaxisSessionExaminationToolbar.tsx
@@ -10,12 +10,16 @@ import { routes } from "@eshg/dental/shared/routes";
 import { MedicalServicesOutlined } from "@mui/icons-material";
 
 import { PersonToolbarHeader } from "@/lib/shared/components/layout/PersonToolbarHeader";
-import { TabNavigationToolbar } from "@/lib/shared/components/tabNavigationToolbar/TabNavigationToolbar";
+import {
+  BackButton,
+  TabNavigationToolbar,
+} from "@/lib/shared/components/tabNavigationToolbar/TabNavigationToolbar";
 
 interface ProphylaxisSessionExaminationToolbarProps {
   prophylaxisSessionId: string;
   participant: ChildExamination;
   participantIndex: number;
+  onBackClicked: () => void;
 }
 
 export function ProphylaxisSessionExaminationToolbar(
@@ -24,9 +28,7 @@ export function ProphylaxisSessionExaminationToolbar(
   return (
     <TabNavigationToolbar
       header={<PersonToolbarHeader person={props.participant} showAge />}
-      routeBack={
-        routes.prophylaxisSessions.byId(props.prophylaxisSessionId).details
-      }
+      routeBack={<BackButton onClick={props.onBackClicked} />}
       items={[
         {
           tabButtonName: "Untersuchung",
diff --git a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/formComponents.tsx b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/formComponents.tsx
new file mode 100644
index 000000000..509149c67
--- /dev/null
+++ b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/formComponents.tsx
@@ -0,0 +1,42 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import {
+  SoftRequiredBooleanSelectField,
+  SoftRequiredSelectField,
+} from "@eshg/lib-portal/components/form/fieldVariants";
+import { SelectFieldProps } from "@eshg/lib-portal/components/formFields/SelectField";
+import { ReactNode } from "react";
+import { isDefined } from "remeda";
+
+import { AdditionalInformationFormComponents } from "@/lib/businessModules/dental/features/examinations/AdditionalInformationFormSection";
+
+export const ADDITIONAL_INFO_FORM_COMPONENTS: AdditionalInformationFormComponents =
+  {
+    SelectField: <
+      TMultiple extends boolean,
+      TOptionLabel extends string | ReactNode = string,
+    >(
+      props: SelectFieldProps<TMultiple, TOptionLabel>,
+    ) => (
+      <SoftRequiredSelectField<TMultiple, TOptionLabel>
+        {...toSoftRequiredProps(props)}
+      />
+    ),
+    BooleanSelectField: (props) => (
+      <SoftRequiredBooleanSelectField {...toSoftRequiredProps(props)} />
+    ),
+  };
+
+function toSoftRequiredProps<TProps extends { required?: string }>({
+  required,
+  ...props
+}: TProps) {
+  return {
+    ...props,
+    softRequired: isDefined(required),
+    orientation: "vertical",
+  } as const;
+}
diff --git a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/useProphylaxisSessionExaminationForm.ts b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/useProphylaxisSessionExaminationForm.ts
new file mode 100644
index 000000000..0992303a2
--- /dev/null
+++ b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/useProphylaxisSessionExaminationForm.ts
@@ -0,0 +1,64 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { ExaminationResult } from "@eshg/dental/api/models/ExaminationResult";
+import {
+  mapOptionalValue,
+  mapRequiredValue,
+} from "@eshg/lib-portal/helpers/form";
+import { useFormik } from "formik";
+
+import {
+  ExaminationFormValues,
+  mapToExaminationFormValues,
+} from "@/lib/businessModules/dental/features/examinations/ExaminationFormLayout";
+import { useProphylaxisSessionStore } from "@/lib/businessModules/dental/features/prophylaxisSessions/store/ProphylaxisSessionStoreProvider";
+
+interface UseProphylaxisSessionExaminationFormParams {
+  examinationResult: ExaminationResult | undefined;
+  note: string | undefined;
+  onSubmit: (examinationResult: ExaminationResult) => void;
+}
+
+export function useProphylaxisSessionExaminationForm(
+  params: UseProphylaxisSessionExaminationFormParams,
+) {
+  const { examinationResult, note, onSubmit } = params;
+
+  const isScreening = useProphylaxisSessionStore((state) => state.isScreening);
+
+  const examinationForm = useFormik({
+    initialValues: mapToExaminationFormValues(
+      examinationResult,
+      note, // TODO pass actual note
+    ),
+    onSubmit: (formValues: ExaminationFormValues) => {
+      onSubmit(mapToExaminationResult(isScreening, formValues));
+    },
+    enableReinitialize: true,
+  });
+
+  return examinationForm;
+}
+
+function mapToExaminationResult(
+  screening: boolean,
+  formValues: ExaminationFormValues,
+): ExaminationResult {
+  if (screening) {
+    return {
+      type: "screening",
+      oralHygieneStatus: mapOptionalValue(formValues.oralHygieneStatus),
+      fluorideVarnishApplied:
+        mapOptionalValue(formValues.fluorideVarnishApplied) ?? false,
+    };
+  }
+
+  // TODO: Remove when fluoridation only examination is handled without form
+  return {
+    type: "fluoridation",
+    fluorideVarnishApplied: mapRequiredValue(formValues.fluorideVarnishApplied),
+  };
+}
diff --git a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/useProphylaxisSessionExaminationNavigation.ts b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/useProphylaxisSessionExaminationNavigation.ts
new file mode 100644
index 000000000..b73b28500
--- /dev/null
+++ b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/examination/useProphylaxisSessionExaminationNavigation.ts
@@ -0,0 +1,55 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { routes } from "@eshg/dental/shared/routes";
+
+import { useProphylaxisSessionStore } from "@/lib/businessModules/dental/features/prophylaxisSessions/store/ProphylaxisSessionStoreProvider";
+
+interface UseParticipantNavigationResult {
+  gotoPreviousParticipant?: () => void;
+  gotoNextParticipant?: () => void;
+  gotoOverview: () => void;
+}
+
+interface UseParticipantNavigationParams {
+  participantIndex: number;
+  participantsLength: number;
+  onNavigate: (route: string) => void;
+}
+
+export function useProphylaxisSessionExaminationNavigation(
+  params: UseParticipantNavigationParams,
+): UseParticipantNavigationResult {
+  const { participantIndex, participantsLength, onNavigate } = params;
+
+  const prophylaxisSessionId = useProphylaxisSessionStore((state) => state.id);
+
+  function examinationRoute(participantIndex: number) {
+    return routes.prophylaxisSessions
+      .byId(prophylaxisSessionId)
+      .examinations.byIndex(participantIndex);
+  }
+
+  const gotoPreviousParticipant =
+    participantIndex > 0
+      ? () => onNavigate(examinationRoute(participantIndex - 1))
+      : undefined;
+
+  const nextParticipantIndex = participantIndex + 1;
+  const gotoNextParticipant =
+    nextParticipantIndex < participantsLength
+      ? () => onNavigate(examinationRoute(nextParticipantIndex))
+      : undefined;
+
+  function gotoOverview() {
+    onNavigate(routes.prophylaxisSessions.byId(prophylaxisSessionId).details);
+  }
+
+  return {
+    gotoPreviousParticipant,
+    gotoNextParticipant,
+    gotoOverview,
+  };
+}
diff --git a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/store/participantFilters.ts b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/store/participantFilters.ts
index 145148f3c..774a0c4cc 100644
--- a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/store/participantFilters.ts
+++ b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/store/participantFilters.ts
@@ -7,7 +7,7 @@ import { ChildExamination } from "@eshg/dental/api/models/ChildExamination";
 
 export interface ParticipantFilters {
   gender: GenderFilter;
-  fluoridationConsent: FluoridationConsentFilter;
+  fluoridationConsentGiven: FluoridationConsentFilter;
 }
 
 export type GenderFilter = "MALE" | "FEMALE" | "ANY";
@@ -20,7 +20,7 @@ export function filterParticipants(
   return participants.filter(
     (participant) =>
       matchesGender(participant, filters.gender) &&
-      matchesFluoridationConsent(participant, filters.fluoridationConsent),
+      matchesFluoridationConsent(participant, filters.fluoridationConsentGiven),
   );
 }
 
@@ -44,5 +44,5 @@ function matchesFluoridationConsent(
   }
 
   const requiresConsent = filter === "YES";
-  return participant.fluoridationConsent === requiresConsent;
+  return participant.fluoridationConsentGiven === requiresConsent;
 }
diff --git a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/store/participantSorting.ts b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/store/participantSorting.ts
index 42464b16d..ab190f2bd 100644
--- a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/store/participantSorting.ts
+++ b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/store/participantSorting.ts
@@ -17,7 +17,7 @@ export interface ParticipantSorting {
 
 export type ParticipantSortKey = keyof Omit<
   ChildExamination,
-  "childId" | "examinationResult"
+  "childId" | "result" | "note"
 >;
 export type ParticipantSortDirection = "asc" | "desc";
 
@@ -68,7 +68,7 @@ function compareBy(
     switch (sortKey) {
       case "dateOfBirth":
         return b.dateOfBirth.getDate() - a.dateOfBirth.getDate();
-      case "fluoridationConsent":
+      case "fluoridationConsentGiven":
         return compareFluoridation(a, b, sortDirection);
       case "gender":
         return compareGender(a, b, sortDirection);
@@ -85,8 +85,8 @@ function compareFluoridation(
   b: ChildExamination,
   sortDirection: ParticipantSortDirection,
 ): number {
-  const aValue = displayBoolean(a.fluoridationConsent);
-  const bValue = displayBoolean(b.fluoridationConsent);
+  const aValue = displayBoolean(a.fluoridationConsentGiven);
+  const bValue = displayBoolean(b.fluoridationConsentGiven);
 
   return compareAndSortEmptyStringToEnd(aValue, bValue, sortDirection);
 }
diff --git a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/store/prophylaxisSessionStore.ts b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/store/prophylaxisSessionStore.ts
index 64280cb3a..907ad84fb 100644
--- a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/store/prophylaxisSessionStore.ts
+++ b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/store/prophylaxisSessionStore.ts
@@ -3,11 +3,13 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { ExaminationResult } from "@eshg/dental/api/models/ExaminationResult";
 import { ProphylaxisSessionDetails } from "@eshg/dental/api/models/ProphylaxisSessionDetails";
 import { createStore } from "zustand";
 
 import { ParticipantFilters } from "./participantFilters";
 import { ParticipantSorting } from "./participantSorting";
+import { replaceExaminationResult } from "./replaceExaminationResult";
 
 export interface ProphylaxisSessionState extends ProphylaxisSessionDetails {
   participantFilters: ParticipantFilters;
@@ -17,6 +19,10 @@ export interface ProphylaxisSessionState extends ProphylaxisSessionDetails {
 export interface ProphylaxisSessionActions {
   setParticipantFilters: (filtersChange: Partial<ParticipantFilters>) => void;
   setParticipantSorting: (sorting: ParticipantSorting) => void;
+  setExaminationResult: (
+    participantId: string,
+    examinationResult: ExaminationResult,
+  ) => void;
 }
 
 export type ProphylaxisSessionStore = ProphylaxisSessionState &
@@ -24,7 +30,7 @@ export type ProphylaxisSessionStore = ProphylaxisSessionState &
 
 const initialFilters: ParticipantFilters = {
   gender: "ANY",
-  fluoridationConsent: "ANY",
+  fluoridationConsentGiven: "ANY",
 };
 
 const initialSorting: ParticipantSorting = {
@@ -59,5 +65,16 @@ export function createProphylaxisSessionStore(
       set({
         participantSorting,
       }),
+    setExaminationResult: (
+      participantId: string,
+      examinationResult: ExaminationResult,
+    ) =>
+      set((state) => ({
+        participants: replaceExaminationResult(
+          participantId,
+          examinationResult,
+          state.participants,
+        ),
+      })),
   }));
 }
diff --git a/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/store/replaceExaminationResult.ts b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/store/replaceExaminationResult.ts
new file mode 100644
index 000000000..bbd050919
--- /dev/null
+++ b/employee-portal/src/lib/businessModules/dental/features/prophylaxisSessions/store/replaceExaminationResult.ts
@@ -0,0 +1,24 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { ChildExamination } from "@eshg/dental/api/models/ChildExamination";
+import { ExaminationResult } from "@eshg/dental/api/models/ExaminationResult";
+
+export function replaceExaminationResult(
+  participantId: string,
+  examinationResult: ExaminationResult,
+  participants: ChildExamination[],
+): ChildExamination[] {
+  return participants.map((participant) => {
+    if (participant.childId !== participantId) {
+      return participant;
+    }
+
+    return {
+      ...participant,
+      result: examinationResult,
+    };
+  });
+}
diff --git a/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/EmployeeInformationForm.tsx b/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/EmployeeInformationForm.tsx
index 5ebe5a980..762eaa039 100644
--- a/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/EmployeeInformationForm.tsx
+++ b/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/EmployeeInformationForm.tsx
@@ -3,27 +3,32 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { EmployeeInformationFormValues } from "@eshg/lib-portal/businessModules/medicalRegistry/medicalRegistryCreateProcedureFormValues";
+import {
+  EmployeeInformationFormValues,
+  MedicalRegistryCreateProcedureFormValues,
+} from "@eshg/lib-portal/businessModules/medicalRegistry/medicalRegistryCreateProcedureFormValues";
 import { BooleanRadioField } from "@eshg/lib-portal/components/formFields/BooleanRadioField";
 import { FileType } from "@eshg/lib-portal/components/formFields/file/FileType";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
 import { validateFile } from "@eshg/lib-portal/helpers/validators";
 import { NestedFormProps } from "@eshg/lib-portal/types/form";
 import { Grid, Typography } from "@mui/joy";
-import { useField } from "formik";
+import { useFormikContext } from "formik";
 
 import { useServerConfig } from "@/lib/baseModule/api/queries/config";
 import { requiredFieldMessage } from "@/lib/businessModules/medicalRegistry/components/procedures/create/MedicalRegistryCreateProcedureForm";
 import { FileField } from "@/lib/shared/components/formFields/file/FileField";
 
 export function EmployeeInformationForm(props: NestedFormProps) {
+  const values =
+    useFormikContext<MedicalRegistryCreateProcedureFormValues>().values;
   const { data: config } = useServerConfig();
 
   const fieldName = createFieldNameMapper<EmployeeInformationFormValues>(
     props.name,
   );
 
-  const [employeesEmployed] = useField<boolean>(fieldName("employeesEmployed"));
+  const employeesEmployed = values.employeeInformationForm.employeesEmployed;
 
   return (
     <>
@@ -37,7 +42,7 @@ export function EmployeeInformationForm(props: NestedFormProps) {
         />
       </Grid>
 
-      {employeesEmployed.value && (
+      {employeesEmployed && (
         <>
           <Grid xxs={6}>
             <Typography level="body-md">
diff --git a/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/OccupationalInformationForm.tsx b/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/OccupationalInformationForm.tsx
index 390598ab1..13db5a6fc 100644
--- a/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/OccupationalInformationForm.tsx
+++ b/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/OccupationalInformationForm.tsx
@@ -3,8 +3,12 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { ApiTypeOfChange } from "@eshg/employee-portal-api/medicalRegistry";
 import { professionalTitleNames } from "@eshg/lib-portal/businessModules/medicalRegistry/constants";
-import { OccupationalInformationFormValues } from "@eshg/lib-portal/businessModules/medicalRegistry/medicalRegistryCreateProcedureFormValues";
+import {
+  MedicalRegistryCreateProcedureFormValues,
+  OccupationalInformationFormValues,
+} from "@eshg/lib-portal/businessModules/medicalRegistry/medicalRegistryCreateProcedureFormValues";
 import { lifetimeDoctorNumberValidator } from "@eshg/lib-portal/businessModules/medicalRegistry/validator";
 import { DateField } from "@eshg/lib-portal/components/formFields/DateField";
 import { InputField } from "@eshg/lib-portal/components/formFields/InputField";
@@ -13,16 +17,26 @@ import {
   buildEnumOptions,
   createFieldNameMapper,
 } from "@eshg/lib-portal/helpers/form";
+import {
+  validateLength,
+  validatePastOrTodayDate,
+} from "@eshg/lib-portal/helpers/validators";
 import { NestedFormProps } from "@eshg/lib-portal/types/form";
 import { Grid, Typography } from "@mui/joy";
+import { useFormikContext } from "formik";
 
 import { requiredFieldMessage } from "@/lib/businessModules/medicalRegistry/components/procedures/create/MedicalRegistryCreateProcedureForm";
 
 export function OccupationalInformationForm(props: NestedFormProps) {
+  const values =
+    useFormikContext<MedicalRegistryCreateProcedureFormValues>().values;
+
   const fieldName = createFieldNameMapper<OccupationalInformationFormValues>(
     props.name,
   );
 
+  const changeType = values.generalInformationForm.changeType;
+
   return (
     <>
       <Grid xxs={12}>
@@ -41,7 +55,11 @@ export function OccupationalInformationForm(props: NestedFormProps) {
       <Grid xxl={6} />
 
       <Grid xxs={6}>
-        <InputField name={fieldName("fieldOfExpertise")} label="Fachgebiet" />
+        <InputField
+          name={fieldName("fieldOfExpertise")}
+          label="Fachgebiet"
+          validate={validateLength(1, 100)}
+        />
       </Grid>
       <Grid xxl={6} />
 
@@ -49,12 +67,17 @@ export function OccupationalInformationForm(props: NestedFormProps) {
         <InputField
           name={fieldName("specialistTitle")}
           label="Facharztbezeichnung"
+          validate={validateLength(1, 100)}
         />
       </Grid>
       <Grid xxl={6} />
 
       <Grid xxs={6}>
-        <InputField name={fieldName("furtherTraining")} label="Weiterbildung" />
+        <InputField
+          name={fieldName("furtherTraining")}
+          label="Weiterbildung"
+          validate={validateLength(1, 300)}
+        />
       </Grid>
       <Grid xxl={6} />
 
@@ -67,7 +90,13 @@ export function OccupationalInformationForm(props: NestedFormProps) {
         <DateField
           name={fieldName("approbationGrantedOn")}
           label="Erlaubnis / Approbation erteilt am"
-          required={requiredFieldMessage}
+          required={
+            changeType === ApiTypeOfChange.NewRegistration ||
+            changeType === ApiTypeOfChange.ReRegistration
+              ? requiredFieldMessage
+              : undefined
+          }
+          validate={validatePastOrTodayDate}
         />
       </Grid>
       <Grid xxl={6} />
@@ -77,6 +106,7 @@ export function OccupationalInformationForm(props: NestedFormProps) {
           name={fieldName("approbationIssuingAuthority")}
           label="Ausstellungsbehörde"
           required={requiredFieldMessage}
+          validate={validateLength(1, 100)}
         />
       </Grid>
       <Grid xxl={6} />
diff --git a/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/PersonalInformationForm.tsx b/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/PersonalInformationForm.tsx
index 41065e197..0efc847e4 100644
--- a/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/PersonalInformationForm.tsx
+++ b/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/PersonalInformationForm.tsx
@@ -3,7 +3,11 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { PersonalInformationFormValues } from "@eshg/lib-portal/businessModules/medicalRegistry/medicalRegistryCreateProcedureFormValues";
+import { ApiTypeOfChange } from "@eshg/employee-portal-api/medicalRegistry";
+import {
+  MedicalRegistryCreateProcedureFormValues,
+  PersonalInformationFormValues,
+} from "@eshg/lib-portal/businessModules/medicalRegistry/medicalRegistryCreateProcedureFormValues";
 import { DateField } from "@eshg/lib-portal/components/formFields/DateField";
 import { EmailField } from "@eshg/lib-portal/components/formFields/EmailField";
 import { InputField } from "@eshg/lib-portal/components/formFields/InputField";
@@ -11,18 +15,27 @@ import { PhoneNumberField } from "@eshg/lib-portal/components/formFields/PhoneNu
 import { SelectField } from "@eshg/lib-portal/components/formFields/SelectField";
 import { GENDER_OPTIONS } from "@eshg/lib-portal/components/formFields/constants";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
-import { validateLength } from "@eshg/lib-portal/helpers/validators";
+import {
+  validateLength,
+  validatePastOrTodayDate,
+} from "@eshg/lib-portal/helpers/validators";
 import { NestedFormProps } from "@eshg/lib-portal/types/form";
 import { Grid, Typography } from "@mui/joy";
+import { useFormikContext } from "formik";
 
 import { requiredFieldMessage } from "@/lib/businessModules/medicalRegistry/components/procedures/create/MedicalRegistryCreateProcedureForm";
 import { CountryField } from "@/lib/shared/components/formFields/CountryField";
 
 export function PersonalInformationForm(props: NestedFormProps) {
+  const values =
+    useFormikContext<MedicalRegistryCreateProcedureFormValues>().values;
+
   const fieldName = createFieldNameMapper<PersonalInformationFormValues>(
     props.name,
   );
 
+  const changeType = values.generalInformationForm.changeType;
+
   return (
     <>
       <Grid xxs={12}>
@@ -61,6 +74,11 @@ export function PersonalInformationForm(props: NestedFormProps) {
           name={fieldName("birthName")}
           label={"Geburtsname"}
           validate={validateLength(1, 40)}
+          required={
+            changeType === ApiTypeOfChange.ChangeOfName
+              ? requiredFieldMessage
+              : undefined
+          }
         />
       </Grid>
       <Grid xxl={6} />
@@ -131,7 +149,11 @@ export function PersonalInformationForm(props: NestedFormProps) {
       <Grid xxl={6} />
 
       <Grid xxs={6}>
-        <EmailField name={fieldName("email")} label={"E-Mail-Adresse"} />
+        <EmailField
+          name={fieldName("email")}
+          label={"E-Mail-Adresse"}
+          validate={validateLength(1, 254)}
+        />
       </Grid>
       <Grid xxl={6} />
 
@@ -140,6 +162,7 @@ export function PersonalInformationForm(props: NestedFormProps) {
           name={fieldName("birthDate")}
           label={"Geburtsdatum"}
           required={requiredFieldMessage}
+          validate={validatePastOrTodayDate}
         />
       </Grid>
       <Grid xxs={6} xxl={4}>
diff --git a/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/PracticeInformationForm.tsx b/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/PracticeInformationForm.tsx
index b02b3be70..cd14dfd49 100644
--- a/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/PracticeInformationForm.tsx
+++ b/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/PracticeInformationForm.tsx
@@ -3,7 +3,10 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { PracticeInformationFormValues } from "@eshg/lib-portal/businessModules/medicalRegistry/medicalRegistryCreateProcedureFormValues";
+import {
+  MedicalRegistryCreateProcedureFormValues,
+  PracticeInformationFormValues,
+} from "@eshg/lib-portal/businessModules/medicalRegistry/medicalRegistryCreateProcedureFormValues";
 import { Alert } from "@eshg/lib-portal/components/Alert";
 import { BooleanRadioField } from "@eshg/lib-portal/components/formFields/BooleanRadioField";
 import { EmailField } from "@eshg/lib-portal/components/formFields/EmailField";
@@ -15,7 +18,7 @@ import {
 } from "@eshg/lib-portal/helpers/validators";
 import { NestedFormProps } from "@eshg/lib-portal/types/form";
 import { Grid, Typography } from "@mui/joy";
-import { useField } from "formik";
+import { useFormikContext } from "formik";
 
 import { requiredFieldMessage } from "@/lib/businessModules/medicalRegistry/components/procedures/create/MedicalRegistryCreateProcedureForm";
 
@@ -24,12 +27,15 @@ interface PracticeInformationFormProps extends NestedFormProps {
 }
 
 export function PracticeInformationForm(props: PracticeInformationFormProps) {
+  const values =
+    useFormikContext<MedicalRegistryCreateProcedureFormValues>().values;
+
   const fieldName = createFieldNameMapper<PracticeInformationFormValues>(
     props.name,
   );
-  const [proprietaryPractice] = useField<boolean>(
-    fieldName("proprietaryPractice"),
-  );
+
+  const proprietaryPractice =
+    values.practiceInformationForm.proprietaryPractice;
 
   return (
     <>
@@ -55,7 +61,7 @@ export function PracticeInformationForm(props: PracticeInformationFormProps) {
         </Grid>
       )}
 
-      {(props.forceProprietaryPractice || proprietaryPractice.value) && (
+      {(props.forceProprietaryPractice || proprietaryPractice) && (
         <>
           <Grid xxs={6}>
             <InputField
@@ -118,6 +124,7 @@ export function PracticeInformationForm(props: PracticeInformationFormProps) {
               name={fieldName("email")}
               label={"Email"}
               required={requiredFieldMessage}
+              validate={validateLength(1, 254)}
             />
           </Grid>
           <Grid xxl={6} />
diff --git a/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/RequiredDocumentsForm.tsx b/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/RequiredDocumentsForm.tsx
index 4a6e59cb0..fbbeccc84 100644
--- a/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/RequiredDocumentsForm.tsx
+++ b/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/create/RequiredDocumentsForm.tsx
@@ -4,8 +4,9 @@
  */
 
 import { ApiCountryCode } from "@eshg/base-api";
+import { ApiTypeOfChange } from "@eshg/employee-portal-api/medicalRegistry";
 import {
-  PersonalInformationFormValues,
+  MedicalRegistryCreateProcedureFormValues,
   RequiredDocumentsFormValues,
 } from "@eshg/lib-portal/businessModules/medicalRegistry/medicalRegistryCreateProcedureFormValues";
 import { FileType } from "@eshg/lib-portal/components/formFields/file/FileType";
@@ -14,7 +15,7 @@ import { validateFile } from "@eshg/lib-portal/helpers/validators";
 import { NestedFormProps } from "@eshg/lib-portal/types/form";
 import { Add, DeleteOutlined } from "@mui/icons-material";
 import { Button, Grid, IconButton, Stack, Typography } from "@mui/joy";
-import { FieldArray, useField } from "formik";
+import { FieldArray, useFormikContext } from "formik";
 import { Fragment } from "react";
 
 import { useServerConfig } from "@/lib/baseModule/api/queries/config";
@@ -28,24 +29,19 @@ interface RequiredDocumentsFormProps extends NestedFormProps {
 }
 
 export function RequiredDocumentsForm(props: RequiredDocumentsFormProps) {
+  const values =
+    useFormikContext<MedicalRegistryCreateProcedureFormValues>().values;
+
   const { data: config } = useServerConfig();
 
   const fieldName = createFieldNameMapper<RequiredDocumentsFormValues>(
     props.name,
   );
 
-  const [otherRelevantDocuments] = useField<File[]>(
-    fieldName("otherRelevantDocuments"),
-  );
-
-  const personalInformationFormFieldName =
-    createFieldNameMapper<PersonalInformationFormValues>(
-      "personalInformationForm",
-    );
-
-  const [nationality] = useField<ApiCountryCode>(
-    personalInformationFormFieldName("nationality"),
-  );
+  const otherRelevantDocuments =
+    values.requiredDocumentsForm.otherRelevantDocuments;
+  const nationality = values.personalInformationForm.nationality;
+  const changeType = values.generalInformationForm.changeType;
 
   return (
     <>
@@ -66,6 +62,12 @@ export function RequiredDocumentsForm(props: RequiredDocumentsFormProps) {
                 FileType.Jpeg.extensions,
                 config.maxFileSize,
               )}
+              required={
+                changeType === ApiTypeOfChange.NewRegistration ||
+                changeType === ApiTypeOfChange.ReRegistration
+                  ? requiredFieldMessage
+                  : undefined
+              }
             />
           </Grid>
           <Grid xxl={6} />
@@ -83,80 +85,76 @@ export function RequiredDocumentsForm(props: RequiredDocumentsFormProps) {
       </Grid>
       <Grid xxl={6} />
 
-      {props.enableOptionalDocuments &&
-        nationality.value !== ApiCountryCode.De && (
+      {props.enableOptionalDocuments && nationality !== ApiCountryCode.De && (
+        <>
+          <Grid xxs={6}>
+            <FileField
+              name={fieldName("workPermit")}
+              label={"Arbeitserlaubnis als JPG hochladen"}
+              accept={FileType.Jpeg}
+              required={requiredFieldMessage}
+              validate={validateFile(
+                FileType.Jpeg.extensions,
+                config.maxFileSize,
+              )}
+            />
+          </Grid>
+          <Grid xxl={6} />
+        </>
+      )}
+
+      <FieldArray name={fieldName("otherRelevantDocuments")}>
+        {({ push, remove }) => (
           <>
+            {otherRelevantDocuments.map((values, index) => (
+              <Fragment key={index}>
+                <Grid xxs={6}>
+                  <Stack
+                    direction="row"
+                    gap={2}
+                    alignItems="flex-start"
+                    sx={{
+                      ">:first-child": { flexGrow: 1 },
+                    }}
+                  >
+                    <FileField
+                      name={`requiredDocumentsForm.otherRelevantDocuments.${index}`}
+                      label={"Sonstiges Dokument als JPG hochladen"}
+                      accept={FileType.Jpeg}
+                      required={requiredFieldMessage}
+                      validate={validateFile(
+                        FileType.Jpeg.extensions,
+                        config.maxFileSize,
+                      )}
+                    />
+                    <IconButton
+                      aria-label="Dokument löschen"
+                      color="neutral"
+                      variant="outlined"
+                      sx={{
+                        marginTop: "27px",
+                        "--Icon-fontSize": (theme) => theme.fontSize.xl,
+                      }}
+                      onClick={() => remove(index)}
+                    >
+                      <DeleteOutlined />
+                    </IconButton>
+                  </Stack>
+                </Grid>
+                <Grid xxl={6} />
+              </Fragment>
+            ))}
             <Grid xxs={6}>
-              <FileField
-                name={fieldName("workPermit")}
-                label={"Arbeitserlaubnis als JPG hochladen"}
-                accept={FileType.Jpeg}
-                required={requiredFieldMessage}
-                validate={validateFile(
-                  FileType.Jpeg.extensions,
-                  config.maxFileSize,
-                )}
-              />
+              {otherRelevantDocuments.length < MAX_OTHER_RELEVANT_DOCUMENTS && (
+                <Button onClick={() => push(null)} startDecorator={<Add />}>
+                  Weiteres Dokument hinzufügen
+                </Button>
+              )}
             </Grid>
             <Grid xxl={6} />
           </>
         )}
-
-      {props.enableOptionalDocuments && (
-        <FieldArray name={fieldName("otherRelevantDocuments")}>
-          {({ push, remove }) => (
-            <>
-              {otherRelevantDocuments.value.map((values, index) => (
-                <Fragment key={index}>
-                  <Grid xxs={6}>
-                    <Stack
-                      direction="row"
-                      gap={2}
-                      alignItems="flex-start"
-                      sx={{
-                        ">:first-child": { flexGrow: 1 },
-                      }}
-                    >
-                      <FileField
-                        name={`requiredDocumentsForm.otherRelevantDocuments.${index}`}
-                        label={"Sonstiges Dokument als JPG hochladen"}
-                        accept={FileType.Jpeg}
-                        required={requiredFieldMessage}
-                        validate={validateFile(
-                          FileType.Jpeg.extensions,
-                          config.maxFileSize,
-                        )}
-                      />
-                      <IconButton
-                        aria-label="Dokument löschen"
-                        color="neutral"
-                        variant="outlined"
-                        sx={{
-                          marginTop: "27px",
-                          "--Icon-fontSize": (theme) => theme.fontSize.xl,
-                        }}
-                        onClick={() => remove(index)}
-                      >
-                        <DeleteOutlined />
-                      </IconButton>
-                    </Stack>
-                  </Grid>
-                  <Grid xxl={6} />
-                </Fragment>
-              ))}
-              <Grid xxs={6}>
-                {otherRelevantDocuments.value.length <
-                  MAX_OTHER_RELEVANT_DOCUMENTS && (
-                  <Button onClick={() => push(null)} startDecorator={<Add />}>
-                    Weiteres Dokument hinzufügen
-                  </Button>
-                )}
-              </Grid>
-              <Grid xxl={6} />
-            </>
-          )}
-        </FieldArray>
-      )}
+      </FieldArray>
     </>
   );
 }
diff --git a/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/details/MedicalRegistryProcedureDetails.tsx b/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/details/MedicalRegistryProcedureDetails.tsx
index 2069442a9..a19a4e3bb 100644
--- a/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/details/MedicalRegistryProcedureDetails.tsx
+++ b/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/details/MedicalRegistryProcedureDetails.tsx
@@ -80,14 +80,14 @@ function useDraftAlerts(procedure: ApiGetProcedure200Response) {
     open: procedureType === ApiMedicalRegistryEntryProcedureType.CitizenDraft,
     type: "error",
     message:
-      "Dieser Entwurf kommt aus einer externen Quelle. Bitte kontrollieren Sie die Daten, bevor Sie den Eintrag anlegen.",
+      "Dieser Entwurf kommt aus einer externen Quelle. Bitte kontrollieren Sie die Daten, bevor Sie den Entwurf übernehmen.",
   });
 
   useControlledAlert({
     open: procedureType === ApiMedicalRegistryEntryProcedureType.EmployeeDraft,
     type: "warning",
     message:
-      "Bitte kontrollieren Sie die Daten, bevor Sie den Eintrag anlegen.",
+      "Bitte kontrollieren Sie die Daten, bevor Sie den Entwurf übernehmen.",
   });
 }
 
@@ -104,7 +104,10 @@ function DraftActions({
     openConfirmationDialog({
       color: "danger",
       title: "Wollen Sie den Entwurf wirklich verwerfen?",
-      description: "Die Aktion kann nicht rückgängig gemacht werden.",
+      description:
+        "Die Aktion kann nicht rückgängig gemacht werden. \
+        Bitte informieren Sie ggf. den Antragsteller darüber, dass der Antrag \
+        verworfen wurde.",
       confirmLabel: "Verwerfen",
       onConfirm: () => {
         deleteDraftProcedure.mutate(
diff --git a/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/details/PracticesDetailsSection.tsx b/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/details/PracticesDetailsSection.tsx
index f91bb4940..149a9fdf1 100644
--- a/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/details/PracticesDetailsSection.tsx
+++ b/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/details/PracticesDetailsSection.tsx
@@ -14,7 +14,10 @@ import { isDefined } from "remeda";
 
 import { ContactData } from "@/lib/businessModules/medicalRegistry/components/procedures/details/ContactData";
 import { ResponsiveDivider } from "@/lib/shared/components/ResponsiveDivider";
-import { DetailsCell } from "@/lib/shared/components/detailsSection/DetailsCell";
+import {
+  DetailsCell,
+  DetailsCellWrapped,
+} from "@/lib/shared/components/detailsSection/DetailsCell";
 import { DetailsColumn } from "@/lib/shared/components/detailsSection/DetailsColumn";
 import { DetailsRow } from "@/lib/shared/components/detailsSection/DetailsRow";
 import { DetailsSection } from "@/lib/shared/components/detailsSection/DetailsSection";
@@ -86,19 +89,19 @@ function PracticeDetails({
           divider={<ResponsiveDivider breakpoint="md" />}
         >
           <DetailsColumn sx={COLUMN_STYLE}>
-            <DetailsCell label={"Name"} value={practice.name} />
+            <DetailsCellWrapped label={"Name"} value={practice.name} />
             {isDefined(address) && (
               <>
-                <DetailsCell
+                <DetailsCellWrapped
                   label={PRACTICE_FIELD_NAME.streetAndHouseNumber}
                   value={streetAndHouseNumber(address)}
                 />
                 <DetailsRow>
-                  <DetailsCell
+                  <DetailsCellWrapped
                     label={PRACTICE_FIELD_NAME.postalCode}
                     value={address.postalCode}
                   />
-                  <DetailsCell
+                  <DetailsCellWrapped
                     label={PRACTICE_FIELD_NAME.city}
                     value={address.city}
                     avoidWrap
@@ -109,23 +112,23 @@ function PracticeDetails({
           </DetailsColumn>
           {hasContactData && (
             <DetailsColumn sx={COLUMN_STYLE}>
-              <DetailsCell
+              <DetailsCellWrapped
                 label={PRACTICE_FIELD_NAME.openingHours}
                 value={practice.openingHours}
               />
               <ContactData subject={practice} />
-              <DetailsCell
+              <DetailsCellWrapped
                 label={PRACTICE_FIELD_NAME.website}
                 value={practice.website}
               />
             </DetailsColumn>
           )}
           <DetailsColumn sx={COLUMN_STYLE}>
-            <DetailsCell
+            <DetailsCellWrapped
               label={PRACTICE_FIELD_NAME.institutionIdentifier}
               value={practice.institutionIdentifier}
             />
-            <DetailsCell
+            <DetailsCellWrapped
               label={PRACTICE_FIELD_NAME.establishmentNumber}
               value={practice.establishmentNumber}
             />
diff --git a/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/details/ProfessionalDetailsSection.tsx b/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/details/ProfessionalDetailsSection.tsx
index c31b9974f..ba99ab39f 100644
--- a/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/details/ProfessionalDetailsSection.tsx
+++ b/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/details/ProfessionalDetailsSection.tsx
@@ -18,7 +18,10 @@ import { isDefined } from "remeda";
 import { ContactData } from "@/lib/businessModules/medicalRegistry/components/procedures/details/ContactData";
 import { GENDER_VALUES } from "@/lib/businessModules/stiProtection/shared/constants";
 import { ResponsiveDivider } from "@/lib/shared/components/ResponsiveDivider";
-import { DetailsCell } from "@/lib/shared/components/detailsSection/DetailsCell";
+import {
+  DetailsCell,
+  DetailsCellWrapped,
+} from "@/lib/shared/components/detailsSection/DetailsCell";
 import { DetailsColumn } from "@/lib/shared/components/detailsSection/DetailsColumn";
 import { DetailsRow } from "@/lib/shared/components/detailsSection/DetailsRow";
 import { DetailsSection } from "@/lib/shared/components/detailsSection/DetailsSection";
@@ -66,33 +69,33 @@ export function ProfessionalDetailsSection({
           <DetailsColumn>
             <DetailsRow>
               {isDefined(applicant.title) && (
-                <DetailsCell
+                <DetailsCellWrapped
                   label={PROFESSIONAL_FIELD_NAME.title}
                   value={applicant.title}
                 />
               )}
-              <DetailsCell
+              <DetailsCellWrapped
                 label={PROFESSIONAL_FIELD_NAME.firstName}
                 value={applicant.firstName}
               />
-              <DetailsCell
+              <DetailsCellWrapped
                 label={PROFESSIONAL_FIELD_NAME.lastName}
                 value={applicant.lastName}
               />
             </DetailsRow>
             {isDefined(applicant.nameAtBirth) && (
-              <DetailsCell
+              <DetailsCellWrapped
                 label={PROFESSIONAL_FIELD_NAME.nameAtBirth}
                 value={applicant.nameAtBirth}
               />
             )}
             <DetailsRow>
-              <DetailsCell
+              <DetailsCellWrapped
                 label={PROFESSIONAL_FIELD_NAME.dateOfBirth}
                 value={formatDate(applicant.dateOfBirth)}
               />
               {isDefined(applicant.placeOfBirth) && (
-                <DetailsCell
+                <DetailsCellWrapped
                   label={PROFESSIONAL_FIELD_NAME.placeOfBirth}
                   value={applicant.placeOfBirth}
                 />
@@ -113,16 +116,16 @@ export function ProfessionalDetailsSection({
             <DetailsColumn>
               {isDefined(address) && (
                 <>
-                  <DetailsCell
+                  <DetailsCellWrapped
                     label={PROFESSIONAL_FIELD_NAME.streetAndHouseNumber}
                     value={streetAndHouseNumber(address)}
                   />
                   <DetailsRow>
-                    <DetailsCell
+                    <DetailsCellWrapped
                       label={PROFESSIONAL_FIELD_NAME.postalCode}
                       value={address.postalCode}
                     />
-                    <DetailsCell
+                    <DetailsCellWrapped
                       label={PROFESSIONAL_FIELD_NAME.city}
                       value={address.city}
                       avoidWrap
@@ -142,7 +145,7 @@ export function ProfessionalDetailsSection({
               {(isDefined(professionInformation.professionalTitle) ||
                 isDefined(professionInformation.fieldOfExpertise)) && (
                 <DetailsRow>
-                  <DetailsCell
+                  <DetailsCellWrapped
                     label={PROFESSIONAL_FIELD_NAME.professionalTitle}
                     value={
                       professionInformation.professionalTitle &&
@@ -151,7 +154,7 @@ export function ProfessionalDetailsSection({
                       ]
                     }
                   />
-                  <DetailsCell
+                  <DetailsCellWrapped
                     label={PROFESSIONAL_FIELD_NAME.fieldOfExpertise}
                     value={professionInformation.fieldOfExpertise}
                   />
@@ -160,17 +163,17 @@ export function ProfessionalDetailsSection({
               {(isDefined(professionInformation.specialistTitle) ||
                 isDefined(professionInformation.furtherTraining)) && (
                 <DetailsRow>
-                  <DetailsCell
+                  <DetailsCellWrapped
                     label={PROFESSIONAL_FIELD_NAME.specialistTitle}
                     value={professionInformation.specialistTitle}
                   />
-                  <DetailsCell
+                  <DetailsCellWrapped
                     label={PROFESSIONAL_FIELD_NAME.furtherTraining}
                     value={professionInformation.furtherTraining}
                   />
                 </DetailsRow>
               )}
-              <DetailsCell
+              <DetailsCellWrapped
                 label={PROFESSIONAL_FIELD_NAME.qualifications}
                 value={professionInformation.qualifications}
               />
@@ -203,7 +206,7 @@ export function ProfessionalDetailsSection({
                 label={PROFESSIONAL_FIELD_NAME.approbationGrantedOn}
                 value={formatDate(professionInformation.approbationGrantedOn)}
               />
-              <DetailsCell
+              <DetailsCellWrapped
                 label={PROFESSIONAL_FIELD_NAME.approbationIssuingAuthority}
                 value={professionInformation.approbationIssuingAuthority}
               />
diff --git a/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/proceduresTable/MedicalRegistryProceduresTable.tsx b/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/proceduresTable/MedicalRegistryProceduresTable.tsx
index b18e057a5..d4ea118c1 100644
--- a/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/proceduresTable/MedicalRegistryProceduresTable.tsx
+++ b/employee-portal/src/lib/businessModules/medicalRegistry/components/procedures/proceduresTable/MedicalRegistryProceduresTable.tsx
@@ -50,8 +50,8 @@ function formatAddress(address: ApiApplicantAddress) {
 
 function getProceduresColumns() {
   return [
-    columnHelper.accessor("lastName", {
-      header: "Name",
+    columnHelper.accessor("firstName", {
+      header: "Vorname",
       enableSorting: false,
       meta: {
         width: 180,
@@ -60,8 +60,8 @@ function getProceduresColumns() {
         },
       },
     }),
-    columnHelper.accessor("firstName", {
-      header: "Vorname",
+    columnHelper.accessor("lastName", {
+      header: "Name",
       enableSorting: false,
       meta: {
         width: 180,
diff --git a/employee-portal/src/lib/businessModules/officialMedicalService/api/mutations/appointmentApi.ts b/employee-portal/src/lib/businessModules/officialMedicalService/api/mutations/appointmentApi.ts
index c1fb33a51..abd13a73a 100644
--- a/employee-portal/src/lib/businessModules/officialMedicalService/api/mutations/appointmentApi.ts
+++ b/employee-portal/src/lib/businessModules/officialMedicalService/api/mutations/appointmentApi.ts
@@ -35,3 +35,22 @@ export function useCancelAppointment() {
     onSuccess: () => snackbar.confirmation("Termin abgesagt."),
   });
 }
+
+export function useCloseAppointment() {
+  return useCloseAppointmentInternal("Termin abgeschlossen.");
+}
+
+export function useWithdrawAppointment() {
+  return useCloseAppointmentInternal("Terminoption zurückgezogen.");
+}
+
+function useCloseAppointmentInternal(successMessage: string) {
+  const snackbar = useSnackbar();
+  const employeeOmsProcedureApi = useOmsAppointmentApi();
+
+  return useHandledMutation({
+    mutationFn: ({ appointmentId }: { appointmentId: string }) =>
+      employeeOmsProcedureApi.closeAppointment(appointmentId),
+    onSuccess: () => snackbar.confirmation(successMessage),
+  });
+}
diff --git a/employee-portal/src/lib/businessModules/officialMedicalService/components/procedures/details/AppointmentsTable.tsx b/employee-portal/src/lib/businessModules/officialMedicalService/components/procedures/details/AppointmentsTable.tsx
index e87190af8..e8ec21f59 100644
--- a/employee-portal/src/lib/businessModules/officialMedicalService/components/procedures/details/AppointmentsTable.tsx
+++ b/employee-portal/src/lib/businessModules/officialMedicalService/components/procedures/details/AppointmentsTable.tsx
@@ -9,7 +9,6 @@ import {
   ApiEmployeeOmsProcedureDetails,
   ApiOmsAppointment,
 } from "@eshg/employee-portal-api/officialMedicalService";
-import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
 import { formatDateTime } from "@eshg/lib-portal/formatters/dateTime";
 import { EnumMap } from "@eshg/lib-portal/types/helpers";
 import {
@@ -22,7 +21,11 @@ import { Chip, Typography } from "@mui/joy";
 import { DefaultColorPalette } from "@mui/joy/styles/types";
 import { createColumnHelper } from "@tanstack/react-table";
 
-import { useCancelAppointment } from "@/lib/businessModules/officialMedicalService/api/mutations/appointmentApi";
+import {
+  useCancelAppointment,
+  useCloseAppointment,
+  useWithdrawAppointment,
+} from "@/lib/businessModules/officialMedicalService/api/mutations/appointmentApi";
 import { APPOINTMENT_TYPES } from "@/lib/businessModules/officialMedicalService/components/appointmentBlocks/constants";
 import { useAppointmentSidebar } from "@/lib/businessModules/officialMedicalService/components/procedures/details/AppointmentSidebar";
 import { isProcedureFinalized } from "@/lib/businessModules/officialMedicalService/shared/helpers";
@@ -68,11 +71,13 @@ function createAppointmentColumns({
   openCancelAppointmentDialog,
   openCloseAppointmentDialog,
   openWithdrawAppointmentDialog,
+  closeAppointment,
 }: {
   openBookingSidebar?: (appointment: ApiOmsAppointment) => void;
   openCancelAppointmentDialog?: (appointment: ApiOmsAppointment) => void;
-  openCloseAppointmentDialog?: () => void;
-  openWithdrawAppointmentDialog?: () => void;
+  openCloseAppointmentDialog?: (appointment: ApiOmsAppointment) => void;
+  openWithdrawAppointmentDialog?: (appointment: ApiOmsAppointment) => void;
+  closeAppointment?: (appointment: ApiOmsAppointment) => Promise<void>;
 }) {
   return [
     columnHelper.accessor("appointmentType", {
@@ -142,10 +147,10 @@ function createAppointmentColumns({
           openWithdrawAppointmentDialog
         ) {
           items.push({
-            label: "Terminbuchung zurückziehen",
+            label: "Terminoption zurückziehen",
             startDecorator: <Delete />,
             color: "danger",
-            onClick: openWithdrawAppointmentDialog,
+            onClick: () => openWithdrawAppointmentDialog(ctx.row.original),
           });
         }
 
@@ -164,20 +169,32 @@ function createAppointmentColumns({
           items.push({
             label: "Terminbuchung absagen",
             startDecorator: <EventBusyOutlined />,
+            color: "danger",
             onClick: () => openCancelAppointmentDialog(ctx.row.original),
           });
         }
 
         if (
-          (bookingState === ApiBookingState.Cancelled ||
-            bookingState === ApiBookingState.Booked) &&
+          bookingState === ApiBookingState.Booked &&
           appointmentState === ApiAppointmentState.Open &&
           openCloseAppointmentDialog
         ) {
           items.push({
             label: "Als abgeschlossen markieren",
             startDecorator: <CheckCircle />,
-            onClick: openCloseAppointmentDialog,
+            onClick: () => openCloseAppointmentDialog(ctx.row.original),
+          });
+        }
+
+        if (
+          bookingState === ApiBookingState.Cancelled &&
+          appointmentState === ApiAppointmentState.Open &&
+          closeAppointment
+        ) {
+          items.push({
+            label: "Als abgeschlossen markieren",
+            startDecorator: <CheckCircle />,
+            onClick: () => closeAppointment(ctx.row.original),
           });
         }
 
@@ -206,7 +223,8 @@ export function AppointmentsTable({
   );
   const { openConfirmationDialog } = useConfirmationDialog();
   const { mutateAsync: cancelAppointment } = useCancelAppointment();
-  const snackbar = useSnackbar();
+  const { mutateAsync: closeAppointment } = useCloseAppointment();
+  const { mutateAsync: withdrawAppointment } = useWithdrawAppointment();
 
   if (procedure.appointments.length === 0) {
     return;
@@ -223,24 +241,24 @@ export function AppointmentsTable({
     });
   }
 
-  function openCloseAppointmentDialog() {
+  function openCloseAppointmentDialog(appointment: ApiOmsAppointment) {
     openConfirmationDialog({
       title: "Termin abschließen?",
       description:
         "Der/die Bürger:in wird per E-Mail informiert. Ein neuer Termin kann gebucht werden.",
       confirmLabel: "Abschließen",
-      onConfirm: () => snackbar.notification("TODO"),
+      onConfirm: () => closeAppointment(appointment),
     });
   }
 
-  function openWithdrawAppointmentDialog() {
+  function openWithdrawAppointmentDialog(appointment: ApiOmsAppointment) {
     openConfirmationDialog({
-      title: "Termin löschen?",
+      title: "Terminoption zurückziehen?",
       description:
-        "Gebuchte, anstehende Termine werden storniert. Die Aktion lässt sich nicht rückgängig machen.",
+        "Der/die Bürger:in wird per E-Mail informiert. Eine neue Terminoption kann erstellt werden.",
       color: "danger",
-      confirmLabel: "Löschen",
-      onConfirm: () => snackbar.notification("TODO"),
+      confirmLabel: "Zurückziehen",
+      onConfirm: () => withdrawAppointment(appointment),
     });
   }
 
@@ -253,6 +271,7 @@ export function AppointmentsTable({
           openCancelAppointmentDialog(appointment),
         openCloseAppointmentDialog,
         openWithdrawAppointmentDialog,
+        closeAppointment,
       });
 
   return <DataTable data={procedure.appointments} columns={columns} />;
diff --git a/employee-portal/src/lib/businessModules/officialMedicalService/components/procedures/overview/ProceduresOverviewTable.tsx b/employee-portal/src/lib/businessModules/officialMedicalService/components/procedures/overview/ProceduresOverviewTable.tsx
index f70709afd..6712e03e8 100644
--- a/employee-portal/src/lib/businessModules/officialMedicalService/components/procedures/overview/ProceduresOverviewTable.tsx
+++ b/employee-portal/src/lib/businessModules/officialMedicalService/components/procedures/overview/ProceduresOverviewTable.tsx
@@ -8,6 +8,7 @@
 import { ApiBusinessModule } from "@eshg/employee-portal-api/businessProcedures";
 import { GetAllEmployeeProceduresRequest } from "@eshg/employee-portal-api/officialMedicalService";
 import { optionsFromRecord } from "@eshg/lib-portal/components/formFields/SelectOptions";
+import { useToggleableState } from "@eshg/lib-portal/hooks/useToggleableState";
 import { useSuspenseQueries } from "@tanstack/react-query";
 import { ColumnSort } from "@tanstack/react-table";
 import { ReactNode, useMemo, useState } from "react";
@@ -35,6 +36,12 @@ import {
 import { useSearchParamStateProvider } from "@/lib/shared/components/filterSettings/useSearchParamStateProvider";
 import { useGdprValidationTasksAlert } from "@/lib/shared/components/gdpr/useGdprValidationTasksAlert";
 import { Pagination } from "@/lib/shared/components/pagination/Pagination";
+import {
+  PersonSearchForm,
+  PersonSearchFormValues,
+  TogglePersonSearchButton,
+  usePersonSearch,
+} from "@/lib/shared/components/personSearch/PersonSearchForm";
 import { DataTable } from "@/lib/shared/components/table/DataTable";
 import { TablePage } from "@/lib/shared/components/table/TablePage";
 import { TableSheet } from "@/lib/shared/components/table/TableSheet";
@@ -44,6 +51,8 @@ import {
 } from "@/lib/shared/components/table/sorting";
 import { useTableControl } from "@/lib/shared/hooks/searchParams/useTableControl";
 
+type PanelName = "filters" | "personSearch";
+
 interface ProceduresOverviewTableProps {
   buttons?: ReactNode[];
   filter: GetAllEmployeeProceduresRequest;
@@ -86,6 +95,7 @@ function createFilterDefinitions(): FilterDefinition[] {
 export function ProceduresOverviewTable(
   props: Readonly<ProceduresOverviewTableProps>,
 ) {
+  const [activePanel, toggleActivePanel] = useToggleableState<PanelName>();
   const tableControl = useTableControl({
     serverSideSorting: true,
     sortFieldName: "sortKey",
@@ -93,8 +103,10 @@ export function ProceduresOverviewTable(
     initialSorting: initialSorting,
   });
 
+  const personSearch = usePersonSearch();
   const proceduresQuery = useGetAllProceduresQuery({
     ...props.filter,
+    ...personSearch.searchParams,
     pageNumber: tableControl.paginationProps.pageNumber,
     pageSize: tableControl.paginationProps.pageSize,
     sortKey: getSortKey(tableControl.tableSorting),
@@ -120,7 +132,7 @@ export function ProceduresOverviewTable(
     true,
   );
 
-  const { stateProvider } = useOmsProceduresFilterState({
+  const { stateProvider, resetFilters } = useOmsProceduresFilterState({
     stateProvider: paramStateProvider,
     defaults: [],
     filter: props.filter,
@@ -129,24 +141,52 @@ export function ProceduresOverviewTable(
   const filterSettings = useFilterSettings({
     definitions: filterDefinitions,
     stateProvider,
-    // eslint-disable-next-line @typescript-eslint/no-empty-function
-    onValuesSubmit: (_values) => {},
+    onValuesSubmit: (_values) => {
+      personSearch.reset();
+    },
     showSearch: false,
   });
 
+  function handleChangePersonSearch(formValues: PersonSearchFormValues) {
+    tableControl.paginationProps.onPageChange(0);
+    resetFilters();
+    personSearch.setValues(formValues);
+  }
+
   return (
     <TablePage
       fullHeight
       controls={
         <ButtonBar
-          left={<FilterButton {...filterSettings.filterButtonProps} />}
+          left={[
+            <FilterButton
+              {...filterSettings.filterButtonProps}
+              key="filterButton"
+              isFilterVisible={activePanel === "filters"}
+              onClick={() => toggleActivePanel("filters")}
+            />,
+            <TogglePersonSearchButton
+              {...personSearch.buttonProps}
+              key="personSearchButton"
+              expanded={activePanel === "personSearch"}
+              onClick={() => toggleActivePanel("personSearch")}
+            />,
+          ]}
           right={props.buttons}
           alignItems="flex-end"
         />
       }
       data-testid="procedures-table"
+      search={
+        activePanel === "personSearch" && (
+          <PersonSearchForm
+            {...personSearch.formProps}
+            onChange={handleChangePersonSearch}
+          />
+        )
+      }
       filterSettings={
-        filterSettings.filterSettingsVisible && (
+        activePanel === "filters" && (
           <FilterSettingsSheet {...filterSettings.filterSettingsSheetProps}>
             <FilterSettings {...filterSettings.filterSettingsProps} />
           </FilterSettingsSheet>
@@ -203,9 +243,15 @@ function useOmsProceduresFilterState(options: {
     [options.filter, options.defaults, touched],
   );
 
+  function resetFilters() {
+    setTouched(false);
+    setActiveValues(options.defaults);
+  }
+
   return {
     stateProvider,
     filter,
+    resetFilters,
   };
 }
 
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/AnamnesisForm.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/AnamnesisForm.tsx
index f748f14eb..8d0c80c0b 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/AnamnesisForm.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/AnamnesisForm.tsx
@@ -5,7 +5,7 @@
 
 "use client";
 
-import { SoftRequiredBooleanSelectField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredBooleanSelectField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { BooleanSelectField } from "@eshg/lib-portal/components/formFields/BooleanSelectField";
 import { HorizontalField } from "@eshg/lib-portal/components/formFields/HorizontalField";
 import { InputField } from "@eshg/lib-portal/components/formFields/InputField";
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/BirthDataAndChildInformationForm.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/BirthDataAndChildInformationForm.tsx
index bd5c8e53c..7a3135c66 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/BirthDataAndChildInformationForm.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/BirthDataAndChildInformationForm.tsx
@@ -5,7 +5,7 @@
 
 "use client";
 
-import { SoftRequiredNumberField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredNumberField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { BooleanSelectField } from "@eshg/lib-portal/components/formFields/BooleanSelectField";
 import { HorizontalField } from "@eshg/lib-portal/components/formFields/HorizontalField";
 import { InputField } from "@eshg/lib-portal/components/formFields/InputField";
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/CheckUpsForm.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/CheckUpsForm.tsx
index 91a32f3a8..79ba54e8d 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/CheckUpsForm.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/CheckUpsForm.tsx
@@ -5,7 +5,7 @@
 
 "use client";
 
-import { SoftRequiredSelectField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredSelectField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
 import {
   NestedFormProps,
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/CountryWithNumberField.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/CountryWithNumberField.tsx
index 2e8c9f74e..b52c19eb7 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/CountryWithNumberField.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/CountryWithNumberField.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredSelectField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredSelectField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
 import { NestedFormProps } from "@eshg/lib-portal/types/form";
 import { Stack } from "@mui/joy";
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/MigrationBackgroundForm.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/MigrationBackgroundForm.tsx
index 94b143b80..5280a0697 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/MigrationBackgroundForm.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/MigrationBackgroundForm.tsx
@@ -5,7 +5,7 @@
 
 "use client";
 
-import { SoftRequiredBooleanSelectField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredBooleanSelectField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { HorizontalField } from "@eshg/lib-portal/components/formFields/HorizontalField";
 import { MonthAndYearFields } from "@eshg/lib-portal/components/formFields/MonthAndYearFields";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/PromotionBeforeSchoolEntryForm.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/PromotionBeforeSchoolEntryForm.tsx
index f2c98f6e3..8bdf55167 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/PromotionBeforeSchoolEntryForm.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/anamnesis/PromotionBeforeSchoolEntryForm.tsx
@@ -5,7 +5,7 @@
 
 "use client";
 
-import { SoftRequiredBooleanSelectField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredBooleanSelectField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { DateField } from "@eshg/lib-portal/components/formFields/DateField";
 import { HorizontalField } from "@eshg/lib-portal/components/formFields/HorizontalField";
 import { InputField } from "@eshg/lib-portal/components/formFields/InputField";
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/DevelopmentScreeningForm.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/DevelopmentScreeningForm.tsx
index 3482ed704..16d609563 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/DevelopmentScreeningForm.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/DevelopmentScreeningForm.tsx
@@ -21,7 +21,7 @@ import {
   HandicapFields,
   HandicapFieldsValues,
 } from "@/lib/businessModules/schoolEntry/features/procedures/developmentScreening/HandicapFields";
-import { useIdc10Sidebar } from "@/lib/businessModules/schoolEntry/features/procedures/developmentScreening/Icd10Sidebar";
+import { useIcd10Sidebar } from "@/lib/businessModules/schoolEntry/features/procedures/developmentScreening/Icd10Sidebar";
 import {
   MeasurementFields,
   MeasurementFieldsValues,
@@ -63,7 +63,7 @@ interface DevelopmentScreeningFormProps
 }
 
 export function DevelopmentScreeningForm(props: DevelopmentScreeningFormProps) {
-  const icd10Sidebar = useIdc10Sidebar();
+  const icd10Sidebar = useIcd10Sidebar();
 
   function handleClickIcd10Code(
     currentCodes: string[],
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/DevelopmentScreeningResultFields.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/DevelopmentScreeningResultFields.tsx
index 3a0cbc7e0..1f4734479 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/DevelopmentScreeningResultFields.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/DevelopmentScreeningResultFields.tsx
@@ -6,7 +6,7 @@
 import {
   SoftRequiredBooleanSelectField,
   SoftRequiredSelectField,
-} from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+} from "@eshg/lib-portal/components/form/fieldVariants";
 import { Stack } from "@mui/joy";
 import { SxProps } from "@mui/joy/styles/types";
 
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/HandicapFields.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/HandicapFields.tsx
index 3029e161e..a95d0f60a 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/HandicapFields.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/HandicapFields.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredSelectField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredSelectField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
 import {
   NestedFormProps,
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/HandicapWithDiagnosisFields.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/HandicapWithDiagnosisFields.tsx
index 739f5dbc6..3378e0059 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/HandicapWithDiagnosisFields.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/HandicapWithDiagnosisFields.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredBooleanSelectField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredBooleanSelectField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
 import {
   OptionalFieldValue,
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/Icd10Sidebar.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/Icd10Sidebar.tsx
index 814d8bb1e..d5506ef8c 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/Icd10Sidebar.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/Icd10Sidebar.tsx
@@ -33,13 +33,13 @@ import {
 import { SidebarActions } from "@/lib/shared/components/sidebar/SidebarActions";
 import { SidebarContent } from "@/lib/shared/components/sidebar/SidebarContent";
 
-export function useIdc10Sidebar(): UseSidebarResult<Idc10SidebarProps> {
+export function useIcd10Sidebar(): UseSidebarResult<Icd10SidebarProps> {
   return useSidebar({
     component: Icd10Sidebar,
   });
 }
 
-interface Idc10SidebarProps extends DrawerProps {
+interface Icd10SidebarProps extends DrawerProps {
   onSubmit: (selectedCodes: string[]) => void;
   initiallySelectedCodes: string[];
 }
@@ -66,7 +66,7 @@ function StyledTd({
   );
 }
 
-function Icd10Sidebar(props: Idc10SidebarProps) {
+function Icd10Sidebar(props: Icd10SidebarProps) {
   const [selectedCodes, setSelectedCodes] = useState<string[]>(
     props.initiallySelectedCodes,
   );
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/MeasurementFields.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/MeasurementFields.tsx
index 98438133b..10c20e473 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/MeasurementFields.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/MeasurementFields.tsx
@@ -5,7 +5,7 @@
 
 "use client";
 
-import { SoftRequiredNumberField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredNumberField } from "@eshg/lib-portal/components/form/fieldVariants";
 import {
   createFieldNameMapper,
   mapOptionalValue,
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/PsychoSocialRiskFields.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/PsychoSocialRiskFields.tsx
index ff576b80c..46c3a0c66 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/PsychoSocialRiskFields.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/PsychoSocialRiskFields.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredBooleanSelectField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredBooleanSelectField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
 import {
   NestedFormProps,
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/SocioEducationalFields.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/SocioEducationalFields.tsx
index 8d8ebee5f..d72b67322 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/SocioEducationalFields.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/developmentScreening/SocioEducationalFields.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredBooleanSelectField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredBooleanSelectField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
 import {
   NestedFormProps,
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/ExaminationResultValueField.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/ExaminationResultValueField.tsx
index 2018c0c86..1b2620dfe 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/ExaminationResultValueField.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/ExaminationResultValueField.tsx
@@ -6,7 +6,7 @@
 import {
   SoftRequiredSelectField,
   SoftRequiredSelectFieldProps,
-} from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+} from "@eshg/lib-portal/components/form/fieldVariants";
 
 import { EXAMINATION_RESULT_OPTIONS } from "@/lib/businessModules/schoolEntry/features/procedures/options";
 
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/Icd10CodeField.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/Icd10CodeField.tsx
index ae12aaac9..b13644cfb 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/Icd10CodeField.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/Icd10CodeField.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredInput } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
 import { useIsFormDisabled } from "@eshg/lib-portal/components/form/DisabledFormContext";
+import { SoftRequiredInput } from "@eshg/lib-portal/components/form/fieldVariants";
 import { HorizontalField } from "@eshg/lib-portal/components/formFields/HorizontalField";
 import { InputField } from "@eshg/lib-portal/components/formFields/InputField";
 import { FieldProps, SetFieldValueHelper } from "@eshg/lib-portal/types/form";
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/RequiredProcedureDataModal.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/IncompleteProcedureAreasModal.tsx
similarity index 53%
rename from employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/RequiredProcedureDataModal.tsx
rename to employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/IncompleteProcedureAreasModal.tsx
index 3177b0e4e..0b5bdcbb8 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/RequiredProcedureDataModal.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/IncompleteProcedureAreasModal.tsx
@@ -7,17 +7,17 @@ import {
   BaseModal,
   BaseModalProps,
 } from "@eshg/lib-portal/components/BaseModal";
-import { ApiRequiredProcedureData } from "@eshg/school-entry-api";
+import { ApiRequiredProcedureArea } from "@eshg/school-entry-api";
 import { Typography } from "@mui/joy";
 
-import { REQUIRED_PROCEDURE_DATA } from "@/lib/businessModules/schoolEntry/features/procedures/translations";
+import { REQUIRED_PROCEDURE_AREAS } from "@/lib/businessModules/schoolEntry/features/procedures/translations";
 
-interface IncompleteAreasModalProps {
-  requiredProcedureData: ApiRequiredProcedureData[];
+interface IncompleteProcedureAreasModalProps {
+  incompleteProcedureAreas: ApiRequiredProcedureArea[];
 }
 
-export function RequiredProcedureDataDialog(
-  props: IncompleteAreasModalProps &
+export function IncompleteProcedureAreasModal(
+  props: IncompleteProcedureAreasModalProps &
     Omit<BaseModalProps, "children" | "modalTitle">,
 ) {
   return (
@@ -26,8 +26,8 @@ export function RequiredProcedureDataDialog(
         Bitte vervollständigen Sie folgende Bereiche:
       </Typography>
       <Typography component="ul" fontWeight="bold">
-        {props.requiredProcedureData.map((area) => (
-          <li key={area}>{REQUIRED_PROCEDURE_DATA[area]}</li>
+        {props.incompleteProcedureAreas.map((area) => (
+          <li key={area}>{REQUIRED_PROCEDURE_AREAS[area]}</li>
         ))}
       </Typography>
     </BaseModal>
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/ResponseDoctorLetterField.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/ResponseDoctorLetterField.tsx
index 2b978e44a..1576a6c9c 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/ResponseDoctorLetterField.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/ResponseDoctorLetterField.tsx
@@ -6,7 +6,7 @@
 import {
   SoftRequiredSelectField,
   SoftRequiredSelectFieldProps,
-} from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+} from "@eshg/lib-portal/components/form/fieldVariants";
 import { OptionalFieldValue } from "@eshg/lib-portal/types/form";
 import { ApiExaminationResultValue } from "@eshg/school-entry-api";
 
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/SetAllSelect.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/SetAllSelect.tsx
index 92235b7e1..c86806ef2 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/SetAllSelect.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/examinations/SetAllSelect.tsx
@@ -3,11 +3,11 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { useIsFormDisabled } from "@eshg/lib-portal/components/form/DisabledFormContext";
 import {
   FieldOrientation,
   resolveFieldComponent,
-} from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
-import { useIsFormDisabled } from "@eshg/lib-portal/components/form/DisabledFormContext";
+} from "@eshg/lib-portal/components/form/fieldVariants";
 import { FieldComponentProps } from "@eshg/lib-portal/components/formFields/BaseField";
 import { SelectOptions } from "@eshg/lib-portal/components/formFields/SelectOptions";
 import { NO_SELECTION_LABEL } from "@eshg/lib-portal/helpers/form";
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/ArticulationField.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/ArticulationField.tsx
index 45453eafb..61f8153c6 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/ArticulationField.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/ArticulationField.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredSelectField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredSelectField } from "@eshg/lib-portal/components/form/fieldVariants";
 
 import {
   FIXED_WIDTH_STYLE,
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/BodyCoordinationForm.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/BodyCoordinationForm.tsx
index 39fef80d1..0992ca28f 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/BodyCoordinationForm.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/BodyCoordinationForm.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredNumberField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredNumberField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
 import {
   OptionalFieldValue,
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/CountingForm.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/CountingForm.tsx
index 0a45280b5..e8f9b7678 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/CountingForm.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/CountingForm.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredNumberField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredNumberField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
 import { OptionalFieldValue } from "@eshg/lib-portal/types/form";
 import { Stack } from "@mui/joy";
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/HandednessForm.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/HandednessForm.tsx
index f58838d08..32958f015 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/HandednessForm.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/HandednessForm.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredSelectField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredSelectField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { Stack, Typography } from "@mui/joy";
 
 import {
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/LanguageForm.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/LanguageForm.tsx
index dbbb326a6..491d883b3 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/LanguageForm.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/LanguageForm.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredSelectField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredSelectField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
 import { ApiPrimaryLanguageValue } from "@eshg/school-entry-api";
 import { Stack, Typography } from "@mui/joy";
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/PluralForm.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/PluralForm.tsx
index 44001f7fd..f32bba091 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/PluralForm.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/PluralForm.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredNumberField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredNumberField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
 import {
   OptionalFieldValue,
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/PrepositionForm.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/PrepositionForm.tsx
index c836cf2b8..0b9ebbfe0 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/PrepositionForm.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/PrepositionForm.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredNumberField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredNumberField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
 import { OptionalFieldValue } from "@eshg/lib-portal/types/form";
 import { Stack } from "@mui/joy";
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/PseudowordForm.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/PseudowordForm.tsx
index e35b6a1a1..b0e4e6ca4 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/PseudowordForm.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/PseudowordForm.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredNumberField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredNumberField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
 import {
   OptionalFieldValue,
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/QuantityKnowledgeForm.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/QuantityKnowledgeForm.tsx
index 5596a5a9b..851a16bd1 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/QuantityKnowledgeForm.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/QuantityKnowledgeForm.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredNumberField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredNumberField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
 import {
   OptionalFieldValue,
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/SelectiveAttentionForm.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/SelectiveAttentionForm.tsx
index cb577a16f..1b1b6623e 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/SelectiveAttentionForm.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/SelectiveAttentionForm.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredNumberField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredNumberField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
 import {
   OptionalFieldValue,
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/SopessExaminationFields.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/SopessExaminationFields.tsx
index 2470d8ceb..da23b833e 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/SopessExaminationFields.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/SopessExaminationFields.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredSelectField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredSelectField } from "@eshg/lib-portal/components/form/fieldVariants";
 import {
   OptionalFieldValue,
   SetFieldValueHelper,
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/VisualPerceptionForm.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/VisualPerceptionForm.tsx
index 10a577f7f..070adaedc 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/VisualPerceptionForm.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/VisualPerceptionForm.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredNumberField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredNumberField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
 import {
   OptionalFieldValue,
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/VisuoMotorSkillsForm.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/VisuoMotorSkillsForm.tsx
index 0aef80604..a1de3c21d 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/VisuoMotorSkillsForm.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/sopessExamination/VisuoMotorSkillsForm.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredNumberField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredNumberField } from "@eshg/lib-portal/components/form/fieldVariants";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
 import {
   OptionalFieldValue,
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/translations.ts b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/translations.ts
index a776d0ca4..cdfaa9b01 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/translations.ts
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/translations.ts
@@ -21,7 +21,7 @@ import {
   ApiLanguageKnowledgeValue,
   ApiPercentageValue,
   ApiPrimaryLanguageValue,
-  ApiRequiredProcedureData,
+  ApiRequiredProcedureArea,
   ApiSchoolEntryCountryCode,
   ApiSchoolEntryProcedureType,
   ApiSchoolEntryStatusType,
@@ -448,18 +448,21 @@ export const WAITING_STATUS_VALUES: EnumMap<ApiWaitingStatus> = {
   [ApiWaitingStatus.InExamination]: "In Behandlung",
   [ApiWaitingStatus.InExaminationDoctor]: "In Behandlung bei Arzt:in",
   [ApiWaitingStatus.InExaminationMfa]: "In Behandlung bei MFA",
+  [ApiWaitingStatus.InExaminationSopass]: "In Behandlung SOPASS",
+  [ApiWaitingStatus.ExaminationFinished]: "Untersuchung durchgeführt",
   [ApiWaitingStatus.Done]: "Fertig",
   [ApiWaitingStatus.Cancelled]: "Abgesagt",
+  [ApiWaitingStatus.NotAppeared]: "Nicht erschienen",
 };
 
-export const REQUIRED_PROCEDURE_DATA: EnumMap<ApiRequiredProcedureData> = {
-  [ApiRequiredProcedureData.Details]: "Details",
-  [ApiRequiredProcedureData.HearingTest]: "Hörscreening",
-  [ApiRequiredProcedureData.EyeExamination]: "Sehscreening",
-  [ApiRequiredProcedureData.Anamnesis]: "Anamnese",
-  [ApiRequiredProcedureData.SopessExamination]: "S1 - SOPESS 2019",
-  [ApiRequiredProcedureData.DevelopmentScreening]: "S1 - Befund",
-  [ApiRequiredProcedureData.VaccinationStatus]: "Impfstatus",
+export const REQUIRED_PROCEDURE_AREAS: EnumMap<ApiRequiredProcedureArea> = {
+  [ApiRequiredProcedureArea.Details]: "Details",
+  [ApiRequiredProcedureArea.HearingTest]: "Hörscreening",
+  [ApiRequiredProcedureArea.EyeExamination]: "Sehscreening",
+  [ApiRequiredProcedureArea.Anamnesis]: "Anamnese",
+  [ApiRequiredProcedureArea.SopessExamination]: "S1 - SOPESS 2019",
+  [ApiRequiredProcedureArea.DevelopmentScreening]: "S1 - Befund",
+  [ApiRequiredProcedureArea.VaccinationStatus]: "Impfstatus",
 };
 
 export const BOOLEAN_WITH_UNKNOWN_VALUES: EnumMap<ApiBooleanWithUnknown> = {
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/vaccination/VaccinationField.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/vaccination/VaccinationField.tsx
index b97f57f11..d822de59a 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/vaccination/VaccinationField.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/vaccination/VaccinationField.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { SoftRequiredNumberField } from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
+import { SoftRequiredNumberField } from "@eshg/lib-portal/components/form/fieldVariants";
 import {
   validateIntegerAnd,
   validateRange,
diff --git a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/vaccination/VaccinationForm.tsx b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/vaccination/VaccinationForm.tsx
index 026fd4445..bf4bcdcc5 100644
--- a/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/vaccination/VaccinationForm.tsx
+++ b/employee-portal/src/lib/businessModules/schoolEntry/features/procedures/vaccination/VaccinationForm.tsx
@@ -5,11 +5,11 @@
 
 "use client";
 
+import { useIsFormDisabled } from "@eshg/lib-portal/components/form/DisabledFormContext";
 import {
   SoftRequiredBooleanSelectField,
   SoftRequiredSelectField,
-} from "@eshg/lib-portal/businessModules/schoolEntry/features/procedures/fieldVariants";
-import { useIsFormDisabled } from "@eshg/lib-portal/components/form/DisabledFormContext";
+} from "@eshg/lib-portal/components/form/fieldVariants";
 import { DateField } from "@eshg/lib-portal/components/formFields/DateField";
 import { HorizontalField } from "@eshg/lib-portal/components/formFields/HorizontalField";
 import { isEmptyString } from "@eshg/lib-portal/helpers/guards";
diff --git a/employee-portal/src/lib/businessModules/statistics/api/queries/useGetProcedureIds.ts b/employee-portal/src/lib/businessModules/statistics/api/queries/useGetProcedureIds.ts
index b98510f2f..20fa45247 100644
--- a/employee-portal/src/lib/businessModules/statistics/api/queries/useGetProcedureIds.ts
+++ b/employee-portal/src/lib/businessModules/statistics/api/queries/useGetProcedureIds.ts
@@ -37,6 +37,7 @@ export function useGetProcedureIds({
       };
     },
     enabled: procedureReferenceIds.length > 0,
+    throwOnError: false,
   });
 
   return query.data;
diff --git a/employee-portal/src/lib/businessModules/statistics/components/evaluations/CreateEvaluationSidebar/ChooseAttributesStep/ChooseAttributesStep.tsx b/employee-portal/src/lib/businessModules/statistics/components/evaluations/CreateEvaluationSidebar/ChooseAttributesStep/ChooseAttributesStep.tsx
index b58998aff..a3e9c497d 100644
--- a/employee-portal/src/lib/businessModules/statistics/components/evaluations/CreateEvaluationSidebar/ChooseAttributesStep/ChooseAttributesStep.tsx
+++ b/employee-portal/src/lib/businessModules/statistics/components/evaluations/CreateEvaluationSidebar/ChooseAttributesStep/ChooseAttributesStep.tsx
@@ -37,22 +37,26 @@ export interface ChooseAttributesStepProps
 }
 
 export function ChooseAttributesStep(props: ChooseAttributesStepProps) {
-  const groupedAttributes = groupBy(
-    props.attributes,
+  const groupedAttributesWithoutReference = groupBy(
+    props.attributes.filter(
+      (attribute) => attribute.code !== "PROCEDURE_REFERENCE",
+    ),
     (attribute) => attribute.category,
   );
 
   const searchableCheckboxGroups: SearchableGroup<SearchableCheckboxGroupItem>[] =
-    Object.entries(groupedAttributes).map(([category, attributes]) => ({
-      name: category,
-      inAccordion: true,
-      items: attributes.flatMap((attribute) =>
-        mapToCheckboxGroupItem(
-          attribute,
-          props.fieldName("selectedAttributeKeys"),
+    Object.entries(groupedAttributesWithoutReference).map(
+      ([category, attributes]) => ({
+        name: category,
+        inAccordion: true,
+        items: attributes.flatMap((attribute) =>
+          mapToCheckboxGroupItem(
+            attribute,
+            props.fieldName("selectedAttributeKeys"),
+          ),
         ),
-      ),
-    }));
+      }),
+    );
 
   return (
     <Stack>
diff --git a/employee-portal/src/lib/businessModules/statistics/components/evaluations/CreateEvaluationSidebar/CreateEvaluationFromScratchSidebar.tsx b/employee-portal/src/lib/businessModules/statistics/components/evaluations/CreateEvaluationSidebar/CreateEvaluationFromScratchSidebar.tsx
index 06103ffd2..f5233b4dc 100644
--- a/employee-portal/src/lib/businessModules/statistics/components/evaluations/CreateEvaluationSidebar/CreateEvaluationFromScratchSidebar.tsx
+++ b/employee-portal/src/lib/businessModules/statistics/components/evaluations/CreateEvaluationSidebar/CreateEvaluationFromScratchSidebar.tsx
@@ -101,8 +101,17 @@ export function CreateEvaluationFromScratchSidebar({
       });
     } else {
       const dataSource = getDataSourceFromId(model[0].dataSourceId!)!;
+      const attributeProcedureReference = dataSource.attributes.find(
+        (attribute) => attribute.code === "PROCEDURE_REFERENCE",
+      )?.code;
       const attributeGroups = groupBy(
-        getAttributesFromKeys(model[1].selectedAttributeKeys!, dataSource),
+        getAttributesFromKeys(
+          [
+            ...model[1].selectedAttributeKeys!,
+            attributeProcedureReference,
+          ].filter(isDefined),
+          dataSource,
+        ),
         (item) => item.code,
       );
 
diff --git a/employee-portal/src/lib/businessModules/statistics/components/evaluations/details/table/EvaluationDetailsTable.tsx b/employee-portal/src/lib/businessModules/statistics/components/evaluations/details/table/EvaluationDetailsTable.tsx
index 0902975f1..c16aa2222 100644
--- a/employee-portal/src/lib/businessModules/statistics/components/evaluations/details/table/EvaluationDetailsTable.tsx
+++ b/employee-portal/src/lib/businessModules/statistics/components/evaluations/details/table/EvaluationDetailsTable.tsx
@@ -17,10 +17,7 @@ import { FlatAttribute } from "@/lib/businessModules/statistics/api/models/flatA
 import { useAddFilterTemplate } from "@/lib/businessModules/statistics/api/mutations/useAddFilterTemplate";
 import { useDeleteFilterTemplate } from "@/lib/businessModules/statistics/api/mutations/useDeleteFilterTemplate";
 import { useGetFilterTemplateFilters } from "@/lib/businessModules/statistics/api/mutations/useGetFilterTemplateFilters";
-import {
-  DUMMY_COLUMN,
-  evaluationColumns,
-} from "@/lib/businessModules/statistics/components/evaluations/details/table/columns";
+import { evaluationColumns } from "@/lib/businessModules/statistics/components/evaluations/details/table/columns";
 import { ButtonBar } from "@/lib/shared/components/buttons/ButtonBar";
 import { FilterButton } from "@/lib/shared/components/buttons/FilterButton";
 import { FilterSettings } from "@/lib/shared/components/filterSettings/FilterSettings";
@@ -49,6 +46,7 @@ export interface EvaluationDetailsTableProps {
   resolveProcedureId?: (
     procedureReferenceId: string | undefined,
   ) => string | undefined;
+  loading: boolean;
 }
 
 export function EvaluationDetailsTable(props: EvaluationDetailsTableProps) {
@@ -88,10 +86,9 @@ export function EvaluationDetailsTable(props: EvaluationDetailsTableProps) {
     (attribute) => attribute.type === "ProcedureReferenceAttribute",
   );
 
-  const focusColumnAccessorKey =
-    props.attributes.find(
-      (attribute) => attribute.type !== "ProcedureReferenceAttribute",
-    )?.key ?? DUMMY_COLUMN;
+  const focusColumnAccessorKey = props.attributes.find(
+    (attribute) => attribute.type !== "ProcedureReferenceAttribute",
+  )!.key;
 
   return (
     <TablePage
@@ -112,13 +109,17 @@ export function EvaluationDetailsTable(props: EvaluationDetailsTableProps) {
         )
       }
     >
-      <TableSheet footer={<Pagination {...props.paginationProps} />}>
+      <TableSheet
+        loading={props.loading}
+        footer={<Pagination {...props.paginationProps} />}
+      >
         <DataTable
           wrapContent
           wrapHeader
           data={props.tableData}
           columns={columns}
           sorting={props.manualSortingProps}
+          enableSortingRemoval={false}
           rowNavigation={{
             onClick: (row) => {
               if (
diff --git a/employee-portal/src/lib/businessModules/statistics/components/evaluations/details/table/columns.tsx b/employee-portal/src/lib/businessModules/statistics/components/evaluations/details/table/columns.tsx
index e4dcff1e3..bc28f582b 100644
--- a/employee-portal/src/lib/businessModules/statistics/components/evaluations/details/table/columns.tsx
+++ b/employee-portal/src/lib/businessModules/statistics/components/evaluations/details/table/columns.tsx
@@ -10,8 +10,6 @@ import { FlatAttribute } from "@/lib/businessModules/statistics/api/models/flatA
 import { mapRawValueToTableCell } from "@/lib/businessModules/statistics/components/evaluations/details/table/mapRawValueToTableCell";
 
 const columnHelper = createColumnHelper<EvaluationDetailsTableRow>();
-// TODO: this should be removed in ISSUE-7403
-export const DUMMY_COLUMN = "dummyColumn";
 
 export function evaluationColumns({
   flatAttributes,
@@ -42,15 +40,5 @@ export function evaluationColumns({
       });
     });
 
-  const dummyColumn = columnHelper.accessor(DUMMY_COLUMN, {
-    header: "",
-    cell: "",
-    meta: {
-      canNavigate: {
-        parentRow: canNavigate,
-      },
-    },
-  });
-
-  return dataColumns.length > 0 ? dataColumns : [dummyColumn];
+  return dataColumns;
 }
diff --git a/employee-portal/src/lib/businessModules/statistics/components/shared/AnalysisAccordion/AnalysisChartDiagram.tsx b/employee-portal/src/lib/businessModules/statistics/components/shared/AnalysisAccordion/AnalysisChartDiagram.tsx
index dcd0a43e1..f5f3d7253 100644
--- a/employee-portal/src/lib/businessModules/statistics/components/shared/AnalysisAccordion/AnalysisChartDiagram.tsx
+++ b/employee-portal/src/lib/businessModules/statistics/components/shared/AnalysisAccordion/AnalysisChartDiagram.tsx
@@ -149,7 +149,6 @@ export function AnalysisChartDiagram(props: {
   }
 
   const [openFullScreenChart, setOpenFullScreenChart] = useState(false);
-  const chart = getChart();
   const canExportData = canExportDataPermission(props.dataSourceSensitivity);
 
   return (
@@ -169,7 +168,7 @@ export function AnalysisChartDiagram(props: {
           filterLabels={props.analysisDiagram.filterLabels}
           evaluatedDataAmount={props.analysisDiagram.evaluatedDataAmount}
           evaluatedDataAmountTotal={props.evaluatedDataAmountTotal}
-          chart={chart}
+          getChart={getChart}
         />
       </BaseModal>
       <AnalysisDiagramBox
@@ -177,7 +176,7 @@ export function AnalysisChartDiagram(props: {
         filterLabels={props.analysisDiagram.filterLabels}
         evaluatedDataAmount={props.analysisDiagram.evaluatedDataAmount}
         evaluatedDataAmountTotal={props.evaluatedDataAmountTotal}
-        chart={chart}
+        getChart={getChart}
         header={
           <Stack
             direction="row"
@@ -209,16 +208,18 @@ export function AnalysisChartDiagram(props: {
                       startDecorator: <Edit />,
                       onClick: openUpdateDiagramSidebar,
                     },
-                  canExportData && {
-                    label: "Als PNG exportieren",
-                    startDecorator: <Download />,
-                    onClick: () => onExportAsImage?.(ImageType.PNG),
-                  },
-                  canExportData && {
-                    label: "Als SVG exportieren",
-                    startDecorator: <Download />,
-                    onClick: () => onExportAsImage?.(ImageType.SVG),
-                  },
+                  canExportData &&
+                    props.analysisDiagram.evaluatedDataAmount > 0 && {
+                      label: "Als PNG exportieren",
+                      startDecorator: <Download />,
+                      onClick: () => onExportAsImage?.(ImageType.PNG),
+                    },
+                  canExportData &&
+                    props.analysisDiagram.evaluatedDataAmount > 0 && {
+                      label: "Als SVG exportieren",
+                      startDecorator: <Download />,
+                      onClick: () => onExportAsImage?.(ImageType.SVG),
+                    },
                   canExportData && {
                     label: "Als XLSX exportieren",
                     startDecorator: <Download />,
diff --git a/employee-portal/src/lib/businessModules/statistics/components/shared/AnalysisAccordion/AnalysisDiagramBox.tsx b/employee-portal/src/lib/businessModules/statistics/components/shared/AnalysisAccordion/AnalysisDiagramBox.tsx
index 6d4355a7c..7a867a42f 100644
--- a/employee-portal/src/lib/businessModules/statistics/components/shared/AnalysisAccordion/AnalysisDiagramBox.tsx
+++ b/employee-portal/src/lib/businessModules/statistics/components/shared/AnalysisAccordion/AnalysisDiagramBox.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { Divider, Stack, Typography } from "@mui/joy";
+import { Box, Divider, Stack, Typography } from "@mui/joy";
 import { ReactNode } from "react";
 
 interface AnalysisDiagramProps {
@@ -12,7 +12,7 @@ interface AnalysisDiagramProps {
   evaluatedDataAmount: number;
   evaluatedDataAmountTotal: number;
   header?: ReactNode;
-  chart: ReactNode;
+  getChart: () => ReactNode;
 }
 
 export function AnalysisDiagramBox({
@@ -21,8 +21,26 @@ export function AnalysisDiagramBox({
   evaluatedDataAmount,
   evaluatedDataAmountTotal,
   header,
-  chart,
+  getChart,
 }: AnalysisDiagramProps) {
+  function diagramContent() {
+    if (evaluatedDataAmount === 0) {
+      return (
+        <Box
+          height="100%"
+          width="100%"
+          alignContent="center"
+          textAlign="center"
+        >
+          <Typography level="body-md" color="primary">
+            Keine Daten vorhanden
+          </Typography>
+        </Box>
+      );
+    }
+    return getChart();
+  }
+
   return (
     <Stack
       flex="1"
@@ -37,7 +55,7 @@ export function AnalysisDiagramBox({
       }}
     >
       {header}
-      {chart}
+      {diagramContent()}
       <Stack gap={2} marginTop={2}>
         <Divider />
         <Typography level="body-md" data-testid="analysis-diagram-description">
diff --git a/employee-portal/src/lib/businessModules/stiProtection/components/procedures/procedureDetails/YesOrNoWithFollowUp.tsx b/employee-portal/src/lib/businessModules/stiProtection/components/procedures/procedureDetails/YesOrNoWithFollowUp.tsx
index cd7c7fd23..cc69e4160 100644
--- a/employee-portal/src/lib/businessModules/stiProtection/components/procedures/procedureDetails/YesOrNoWithFollowUp.tsx
+++ b/employee-portal/src/lib/businessModules/stiProtection/components/procedures/procedureDetails/YesOrNoWithFollowUp.tsx
@@ -7,7 +7,7 @@ import { SxProps } from "@mui/joy/styles/types";
 import { useFormikContext } from "formik";
 import { PropsWithChildren } from "react";
 
-import { FieldSetControl } from "@/lib/shared/components/formFields/CheckboxGroupField";
+import { FieldSetControl } from "@/lib/shared/components/formFields/FieldSetControl";
 import {
   RadioButtonsField,
   RadioButtonsFieldProps,
diff --git a/employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/TextTemplateAccordion.tsx b/employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/TextTemplateAccordion.tsx
new file mode 100644
index 000000000..ebf2ffa17
--- /dev/null
+++ b/employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/TextTemplateAccordion.tsx
@@ -0,0 +1,105 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { Row } from "@eshg/lib-portal/components/Row";
+import { Check } from "@mui/icons-material";
+import {
+  Accordion,
+  AccordionDetails,
+  AccordionSummary,
+  IconButton,
+  Typography,
+  styled,
+} from "@mui/joy";
+import { useTransition } from "react";
+
+import { AddTextTemplate } from "@/lib/shared/components/icons/AddTextTemplate";
+
+import { useTextTemplatesSidebar } from "./TextTemplatesSidebarProvider";
+
+export function TextTemplateAccordion({
+  name,
+  text,
+  index,
+}: {
+  name: string;
+  text: string;
+  index: number;
+}) {
+  return (
+    <Accordion
+      component="section"
+      aria-label={name}
+      sx={{ gap: 1, padding: 0 }}
+    >
+      <Row>
+        <AccordionSummary
+          sx={(theme) => ({ flex: 1, font: theme.typography["title-md"] })}
+          slotProps={{
+            button: {
+              sx: { flexDirection: "row-reverse", justifyContent: "start" },
+            },
+          }}
+        >
+          {name}
+        </AccordionSummary>
+        <AddTextTemplateButton text={text} index={index} />
+      </Row>
+      <AccordionDetails>
+        <Typography padding={2}>{text}</Typography>
+      </AccordionDetails>
+    </Accordion>
+  );
+}
+
+const AnimatedIconButton = styled(IconButton)(({ theme }) => ({
+  transition: "all 300ms",
+  "&[aria-disabled=true]": {
+    "background-color": theme.palette.success.plainActiveBg,
+    borderColor: "transparent",
+    cursor: "default",
+    ".MuiSvgIcon-root": { color: theme.palette.success.outlinedColor },
+  },
+}));
+
+function AddTextTemplateButton({
+  text,
+  index,
+}: {
+  text: string;
+  index: number;
+}) {
+  const [isAppending, startAppending] = useTransition();
+  const { appendText } = useTextTemplatesSidebar();
+
+  function onClick() {
+    if (isAppending) {
+      return;
+    }
+    startAppending(async () => {
+      await Promise.all([appendText(text), wait(2000)]);
+    });
+  }
+  const shortcut = index < 9 ? `${index + 1}` : undefined;
+
+  return (
+    <AnimatedIconButton
+      aria-keyshortcuts={`${shortcut}`}
+      variant={"outlined"}
+      aria-disabled={isAppending}
+      title={`Vorlage einfügen${shortcut ? ` (${shortcut})` : ""}`}
+      sx={{ alignSelf: "start" }}
+      onClick={onClick}
+    >
+      {isAppending ? <Check /> : <AddTextTemplate />}
+    </AnimatedIconButton>
+  );
+}
+
+function wait(ms: number) {
+  return new Promise<void>((resolve) => {
+    setTimeout(resolve, ms);
+  });
+}
diff --git a/employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/TextTemplatesSidebar.tsx b/employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/TextTemplatesSidebar.tsx
new file mode 100644
index 000000000..d6c692d7e
--- /dev/null
+++ b/employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/TextTemplatesSidebar.tsx
@@ -0,0 +1,105 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { InternalLinkButton } from "@eshg/lib-portal/components/navigation/InternalLinkButton";
+import { OpenInNew } from "@mui/icons-material";
+import {
+  AccordionGroup,
+  Button,
+  Divider,
+  Option,
+  Select,
+  Stack,
+} from "@mui/joy";
+import { KeyboardEvent, useId, useRef } from "react";
+
+import { routes } from "@/lib/businessModules/stiProtection/shared/routes";
+import { Sidebar } from "@/lib/shared/components/sidebar/Sidebar";
+import { SidebarActions } from "@/lib/shared/components/sidebar/SidebarActions";
+import { SidebarContent } from "@/lib/shared/components/sidebar/SidebarContent";
+
+import { TextTemplateAccordion } from "./TextTemplateAccordion";
+import { useTextTemplatesSidebar } from "./TextTemplatesSidebarProvider";
+import { ExampleTextTemplates, TextTemplateContextOptions } from "./constants";
+
+export function TextTemplatesSidebar() {
+  const { isOpen, close, context } = useTextTemplatesSidebar();
+  const accordionsRef = useRef<HTMLDivElement | null>(null);
+
+  const textTemplates = ExampleTextTemplates.filter(
+    (k) => k.context === context,
+  );
+
+  function onKeyDown(e: KeyboardEvent) {
+    const index = parseInt(e.key);
+    if (isNaN(index)) {
+      return;
+    }
+    const button = accordionsRef.current?.querySelector(
+      `button[aria-keyshortcuts="${index}"]`,
+    ) as HTMLElement | undefined;
+    button?.click();
+  }
+
+  return (
+    <div onKeyDown={onKeyDown}>
+      <Sidebar open={isOpen} onClose={close}>
+        <SidebarContent title={"Textvorlage einfügen"}>
+          <Stack gap={2}>
+            <ContextSelect />
+            <AccordionGroup sx={{ gap: 1 }} ref={accordionsRef}>
+              <Divider />
+              {textTemplates.map(({ name, text }, index) => (
+                <TextTemplateAccordion
+                  key={name}
+                  name={name}
+                  text={text}
+                  index={index}
+                />
+              ))}
+            </AccordionGroup>
+            <InternalLinkButton
+              href={routes.textTemplates}
+              sx={{ alignSelf: "start" }}
+              variant="plain"
+              endDecorator={<OpenInNew />}
+            >
+              Textvorlagen verwalten
+            </InternalLinkButton>
+          </Stack>
+        </SidebarContent>
+        <SidebarActions>
+          <Button onClick={close} sx={{ alignSelf: "end" }}>
+            Schließen
+          </Button>
+        </SidebarActions>
+      </Sidebar>
+    </div>
+  );
+}
+
+export function ContextSelect() {
+  const { context, setContext } = useTextTemplatesSidebar();
+  const buttonId = useId();
+  const labelId = useId();
+  return (
+    <Stack gap={1}>
+      <label id={labelId} htmlFor={buttonId}>
+        Kontext auswählen
+      </label>
+      <Select
+        slotProps={{ button: { id: buttonId, "aria-labelledby": labelId } }}
+        value={context ?? null}
+        onChange={(_e, newValue) => setContext(newValue)}
+      >
+        {TextTemplateContextOptions.map((option, index) => (
+          <Option key={index} label={option.label} value={option.value}>
+            {option.label}
+          </Option>
+        ))}
+      </Select>
+    </Stack>
+  );
+}
diff --git a/employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/TextTemplatesSidebarProvider.tsx b/employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/TextTemplatesSidebarProvider.tsx
new file mode 100644
index 000000000..b37cf5d9d
--- /dev/null
+++ b/employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/TextTemplatesSidebarProvider.tsx
@@ -0,0 +1,81 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import {
+  MutableRefObject,
+  PropsWithChildren,
+  createContext,
+  useContext,
+  useState,
+} from "react";
+
+import { TextTemplatesSidebar } from "./TextTemplatesSidebar";
+import { ApiTextTemplateContext } from "./constants";
+import { UseFieldHandle } from "./useFieldHandle";
+
+const TextTemplatesContext = createContext<
+  TextTemplatesSidebarContext | undefined
+>(undefined);
+
+export function TextTemplatesSidebarProvider({ children }: PropsWithChildren) {
+  const [context, setContext] = useState<ApiTextTemplateContext | null>(null);
+  const [fieldHandleRef, setFieldHandleRef] = useState<FieldHandleRef>();
+
+  function open(
+    context: ApiTextTemplateContext,
+    setFieldValue: FieldHandleRef,
+  ) {
+    setContext(context);
+    setFieldHandleRef(setFieldValue);
+  }
+  function close() {
+    fieldHandleRef?.current?.finishEditing();
+    setContext(null);
+    setFieldHandleRef(undefined);
+  }
+  async function appendText(text: string) {
+    if (fieldHandleRef?.current == null) {
+      throw Error("No referenced TextArea to append to");
+    }
+    await fieldHandleRef.current.appendText(text);
+  }
+
+  return (
+    <TextTemplatesContext.Provider
+      value={{
+        context,
+        setContext,
+        open,
+        close,
+        isOpen: context != null,
+        appendText,
+      }}
+    >
+      {children}
+      <TextTemplatesSidebar />
+    </TextTemplatesContext.Provider>
+  );
+}
+type FieldSetter = (text: string) => Promise<void>;
+type FieldHandleRef = MutableRefObject<UseFieldHandle | null>;
+export interface TextTemplatesSidebarContext {
+  isOpen: boolean;
+  context: ApiTextTemplateContext | null;
+  setContext: (context: ApiTextTemplateContext | null) => void;
+  open: (
+    context: ApiTextTemplateContext,
+    setFieldValue: FieldHandleRef,
+  ) => void;
+  close: () => void;
+  appendText: FieldSetter;
+}
+
+export function useTextTemplatesSidebar() {
+  const context = useContext(TextTemplatesContext);
+  if (!context) {
+    throw Error("No TextTemplatesProvider found.");
+  }
+  return context;
+}
diff --git a/employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/TextareaFieldWithTextTemplates.tsx b/employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/TextareaFieldWithTextTemplates.tsx
new file mode 100644
index 000000000..a02a67c35
--- /dev/null
+++ b/employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/TextareaFieldWithTextTemplates.tsx
@@ -0,0 +1,86 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { Add } from "@mui/icons-material";
+import { Button } from "@mui/joy";
+import { useFormikContext } from "formik";
+import { KeyboardEvent, useRef } from "react";
+
+import { FieldSetColumn } from "@/lib/shared/components/formFields/FieldSetControl";
+import {
+  TextareaField,
+  TextareaFieldProps,
+} from "@/lib/shared/components/formFields/TextareaField";
+
+import { useTextTemplatesSidebar } from "./TextTemplatesSidebarProvider";
+import { ApiTextTemplateContext } from "./constants";
+import {
+  UseFieldHandle,
+  nextInsertPoint,
+  useFieldHandle,
+} from "./useFieldHandle";
+
+export interface TextareaWithTextTemplatesProps extends TextareaFieldProps {
+  context: ApiTextTemplateContext;
+}
+
+export function TextareaFieldWithTextTemplates({
+  context,
+  ...props
+}: TextareaWithTextTemplatesProps) {
+  const { open } = useTextTemplatesSidebar();
+  const { getFieldMeta } = useFormikContext();
+  const { value } = getFieldMeta(props.name);
+
+  const ref = useRef<HTMLTextAreaElement | null>(null);
+  const setterRef = useRef<UseFieldHandle | null>(null);
+  setterRef.current = useFieldHandle({ name: props.name, ref });
+
+  function setOpen() {
+    open(context, setterRef);
+  }
+
+  function onKeyDown(e: KeyboardEvent<HTMLTextAreaElement>) {
+    if (ref.current == null) {
+      return;
+    }
+    let insertionPoint;
+    if (e.code === "Space" && e.ctrlKey) {
+      insertionPoint = nextInsertPoint(value, ref.current.selectionEnd ?? 0);
+      if (insertionPoint == null) {
+        setOpen();
+      }
+    } else if (e.code === "Enter" && e.ctrlKey) {
+      insertionPoint =
+        nextInsertPoint(value, ref.current.selectionEnd ?? 0) ??
+        nextInsertPoint(value, 0);
+    }
+
+    if (insertionPoint == null) {
+      return;
+    }
+    e.preventDefault();
+    ref.current.selectionStart = insertionPoint.start;
+    ref.current.selectionEnd = insertionPoint.end;
+  }
+
+  return (
+    <FieldSetColumn gap={1} alignItems="start">
+      <TextareaField
+        {...props}
+        slotProps={{ textarea: { ref, rows: 20, onKeyDownCapture: onKeyDown } }}
+      />
+      <Button
+        startDecorator={<Add />}
+        aria-keyshortcuts="Control+Space"
+        variant="plain"
+        onClick={setOpen}
+        title="Textvorlage Menü Öffnen (Strg+Leertaste)"
+      >
+        Textvorlage einfügen
+      </Button>
+    </FieldSetColumn>
+  );
+}
diff --git a/employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/constants.ts b/employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/constants.ts
new file mode 100644
index 000000000..9e6a8f747
--- /dev/null
+++ b/employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/constants.ts
@@ -0,0 +1,108 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+// TODO: Replace with OpenApi type when available
+export enum ApiTextTemplateContext {
+  ConsultationReason = "CONSULTATION_REASON",
+  Consultation = "CONSULTATION",
+  RapidTests = "RAPID_TESTS",
+  Diagnosis = "DIAGNOSIS",
+  LaboratoryTests = "LABORATORY_TESTS",
+}
+export interface ApiTextTemplate {
+  name: string;
+  text: string;
+  context: ApiTextTemplateContext;
+}
+
+export const TextTemplateContextLabels = {
+  [ApiTextTemplateContext.ConsultationReason]: "Konsultationsgrund",
+  [ApiTextTemplateContext.Consultation]: "Konsultation",
+  [ApiTextTemplateContext.RapidTests]: "Schnelltests",
+  [ApiTextTemplateContext.Diagnosis]: "Diagnose",
+  [ApiTextTemplateContext.LaboratoryTests]: "Labortests",
+} as const satisfies Record<ApiTextTemplateContext, string>;
+
+export const TextTemplateContextOptions = Object.entries(
+  TextTemplateContextLabels,
+).map(([key, value]) => ({
+  label: value,
+  value: key as ApiTextTemplateContext,
+}));
+
+export const ExampleTextTemplates = [
+  {
+    name: "Genitale Infektionen ",
+    context: ApiTextTemplateContext.ConsultationReason,
+    text: `Nein, Mann! Ich will noch nicht gehen.
+Ich will: $etwas`,
+  },
+  {
+    name: "PAP",
+    context: ApiTextTemplateContext.ConsultationReason,
+    text: `PAP: $`,
+  },
+  {
+    name: "Syphilis-seronarbe Bestätigungstest bei positiv",
+    context: ApiTextTemplateContext.ConsultationReason,
+    text: `Syphilis-werte: $`,
+  },
+  {
+    name: "Gynäkologische Vorsorge",
+    context: ApiTextTemplateContext.Consultation,
+    text: `Vagina: $JaOderNein
+Urinanalyse: $Uneindeutig`,
+  },
+  {
+    name: "Konsultation - Standardvorlage 1",
+    context: ApiTextTemplateContext.RapidTests,
+    text: `Wie heißt du? $NAME
+Was ist dein Quest? $QUEST
+Wie hoch ist die Fluggeschwindigkeit einer unbeladenen Schwalbe? $AHHHHH`,
+  },
+  {
+    name: "HIV-Bestätigungsdiagnostik ",
+    context: ApiTextTemplateContext.Diagnosis,
+    text: `HIV: $Nein`,
+  },
+  {
+    name: "HIV & Syphilis Basis ",
+    context: ApiTextTemplateContext.LaboratoryTests,
+    text: `HIV & Syphilis: $`,
+  },
+  {
+    name: "Genitale Infektionen ",
+    context: ApiTextTemplateContext.Consultation,
+    text: `Nein, Mann! Ich will noch nicht gehen.
+Ich will: $etwas`,
+  },
+  {
+    name: "PAP",
+    context: ApiTextTemplateContext.Consultation,
+    text: `PAP: $`,
+  },
+  {
+    name: "Syphilis-seronarbe Bestätigungstest bei positiv",
+    context: ApiTextTemplateContext.Consultation,
+    text: `Syphilis-werte: $`,
+  },
+  {
+    name: "Konsultation - Standardvorlage 1",
+    context: ApiTextTemplateContext.Consultation,
+    text: `Wer bist du? $NAME
+Was ist dein Quest? $QUEST
+Wie hoch ist die Fluggeschwindigkeit einer unbeladenen Schwalbe? $AHHHHH`,
+  },
+  {
+    name: "HIV-Bestätigungsdiagnostik",
+    context: ApiTextTemplateContext.Consultation,
+    text: `HIV: $Nein`,
+  },
+  {
+    name: "HIV & Syphilis Basis",
+    context: ApiTextTemplateContext.Consultation,
+    text: `HIV & Syphilis: $`,
+  },
+] as const satisfies ApiTextTemplate[];
diff --git a/employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/useFieldHandle.tsx b/employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/useFieldHandle.tsx
new file mode 100644
index 000000000..b7953de16
--- /dev/null
+++ b/employee-portal/src/lib/businessModules/stiProtection/components/textTemplates/useFieldHandle.tsx
@@ -0,0 +1,62 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { useFormikContext } from "formik";
+import { MutableRefObject } from "react";
+import { isString } from "remeda";
+
+export interface UseFieldHandle {
+  appendText: (text: string) => Promise<void>;
+  finishEditing: () => void;
+}
+
+export function useFieldHandle({
+  name,
+  ref,
+}: {
+  name: string;
+  ref: MutableRefObject<HTMLTextAreaElement | null>;
+}) {
+  const { setFieldValue, getFieldMeta } = useFormikContext();
+  const { value } = getFieldMeta(name);
+
+  return {
+    async appendText(text: string) {
+      const currentValue = isString(value) ? value : "";
+      const newValue = currentValue + `\n` + text;
+      await setFieldValue(name, newValue.trim());
+    },
+    finishEditing() {
+      if (ref?.current == null) {
+        return;
+      }
+      ref.current.focus();
+      const firstPoint = nextInsertPoint(value, 0);
+      if (firstPoint) {
+        ref.current.selectionStart = firstPoint.start;
+        ref.current.selectionEnd = firstPoint.end;
+      }
+    },
+  };
+}
+
+const replacementRegex = /\$(\d|\w|_)*/;
+export interface InsertPoint {
+  start: number;
+  end: number;
+}
+export function nextInsertPoint(
+  value: unknown,
+  startSearch: number,
+): InsertPoint | undefined {
+  const currentValue = isString(value) ? value : "";
+  const remainingText = currentValue.slice(startSearch);
+  const match = replacementRegex.exec(remainingText);
+  if (match?.index == null || match[0] == null) {
+    return;
+  }
+  const start = startSearch + match.index;
+  return { start, end: start + match[0].length };
+}
diff --git a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/TabStickyBottomButtonBar.tsx b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/TabStickyBottomButtonBar.tsx
index 1fa40d2fb..831a903ea 100644
--- a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/TabStickyBottomButtonBar.tsx
+++ b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/TabStickyBottomButtonBar.tsx
@@ -5,19 +5,23 @@
 
 import { ApiStiProtectionProcedure } from "@eshg/employee-portal-api/stiProtection";
 import { SubmitButton } from "@eshg/lib-portal/components/buttons/SubmitButton";
-import { InternalLinkButton } from "@eshg/lib-portal/components/navigation/InternalLinkButton";
+import { Button } from "@mui/joy";
 import { useFormikContext } from "formik";
+import { useRouter } from "next/navigation";
 
 import { routes } from "@/lib/businessModules/stiProtection/shared/routes";
 import { StickyBottomButtonBar } from "@/lib/shared/components/buttons/StickyBottomButtonBar";
 
 export interface TabStickyBottomButtonBarProps {
+  onCancel?: () => void;
   procedure: ApiStiProtectionProcedure;
 }
 
 export function TabStickyBottomButtonBar({
   procedure,
+  onCancel,
 }: TabStickyBottomButtonBarProps) {
+  const router = useRouter();
   const { isSubmitting } = useFormikContext();
 
   return (
@@ -25,12 +29,19 @@ export function TabStickyBottomButtonBar({
       sx={{ padding: "0.75rem 1.5rem" }}
       right={
         <>
-          <InternalLinkButton
-            href={routes.procedures.byId(procedure.id).details}
+          <Button
             variant="plain"
+            onClick={() => {
+              if (onCancel) {
+                onCancel();
+              } else {
+                router.push(routes.procedures.byId(procedure.id).details);
+              }
+            }}
+            aria-disabled={isSubmitting}
           >
             Abbrechen
-          </InternalLinkButton>
+          </Button>
           <SubmitButton submitting={isSubmitting}>Speichern</SubmitButton>
         </>
       }
diff --git a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/consultation/ConsultationForm.tsx b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/consultation/ConsultationForm.tsx
index 31e8472ab..3a7e61994 100644
--- a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/consultation/ConsultationForm.tsx
+++ b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/consultation/ConsultationForm.tsx
@@ -15,12 +15,14 @@ import { Divider, Sheet, Typography } from "@mui/joy";
 import { Formik } from "formik";
 
 import { useUpsertConsultation } from "@/lib/businessModules/stiProtection/api/mutations/consultation";
+import { TextTemplatesSidebarProvider } from "@/lib/businessModules/stiProtection/components/textTemplates/TextTemplatesSidebarProvider";
+import { TextareaFieldWithTextTemplates } from "@/lib/businessModules/stiProtection/components/textTemplates/TextareaFieldWithTextTemplates";
+import { ApiTextTemplateContext } from "@/lib/businessModules/stiProtection/components/textTemplates/constants";
 import {
   SidecarFormLayout,
   SidecarSheet,
 } from "@/lib/businessModules/stiProtection/features/procedures/SidecarFormLayout";
 import { TabStickyBottomButtonBar } from "@/lib/businessModules/stiProtection/features/procedures/TabStickyBottomButtonBar";
-import { TextareaField } from "@/lib/shared/components/formFields/TextareaField";
 
 import { GeneralSection } from "./GeneralSection";
 import { PregnancySection } from "./PregnancySection";
@@ -71,10 +73,13 @@ export function ConsultationForm({
             <Typography level="h3" mb={3}>
               Zusatzinfos
             </Typography>
-            <TextareaField
-              name="general.notes"
-              label="Allgemeine Bemerkungen"
-            />
+            <TextTemplatesSidebarProvider>
+              <TextareaFieldWithTextTemplates
+                name="general.notes"
+                label="Allgemeine Bemerkungen"
+                context={ApiTextTemplateContext.Consultation}
+              />
+            </TextTemplatesSidebarProvider>
           </SidecarSheet>
         </SidecarFormLayout>
         <TabStickyBottomButtonBar procedure={procedure} />
diff --git a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/details/AnonIdentityDocumentCard.tsx b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/details/AnonIdentityDocumentCard.tsx
index a385b7c85..c842d64e8 100644
--- a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/details/AnonIdentityDocumentCard.tsx
+++ b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/details/AnonIdentityDocumentCard.tsx
@@ -25,6 +25,7 @@ export function AnonIdentityDocumentCard({
         <DetailsColumn>
           <DetailsCell
             label="Anmeldecode"
+            valueIsDiv
             value={
               <DisplayAccessCode code={procedure.person.accessCode} bold />
             }
diff --git a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/details/CloseAndReopenDialogs.tsx b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/details/CloseAndReopenDialogs.tsx
index a20cdc98e..c5ee4fcd2 100644
--- a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/details/CloseAndReopenDialogs.tsx
+++ b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/details/CloseAndReopenDialogs.tsx
@@ -165,21 +165,23 @@ export function ReopenConfirmationDialog({
       onConfirm={onConfirm}
     >
       <DetailsTable>
-        <tr>
-          <th scope="row">Aktenzeichen</th>
-          <td>-</td>
-        </tr>
-        <tr>
-          <th scope="row">Geburtsjahr</th>
-          <td>{personDetails.yearOfBirth}</td>
-        </tr>
-        <tr>
-          <th scope="row">Geburtsland</th>
-          <td>
-            {personDetails.countryOfBirth &&
-              translateCountry(personDetails.countryOfBirth)}
-          </td>
-        </tr>
+        <tbody>
+          <tr>
+            <th scope="row">Aktenzeichen</th>
+            <td>-</td>
+          </tr>
+          <tr>
+            <th scope="row">Geburtsjahr</th>
+            <td>{personDetails.yearOfBirth}</td>
+          </tr>
+          <tr>
+            <th scope="row">Geburtsland</th>
+            <td>
+              {personDetails.countryOfBirth &&
+                translateCountry(personDetails.countryOfBirth)}
+            </td>
+          </tr>
+        </tbody>
       </DetailsTable>
     </EmployeePortalConfirmationDialog>
   );
diff --git a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/details/CreateAppointmentSidebar.tsx b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/details/CreateAppointmentSidebar.tsx
index d1d4c2821..db6233983 100644
--- a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/details/CreateAppointmentSidebar.tsx
+++ b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/details/CreateAppointmentSidebar.tsx
@@ -28,6 +28,7 @@ import {
 } from "@/lib/businessModules/stiProtection/features/procedures/addNewProcedure/SummaryForm";
 import {
   deleteUndefined,
+  isProcedureOpen,
   optionalInt,
 } from "@/lib/businessModules/stiProtection/shared/helpers";
 import { MultiFormButtonBar } from "@/lib/shared/components/form/MultiFormButtonBar";
@@ -156,6 +157,8 @@ export function CreateAppointmentSidebar({
   });
 
   async function handleSubmit(values: CreateAppointmentForm) {
+    if (!isProcedureOpen(procedure)) return;
+
     if (editAppointmentType) {
       await editAppointment.mutateAsync({
         id: procedure.id,
diff --git a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/diagnosis/DiagnosisForm.tsx b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/diagnosis/DiagnosisForm.tsx
index 8216bbb63..a7a9d38e0 100644
--- a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/diagnosis/DiagnosisForm.tsx
+++ b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/diagnosis/DiagnosisForm.tsx
@@ -16,12 +16,13 @@ import { FormPlus } from "@eshg/lib-portal/components/form/FormPlus";
 import { DateField } from "@eshg/lib-portal/components/formFields/DateField";
 import { InputField } from "@eshg/lib-portal/components/formFields/InputField";
 import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
-import { Add, Delete } from "@mui/icons-material";
+import { Add, Delete, Edit } from "@mui/icons-material";
 import { Button, IconButton, Sheet, Stack, Typography } from "@mui/joy";
 import {
   FieldArray,
   FieldArrayRenderProps,
   Formik,
+  FormikProps,
   useFormikContext,
 } from "formik";
 import { PropsWithChildren } from "react";
@@ -33,10 +34,12 @@ import {
   SidecarSheet,
 } from "@/lib/businessModules/stiProtection/features/procedures/SidecarFormLayout";
 import { TabStickyBottomButtonBar } from "@/lib/businessModules/stiProtection/features/procedures/TabStickyBottomButtonBar";
+import { useOnCancelForm } from "@/lib/businessModules/stiProtection/shared/helpers";
 import { CheckboxField } from "@/lib/shared/components/formFields/CheckboxField";
 import { CheckboxGroupField } from "@/lib/shared/components/formFields/CheckboxGroupField";
 import { TextareaField } from "@/lib/shared/components/formFields/TextareaField";
 
+import { useIcd10Sidebar } from "./Icd10Sidebar";
 import {
   API_DIAGNOSIS_TEST_OPTIONS,
   DiagnosisFormData,
@@ -64,6 +67,15 @@ export function DiagnosisForm({
     },
   });
 
+  const onCancelForm = useOnCancelForm<DiagnosisFormData>();
+
+  function handleCancel({ dirty, resetForm }: FormikProps<DiagnosisFormData>) {
+    onCancelForm({
+      dirty,
+      reset: resetForm,
+    });
+  }
+
   function onSubmit(values: DiagnosisFormData) {
     const diagnosis = mapFormToApi(values);
     return upsertDiagnosis.mutateAsync(diagnosis);
@@ -71,55 +83,95 @@ export function DiagnosisForm({
 
   return (
     <Formik initialValues={mapApiToForm(diagnosis)} onSubmit={onSubmit}>
-      <FormPlus sx={{ height: "100%" }}>
-        <SidecarFormLayout>
-          <Sheet>
-            <Stack gap={5}>
-              <Typography level="h2">Diagnose</Typography>
-
-              <SectionGrid defaultColumn={1}>
-                <TextareaField name="results" label="Ergebnisse" />
-              </SectionGrid>
-              <FieldArray name="medications" render={MedicationsSection} />
-              <TypesOfTestsSection />
-            </Stack>
-          </Sheet>
-
-          <SidecarSheet>
-            <Typography level="h3" mb={3}>
-              Zusatzinfos
-            </Typography>
-            <Stack rowGap={5}>
-              <TextareaField name="notes" label="Allgemeine Bemerkungen" />
-              <CheckboxField name="resultsShared" label="Ergebnis mitgeteilt" />
-            </Stack>
-          </SidecarSheet>
-        </SidecarFormLayout>
-        <TabStickyBottomButtonBar procedure={procedure} />
-      </FormPlus>
+      {(formikProps) => (
+        <FormPlus sx={{ height: "100%" }}>
+          <SidecarFormLayout>
+            <Sheet>
+              <Stack gap={5}>
+                <Typography level="h2">Diagnose</Typography>
+                <SectionGrid defaultColumn={1}>
+                  <TextareaField name="results" label="Ergebnisse" />
+                </SectionGrid>
+                <FieldArray name="medications" render={MedicationsSection} />
+                <FindingsSection />
+                <TypesOfTestsSection />
+              </Stack>
+            </Sheet>
+
+            <SidecarSheet>
+              <Typography level="h3" mb={3}>
+                Zusatzinfos
+              </Typography>
+              <Stack rowGap={5}>
+                <TextareaField name="notes" label="Allgemeine Bemerkungen" />
+                <CheckboxField
+                  name="resultsShared"
+                  label="Ergebnis mitgeteilt"
+                />
+              </Stack>
+            </SidecarSheet>
+          </SidecarFormLayout>
+          <TabStickyBottomButtonBar
+            procedure={procedure}
+            onCancel={() => handleCancel(formikProps)}
+          />
+        </FormPlus>
+      )}
     </Formik>
   );
 }
 
-function TypesOfTestsSection() {
-  const { values } = useFormikContext<DiagnosisFormData>();
-  const hasOtherTypeOfTest = values.typesOfTests.includes(ApiTestType.Other);
+function FindingsSection() {
+  const {
+    values: { findings },
+    setFieldValue,
+  } = useFormikContext<DiagnosisFormData>();
+  const icd10Sidebar = useIcd10Sidebar();
+
+  function handleClickIcd10Code() {
+    icd10Sidebar.open({
+      initiallySelectedCodes: findings ?? [],
+      onSubmit: async (selectedCodes) => {
+        await setFieldValue("findings", selectedCodes);
+      },
+    });
+  }
+
   return (
-    <SectionGrid defaultColumn={1}>
-      <CheckboxGroupField
-        name="typesOfTests"
-        label="Art des Tests"
-        options={API_DIAGNOSIS_TEST_OPTIONS}
-        orientation="vertical"
+    <SectionGrid
+      defaultColumn={1}
+      sx={{ rowGap: 2 }}
+      breakpoint="xxl"
+      id="findings-section-id"
+    >
+      <Typography level="title-md" aria-describedby="findings-section-id">
+        Befunde
+      </Typography>
+      <Stack
+        aria-label="findings-section-icd-10-codes"
+        direction="column"
+        rowGap={1}
       >
-        {hasOtherTypeOfTest ? (
-          <InputField
-            name="otherTests"
-            label="Bezeichnung des Tests"
-            required="Bitte die Bezeichnung des Tests angeben."
-          />
-        ) : null}
-      </CheckboxGroupField>
+        {findings?.map(({ code, title }) => (
+          <Stack key={code} direction="row" aria-label="icd-10-code">
+            <Typography
+              aria-label="icd-10-code-id"
+              mr={1}
+            >{`${code}: `}</Typography>
+            <Typography aria-label="icd-10-code-title">{title}</Typography>
+          </Stack>
+        ))}
+      </Stack>
+      <HiddenIfDisabled>
+        <Button
+          sx={{ width: "fit-content" }}
+          startDecorator={<Edit />}
+          variant="plain"
+          onClick={handleClickIcd10Code}
+        >
+          Befund bearbeiten
+        </Button>
+      </HiddenIfDisabled>
     </SectionGrid>
   );
 }
@@ -187,6 +239,30 @@ function MedicationsSection({ remove, push, form }: FieldArrayRenderProps) {
   );
 }
 
+function TypesOfTestsSection() {
+  const { values } = useFormikContext<DiagnosisFormData>();
+  const hasOtherTypeOfTest = values.typesOfTests.includes(ApiTestType.Other);
+  return (
+    <SectionGrid defaultColumn={1}>
+      <CheckboxGroupField
+        name="typesOfTests"
+        label="Art der Tests"
+        labelLevel="title-md"
+        options={API_DIAGNOSIS_TEST_OPTIONS}
+        orientation="vertical"
+      >
+        {hasOtherTypeOfTest ? (
+          <InputField
+            name="otherTests"
+            label="Bezeichnung des Tests"
+            required="Bitte die Bezeichnung des Tests angeben."
+          />
+        ) : null}
+      </CheckboxGroupField>
+    </SectionGrid>
+  );
+}
+
 function HiddenIfDisabled({ children }: PropsWithChildren) {
   const disabled = useIsFormDisabled();
   if (disabled) {
diff --git a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/diagnosis/Icd10Sidebar.tsx b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/diagnosis/Icd10Sidebar.tsx
new file mode 100644
index 000000000..0fd3876c7
--- /dev/null
+++ b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/diagnosis/Icd10Sidebar.tsx
@@ -0,0 +1,233 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+"use client";
+
+import { ApiIcd10Code } from "@eshg/base-api";
+import { Close, SearchOutlined } from "@mui/icons-material";
+import {
+  Box,
+  Button,
+  Checkbox,
+  FormControl,
+  FormLabel,
+  IconButton,
+  Input,
+  Stack,
+  Table,
+  styled,
+  useTheme,
+} from "@mui/joy";
+import { SxProps } from "@mui/joy/styles/types";
+import { FormikErrors } from "formik";
+import { ChangeEvent, TdHTMLAttributes, useMemo, useState } from "react";
+import { useDebounce } from "use-debounce";
+
+import { useSearchIcd10Codes } from "@/lib/baseModule/api/queries/icd10Codes";
+import { ButtonBar } from "@/lib/shared/components/buttons/ButtonBar";
+import { DrawerProps } from "@/lib/shared/components/drawer/drawerContext";
+import {
+  UseSidebarResult,
+  useSidebar,
+} from "@/lib/shared/components/drawer/useSidebar";
+import { SidebarActions } from "@/lib/shared/components/sidebar/SidebarActions";
+import { SidebarContent } from "@/lib/shared/components/sidebar/SidebarContent";
+
+import { DiagnosisFormData, sortIcd10Codes } from "./helpers";
+
+export function useIcd10Sidebar(): UseSidebarResult<Icd10SidebarProps> {
+  return useSidebar({
+    component: Icd10Sidebar,
+  });
+}
+
+export interface Icd10SidebarProps extends DrawerProps {
+  onSubmit: (
+    selectedCodes: ApiIcd10Code[],
+  ) => Promise<void | FormikErrors<DiagnosisFormData>>;
+  initiallySelectedCodes: ApiIcd10Code[];
+}
+
+const StyledTable = styled(Table)({
+  td: {
+    verticalAlign: "top",
+  },
+  tr: {
+    cursor: "pointer",
+  },
+});
+
+function StyledTd({
+  children,
+  ...props
+}: Omit<TdHTMLAttributes<HTMLTableDataCellElement>, "style"> & {
+  sx?: SxProps;
+}) {
+  return (
+    <Box component={"td"} {...props}>
+      {children}
+    </Box>
+  );
+}
+
+function Icd10Sidebar(props: Icd10SidebarProps) {
+  const theme = useTheme();
+  const [selectedCodes, setSelectedCodes] = useState<ApiIcd10Code[]>(
+    props.initiallySelectedCodes,
+  );
+  const [searchString, setSearchString] = useState<string>("");
+  const [debouncedSearchString] = useDebounce(searchString, 250, {
+    trailing: true,
+  });
+  const searchResult = useSearchIcd10Codes({
+    searchString: debouncedSearchString,
+  });
+
+  const isSearchMode = debouncedSearchString.length >= 1;
+  const displayedCodes = useMemo(() => {
+    const codes =
+      isSearchMode && searchResult.isSuccess
+        ? searchResult.data.codes
+        : selectedCodes;
+
+    return sortIcd10Codes(codes);
+  }, [isSearchMode, searchResult, selectedCodes]);
+
+  function addToSelection(addCode: ApiIcd10Code) {
+    const nextCodes = sortIcd10Codes([...selectedCodes, addCode]);
+    setSelectedCodes(nextCodes);
+  }
+
+  function removeFromSelection(removeCode: ApiIcd10Code) {
+    setSelectedCodes(
+      selectedCodes.filter(({ code }) => code !== removeCode.code),
+    );
+  }
+
+  function toggleSelection(icd10Code: ApiIcd10Code) {
+    if (selectedCodes.find(({ code }) => code === icd10Code.code)) {
+      removeFromSelection(icd10Code);
+    } else {
+      addToSelection(icd10Code);
+    }
+  }
+
+  function handleChangeSearchInput(event: ChangeEvent<HTMLInputElement>) {
+    setSearchString(event.target.value);
+  }
+
+  function handleClearSearchInput() {
+    setSearchString("");
+  }
+
+  async function handleSubmit() {
+    await props.onSubmit(selectedCodes);
+    props.onClose();
+  }
+
+  return (
+    <>
+      <SidebarContent title="ICD-10 Katalog">
+        <Stack gap={3}>
+          <FormControl size="md">
+            <FormLabel>Suche</FormLabel>
+            <Input
+              value={searchString}
+              onChange={handleChangeSearchInput}
+              startDecorator={<SearchOutlined />}
+              endDecorator={
+                searchString.length > 0 && (
+                  <IconButton
+                    aria-label="Suche zurücksetzen"
+                    onClick={handleClearSearchInput}
+                  >
+                    <Close />
+                  </IconButton>
+                )
+              }
+            />
+          </FormControl>
+          <Button
+            variant="plain"
+            onClick={() => setSearchString("")}
+            sx={{
+              width: "fit-content",
+              "&.Mui-disabled": {
+                color: theme.palette.primary.plainColor,
+              },
+            }}
+            disabled={!searchString}
+          >
+            {`${selectedCodes.length} Befunde ausgewählt`}
+          </Button>
+          <StyledTable>
+            <tbody>
+              {displayedCodes.map((currentRowCode) => (
+                <tr
+                  key={currentRowCode.code}
+                  onClick={() => toggleSelection(currentRowCode)}
+                >
+                  <StyledTd sx={{ width: "40px", paddingLeft: 0 }}>
+                    <Checkbox
+                      checked={
+                        !!selectedCodes.find(
+                          ({ code }) => code === currentRowCode.code,
+                        )
+                      }
+                      size="sm"
+                      variant="outlined"
+                      slotProps={{
+                        input: {
+                          "aria-label": currentRowCode.code,
+                          "aria-describedby": `${currentRowCode.code}-title`,
+                        },
+                      }}
+                    />
+                  </StyledTd>
+                  <StyledTd
+                    id={`${currentRowCode.code}-code`}
+                    sx={{
+                      width: "72px",
+                      fontWeight: currentRowCode.isGroup ? "500" : "normal",
+                      whiteSpace: "nowrap",
+                    }}
+                  >
+                    {currentRowCode.code}
+                  </StyledTd>
+                  <StyledTd
+                    id={`${currentRowCode.code}-title`}
+                    sx={{
+                      paddingRight: 0,
+                      fontWeight: currentRowCode.isGroup ? "500" : "normal",
+                    }}
+                  >
+                    {currentRowCode.title}
+                  </StyledTd>
+                </tr>
+              ))}
+            </tbody>
+          </StyledTable>
+        </Stack>
+      </SidebarContent>
+      <SidebarActions>
+        <ButtonBar
+          right={[
+            <Button
+              key="cancel"
+              onClick={() => props.onClose()}
+              color="neutral"
+              variant="soft"
+            >
+              Abbrechen
+            </Button>,
+            <Button key="submit" onClick={handleSubmit} color="primary">
+              Übernehmen
+            </Button>,
+          ]}
+        />
+      </SidebarActions>
+    </>
+  );
+}
diff --git a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/diagnosis/helpers.ts b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/diagnosis/helpers.ts
index 7ed4116a0..216bae9c8 100644
--- a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/diagnosis/helpers.ts
+++ b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/diagnosis/helpers.ts
@@ -5,6 +5,7 @@
 
 import {
   ApiDiagnosis,
+  ApiIcd10Code,
   ApiTestType,
 } from "@eshg/employee-portal-api/stiProtection";
 import { SelectOption } from "@eshg/lib-portal/components/formFields/SelectOptions";
@@ -20,6 +21,8 @@ export interface DiagnosisFormData {
   otherTests: string;
   notes: string;
   resultsShared: boolean | undefined;
+  selectedCodes?: string[];
+  findings?: ApiIcd10Code[];
 }
 
 export interface MedicationFormData {
@@ -54,6 +57,7 @@ export function mapApiToForm(api: ApiDiagnosis): DiagnosisFormData {
     otherTests: api.otherTestTypeName ?? "",
     notes: api.generalRemarks ?? "",
     resultsShared: api.resultsCommunicated,
+    findings: sortIcd10Codes(api.findings),
   };
 }
 
@@ -69,5 +73,21 @@ export function mapFormToApi(data: DiagnosisFormData): ApiDiagnosis {
     otherTestTypeName: mapOptionalValue(data.otherTests),
     generalRemarks: mapOptionalValue(data.notes),
     resultsCommunicated: data.resultsShared ?? false,
+    findings: data.findings ?? [],
   };
 }
+
+export function sortIcd10Codes(icd10Codes: ApiIcd10Code[] = []) {
+  function compareByCode(a: ApiIcd10Code, b: ApiIcd10Code) {
+    return a.code.localeCompare(b.code);
+  }
+  const groupCodes = icd10Codes
+    .filter(({ isGroup }) => isGroup)
+    .sort(compareByCode);
+  const nonGroupCodes = icd10Codes
+    .filter(({ isGroup }) => !isGroup)
+    .sort(compareByCode);
+  const groupPrioritizedCodes = [...groupCodes, ...nonGroupCodes];
+
+  return groupPrioritizedCodes;
+}
diff --git a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/examination/rapidTest/RapidTestExamination.tsx b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/examination/rapidTest/RapidTestExamination.tsx
index 20ea6e8ca..88c5ab7ee 100644
--- a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/examination/rapidTest/RapidTestExamination.tsx
+++ b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/examination/rapidTest/RapidTestExamination.tsx
@@ -6,16 +6,16 @@
 import { ApiRapidTestExamination } from "@eshg/employee-portal-api/stiProtection";
 import { FormPlus } from "@eshg/lib-portal/components/form/FormPlus";
 import { Box, Divider, Grid, Sheet, Stack, Typography } from "@mui/joy";
-import { Formik, FormikState } from "formik";
+import { Formik } from "formik";
 
 import { useUpsertRapidTest } from "@/lib/businessModules/stiProtection/api/mutations/examination";
 import { ExaminationStickyBottomButtonBar } from "@/lib/businessModules/stiProtection/features/procedures/examination/ExaminationStickyBottomButtonBar";
 import { ExaminationTabNavPanel } from "@/lib/businessModules/stiProtection/features/procedures/examination/ExaminationTabNavPanel";
+import { useOnCancelForm } from "@/lib/businessModules/stiProtection/shared/helpers";
 import { CheckboxField } from "@/lib/shared/components/formFields/CheckboxField";
 import { TextareaField } from "@/lib/shared/components/formFields/TextareaField";
 import { SidePanel } from "@/lib/shared/components/sidePanel/SidePanel";
 import { SidePanelTitle } from "@/lib/shared/components/sidePanel/SidePanelTitle";
-import { useConfirmationDialog } from "@/lib/shared/hooks/useConfirmationDialog";
 
 import {
   RapidTestData,
@@ -139,21 +139,7 @@ export function RapidTestExamination(props: RapidTestExaminationProps) {
     });
   }
 
-  const { openCancelDialog } = useConfirmationDialog();
-
-  function onCancel(
-    dirty: boolean,
-    reset: (state?: Partial<FormikState<RapidTestExaminationData>>) => void,
-  ) {
-    if (!dirty) {
-      return;
-    }
-    openCancelDialog({
-      onConfirm: () => {
-        reset();
-      },
-    });
-  }
+  const onCancel = useOnCancelForm<RapidTestExaminationData>();
 
   return (
     <Formik
@@ -247,7 +233,7 @@ export function RapidTestExamination(props: RapidTestExaminationProps) {
           </Box>
           <ExaminationStickyBottomButtonBar
             isSubmitting={isSubmitting}
-            onClick={() => onCancel(dirty, resetForm)}
+            onClick={() => onCancel({ dirty, reset: resetForm })}
           />
         </FormPlus>
       )}
@@ -270,7 +256,7 @@ function ExaminationTabInfo() {
           <Typography>Allgemeine Bemerkung</Typography>
           <TextareaField name="generalRemarks" minRows={4} />
         </Stack>
-        <CheckboxField name="testsPayed" label={"Tests bezahlt"} />
+        <CheckboxField name="testsPayed" label="Tests bezahlt" />
       </Stack>
     </SidePanel>
   );
diff --git a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/medicalHistory/MedicalHistoryForm.tsx b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/medicalHistory/MedicalHistoryForm.tsx
index a13e92622..ebb156ae1 100644
--- a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/medicalHistory/MedicalHistoryForm.tsx
+++ b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/medicalHistory/MedicalHistoryForm.tsx
@@ -31,6 +31,7 @@ import {
 } from "@/lib/businessModules/stiProtection/api/queries/medicalHistoryDocument";
 import { SectionGrid } from "@/lib/businessModules/stiProtection/components/procedures/procedureDetails/SectionGrid";
 import { CONCERN_VALUES } from "@/lib/businessModules/stiProtection/shared/constants";
+import { isProcedureOpen } from "@/lib/businessModules/stiProtection/shared/helpers";
 import { routes } from "@/lib/businessModules/stiProtection/shared/routes";
 import { StickyBottomButtonBar } from "@/lib/shared/components/buttons/StickyBottomButtonBar";
 import { ConfirmLeaveDirtyFormEffect } from "@/lib/shared/components/form/ConfirmLeaveDirtyFormEffect";
@@ -185,6 +186,7 @@ function MedicalHistoryStickyBottomButtonBar(
     isSubmitting,
     onClick: fetchMedicalHistoryDocument,
   } = props;
+  const isOpenProcedure = isProcedureOpen(stiProcedure);
 
   return (
     <StickyBottomButtonBar
@@ -197,7 +199,9 @@ function MedicalHistoryStickyBottomButtonBar(
           >
             Abbrechen
           </InternalLinkButton>
-          <SubmitButton submitting={isSubmitting}>Speichern</SubmitButton>
+          <SubmitButton submitting={isSubmitting} disabled={!isOpenProcedure}>
+            Speichern
+          </SubmitButton>
         </>
       }
       left={
diff --git a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/medicalHistory/helpers.ts b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/medicalHistory/helpers.ts
index dd0fcbd05..c3949a033 100644
--- a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/medicalHistory/helpers.ts
+++ b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/medicalHistory/helpers.ts
@@ -100,19 +100,11 @@ export function mapToFormValues(
     previousIllnesses: mapApiPreviousIllnessesToForm(apiData.previousIllnesses),
     sexualOrientationAndContact: {
       numberOfSexualPartnersLast12Months:
-        ifSexWork(
-          apiData,
-          (d) => d.riskContacts?.numberOfSexualPartnersLast12Months,
-        ) ?? "",
+        apiData.riskContacts?.numberOfSexualPartnersLast12Months ?? "",
       sexualContactFactors:
-        fromSet(
-          ifSexWork(apiData, (d) => d.riskContacts?.partnerRiskFactors),
-        ) ?? [],
-      sexualContactGenders: fromSet(
-        ifSexWork(apiData, (d) => d.riskContacts?.sexualContacts),
-      ),
-      sexualOrientation:
-        ifSexWork(apiData, (d) => d.riskContacts?.sexualOrientation) ?? null,
+        fromSet(apiData.riskContacts?.partnerRiskFactors) ?? [],
+      sexualContactGenders: fromSet(apiData.riskContacts?.sexualContacts),
+      sexualOrientation: apiData.riskContacts?.sexualOrientation ?? null,
       startInSexWork: mapToMonthAndYear(
         ifSexWork(apiData, (d) => d.sexWorkRiskContacts?.startInSexWorkDate),
       ),
diff --git a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/medicalHistory/sections/SexualOrientationAndContact.tsx b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/medicalHistory/sections/SexualOrientationAndContact.tsx
index affd1fe98..36ad83069 100644
--- a/employee-portal/src/lib/businessModules/stiProtection/features/procedures/medicalHistory/sections/SexualOrientationAndContact.tsx
+++ b/employee-portal/src/lib/businessModules/stiProtection/features/procedures/medicalHistory/sections/SexualOrientationAndContact.tsx
@@ -17,10 +17,8 @@ import {
   sexualContactGenderOptions,
   sexualOrientationOptions,
 } from "@/lib/businessModules/stiProtection/features/procedures/medicalHistory/options";
-import {
-  CheckboxGroupField,
-  FieldSetControl,
-} from "@/lib/shared/components/formFields/CheckboxGroupField";
+import { CheckboxGroupField } from "@/lib/shared/components/formFields/CheckboxGroupField";
+import { FieldSetControl } from "@/lib/shared/components/formFields/FieldSetControl";
 import { Legend } from "@/lib/shared/components/formFields/Legend";
 import { validatePositiveInteger } from "@/lib/shared/helpers/validators";
 
diff --git a/employee-portal/src/lib/businessModules/stiProtection/shared/constants.ts b/employee-portal/src/lib/businessModules/stiProtection/shared/constants.ts
index 5966fe90b..19d7f01c2 100644
--- a/employee-portal/src/lib/businessModules/stiProtection/shared/constants.ts
+++ b/employee-portal/src/lib/businessModules/stiProtection/shared/constants.ts
@@ -42,6 +42,7 @@ export const systemProgressEntryTypeTitles: Record<string, string> = {
   MEDICAL_HISTORY_UPDATED: "Anamnesebogen aktualisiert",
   CONSULTATION_UPDATED: "Konsultation aktualisiert",
   DIAGNOSIS_UPDATED: "Diagnose aktualisiert",
+  FOLLOW_UP_CREATED: "Folgevorgang erstellt",
 };
 
 export const CONCERN_VALUES: EnumMap<ApiConcern> = {
diff --git a/employee-portal/src/lib/businessModules/stiProtection/shared/helpers.ts b/employee-portal/src/lib/businessModules/stiProtection/shared/helpers.ts
index ccb31df4b..5639a3ce6 100644
--- a/employee-portal/src/lib/businessModules/stiProtection/shared/helpers.ts
+++ b/employee-portal/src/lib/businessModules/stiProtection/shared/helpers.ts
@@ -11,6 +11,9 @@ import {
   ApiStiProtectionProcedureOverview,
 } from "@eshg/employee-portal-api/stiProtection";
 import { isNonEmptyString } from "@eshg/lib-portal/helpers/guards";
+import { FormikState } from "formik";
+
+import { useConfirmationDialog } from "@/lib/shared/hooks/useConfirmationDialog";
 
 export function concernToAppointmentType(
   concern: ApiConcern | "RESULTS_REVIEW",
@@ -111,3 +114,28 @@ export function getOpenAppointmentsFromProcedure(
 
   return openAppointments;
 }
+
+export function useOnCancelForm<T>() {
+  const { openCancelDialog } = useConfirmationDialog();
+
+  return function onCancelForm({
+    dirty,
+    onConfirm,
+    reset,
+  }: {
+    dirty: boolean;
+    onConfirm?: () => void;
+    reset: (state?: Partial<FormikState<T>>) => void;
+  }) {
+    if (!dirty) {
+      return;
+    }
+
+    return openCancelDialog({
+      onConfirm: () => {
+        reset();
+        if (onConfirm) onConfirm();
+      },
+    });
+  };
+}
diff --git a/employee-portal/src/lib/businessModules/stiProtection/shared/routes.ts b/employee-portal/src/lib/businessModules/stiProtection/shared/routes.ts
index 4a7c84edb..536722759 100644
--- a/employee-portal/src/lib/businessModules/stiProtection/shared/routes.ts
+++ b/employee-portal/src/lib/businessModules/stiProtection/shared/routes.ts
@@ -29,4 +29,5 @@ export const routes = {
     index: `${appointmentBlockPath}`,
     new: `${appointmentBlockPath}/new`,
   },
+  textTemplates: `${basePath}/text-templates`,
 } as const;
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/clients.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/clients.ts
index c3813751c..df7430c2f 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/clients.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/clients.ts
@@ -3,6 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { useApiConfiguration } from "@eshg/lib-portal/api/ApiProvider";
 import {
   AppointmentBlockApi,
   AppointmentTypeApi,
@@ -23,8 +24,7 @@ import {
   UnusedBaseInventoryVaccineApi,
   VaccinationConsultationApi,
   VaccineApi,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { useApiConfiguration } from "@eshg/lib-portal/api/ApiProvider";
+} from "@eshg/travel-medicine-api";
 
 function useConfiguration() {
   const configurationParameters = useApiConfiguration(
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/download/files.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/download/files.ts
index 90b2802fa..ec178bb75 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/download/files.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/download/files.ts
@@ -3,11 +3,11 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { useFileDownload } from "@eshg/lib-portal/api/files/download";
 import {
   GetInformationStatementPdfRequest,
   GetMedicalHistoryPdfRequest,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { useFileDownload } from "@eshg/lib-portal/api/files/download";
+} from "@eshg/travel-medicine-api";
 
 import {
   useFileApi,
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/models/Appointment.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/models/Appointment.ts
index 30773a81b..571a7315d 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/models/Appointment.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/models/Appointment.ts
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAppointment } from "@eshg/employee-portal-api/travelMedicine";
+import { ApiAppointment } from "@eshg/travel-medicine-api";
 
 export interface Appointment {
   readonly start: Date;
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/models/AppointmentBlock.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/models/AppointmentBlock.ts
index ac085a1e9..9ed1a1413 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/models/AppointmentBlock.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/models/AppointmentBlock.ts
@@ -3,16 +3,16 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import {
-  ApiAppointmentType,
-  ApiGetAppointmentBlock,
-  ApiGetAppointmentBlockGroup,
-} from "@eshg/employee-portal-api/travelMedicine";
 import {
   BaseEntity,
   mapBaseEntity,
 } from "@eshg/lib-employee-portal/api/models/BaseEntity";
 import { assertNonEmptyArray } from "@eshg/lib-portal/helpers/assertions";
+import {
+  ApiAppointmentType,
+  ApiGetAppointmentBlock,
+  ApiGetAppointmentBlockGroup,
+} from "@eshg/travel-medicine-api";
 import { first, last, sumBy } from "remeda";
 
 export interface AppointmentBlockGroup extends AppointmentBlock {
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/models/AppointmentSummary.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/models/AppointmentSummary.ts
index b024cc0c7..67855fa0d 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/models/AppointmentSummary.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/models/AppointmentSummary.ts
@@ -3,12 +3,12 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { mapOptionalValue } from "@eshg/lib-portal/helpers/form";
 import {
   ApiAppointmentBookingType,
   ApiAppointmentSummary,
   ApiAppointmentType,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { mapOptionalValue } from "@eshg/lib-portal/helpers/form";
+} from "@eshg/travel-medicine-api";
 
 export interface AppointmentSummary {
   readonly appointmentBookingType: ApiAppointmentBookingType;
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/models/AppointmentTypeConfig.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/models/AppointmentTypeConfig.ts
index 819435e21..4cbdaddb7 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/models/AppointmentTypeConfig.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/models/AppointmentTypeConfig.ts
@@ -3,14 +3,14 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import {
-  ApiAppointmentType,
-  ApiAppointmentTypeConfig,
-} from "@eshg/employee-portal-api/travelMedicine";
 import {
   BaseEntity,
   mapBaseEntity,
 } from "@eshg/lib-employee-portal/api/models/BaseEntity";
+import {
+  ApiAppointmentType,
+  ApiAppointmentTypeConfig,
+} from "@eshg/travel-medicine-api";
 
 export interface AppointmentTypeConfig extends BaseEntity {
   readonly appointmentTypeDto: ApiAppointmentType;
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/models/AssignableService.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/models/AssignableService.ts
index 0722e6bd6..3064ecfca 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/models/AssignableService.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/models/AssignableService.ts
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAssignableService } from "@eshg/employee-portal-api/travelMedicine";
 import { mapOptionalValue } from "@eshg/lib-portal/helpers/form";
+import { ApiAssignableService } from "@eshg/travel-medicine-api";
 
 export interface AssignableService {
   readonly appointmentSuggestion?: Date;
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/models/Disease.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/models/Disease.ts
index 985607320..8e8c020c1 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/models/Disease.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/models/Disease.ts
@@ -3,12 +3,12 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiDisease } from "@eshg/employee-portal-api/travelMedicine";
 import {
   BaseEntity,
   mapBaseEntity,
 } from "@eshg/lib-employee-portal/api/models/BaseEntity";
 import { mapOptionalValue } from "@eshg/lib-portal/helpers/form";
+import { ApiDisease } from "@eshg/travel-medicine-api";
 
 export interface Disease extends BaseEntity {
   readonly createdAt: Date;
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/models/InformationStatementTemplates.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/models/InformationStatementTemplates.ts
index c531b9b46..7f1c3d0f7 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/models/InformationStatementTemplates.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/models/InformationStatementTemplates.ts
@@ -3,17 +3,17 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import {
-  ApiDisease,
-  ApiInformationStatementTemplate,
-  ApiInformationStatementTemplateState,
-  ApiTemplateContent,
-} from "@eshg/employee-portal-api/travelMedicine";
 import {
   BaseEntity,
   mapBaseEntity,
 } from "@eshg/lib-employee-portal/api/models/BaseEntity";
 import { mapOptionalValue } from "@eshg/lib-portal/helpers/form";
+import {
+  ApiDisease,
+  ApiInformationStatementTemplate,
+  ApiInformationStatementTemplateState,
+  ApiTemplateContent,
+} from "@eshg/travel-medicine-api";
 
 export interface InformationStatementTemplate extends BaseEntity {
   readonly createdAt: Date;
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/models/OtherServicesTemplates.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/models/OtherServicesTemplates.ts
index f65ea63b0..ee3cb1556 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/models/OtherServicesTemplates.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/models/OtherServicesTemplates.ts
@@ -3,12 +3,12 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiOtherServiceTemplate } from "@eshg/employee-portal-api/travelMedicine";
 import {
   BaseEntity,
   mapBaseEntity,
 } from "@eshg/lib-employee-portal/api/models/BaseEntity";
 import { mapOptionalValue } from "@eshg/lib-portal/helpers/form";
+import { ApiOtherServiceTemplate } from "@eshg/travel-medicine-api";
 
 export interface OtherServicesTemplates extends BaseEntity {
   readonly createdAt: Date;
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/models/User.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/models/User.ts
index 1df9edc18..703a313c1 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/models/User.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/models/User.ts
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiUser } from "@eshg/employee-portal-api/travelMedicine";
 import { mapOptionalValue } from "@eshg/lib-portal/helpers/form";
+import { ApiUser } from "@eshg/travel-medicine-api";
 
 export interface User {
   readonly email?: string;
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/models/Vaccines.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/models/Vaccines.ts
index 40d14f624..bb396fce8 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/models/Vaccines.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/models/Vaccines.ts
@@ -3,12 +3,12 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiVaccine } from "@eshg/employee-portal-api/travelMedicine";
 import {
   BaseEntity,
   mapBaseEntity,
 } from "@eshg/lib-employee-portal/api/models/BaseEntity";
 import { mapOptionalValue } from "@eshg/lib-portal/helpers/form";
+import { ApiVaccine } from "@eshg/travel-medicine-api";
 
 import {
   Disease,
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/appointmentBlocks.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/appointmentBlocks.ts
index 6209eb607..96bee5fa3 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/appointmentBlocks.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/appointmentBlocks.ts
@@ -3,9 +3,9 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiCreateDailyAppointmentBlockGroupRequest } from "@eshg/employee-portal-api/travelMedicine";
 import { useHandledMutation } from "@eshg/lib-portal/api/useHandledMutation";
 import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+import { ApiCreateDailyAppointmentBlockGroupRequest } from "@eshg/travel-medicine-api";
 
 import { useAppointmentBlockApi } from "@/lib/businessModules/travelMedicine/api/clients";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/appointmentTypes.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/appointmentTypes.ts
index 38c1e9d54..4ea8da0ca 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/appointmentTypes.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/appointmentTypes.ts
@@ -3,9 +3,9 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiUpdateAppointmentTypeRequest } from "@eshg/employee-portal-api/travelMedicine";
 import { useHandledMutation } from "@eshg/lib-portal/api/useHandledMutation";
 import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+import { ApiUpdateAppointmentTypeRequest } from "@eshg/travel-medicine-api";
 
 import { useAppointmentTypeApi } from "@/lib/businessModules/travelMedicine/api/clients";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/diseaseApi.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/diseaseApi.ts
index 36502299f..d86536653 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/diseaseApi.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/diseaseApi.ts
@@ -3,9 +3,9 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiPostPutDiseaseRequest } from "@eshg/employee-portal-api/travelMedicine";
 import { useHandledMutation } from "@eshg/lib-portal/api/useHandledMutation";
 import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+import { ApiPostPutDiseaseRequest } from "@eshg/travel-medicine-api";
 
 import { useDiseaseApi } from "@/lib/businessModules/travelMedicine/api/clients";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/informationStatementTemplateApi.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/informationStatementTemplateApi.ts
index 1217b6f41..333f0ec96 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/informationStatementTemplateApi.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/informationStatementTemplateApi.ts
@@ -3,13 +3,13 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import {
-  ApiInformationStatementTemplateRequest,
-  PutInformationStatementTemplateRequest,
-} from "@eshg/employee-portal-api/travelMedicine";
 import { unwrapRawResponse } from "@eshg/lib-portal/api/unwrapRawResponse";
 import { useHandledMutation } from "@eshg/lib-portal/api/useHandledMutation";
 import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+import {
+  ApiInformationStatementTemplateRequest,
+  PutInformationStatementTemplateRequest,
+} from "@eshg/travel-medicine-api";
 
 import { useInformationStatementTemplateApi } from "@/lib/businessModules/travelMedicine/api/clients";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/medicalHistory.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/medicalHistory.ts
index f034fcc42..94bc5bc09 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/medicalHistory.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/medicalHistory.ts
@@ -3,9 +3,9 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiPatchMedicalHistoryRequest } from "@eshg/employee-portal-api/travelMedicine";
 import { useHandledMutation } from "@eshg/lib-portal/api/useHandledMutation";
 import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+import { ApiPatchMedicalHistoryRequest } from "@eshg/travel-medicine-api";
 
 import { useMedicalHistoryApi } from "@/lib/businessModules/travelMedicine/api/clients";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/medicalHistoryTemplates.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/medicalHistoryTemplates.ts
index e04252a7b..390dd3c63 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/medicalHistoryTemplates.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/medicalHistoryTemplates.ts
@@ -3,12 +3,12 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { useHandledMutation } from "@eshg/lib-portal/api/useHandledMutation";
+import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
 import {
   ApiPatchMedicalHistoryTemplateFlagRequest,
   ApiPostPutMedicalHistoryTemplateRequest,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { useHandledMutation } from "@eshg/lib-portal/api/useHandledMutation";
-import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+} from "@eshg/travel-medicine-api";
 
 import { useMedicalHistoryTemplateApi } from "@/lib/businessModules/travelMedicine/api/clients";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/otherServiceTemplates.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/otherServiceTemplates.ts
index 4eca12b10..e5c96575b 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/otherServiceTemplates.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/otherServiceTemplates.ts
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiPostPutOtherServiceTemplateRequest } from "@eshg/employee-portal-api/travelMedicine";
 import { useHandledMutation } from "@eshg/lib-portal/api/useHandledMutation";
+import { ApiPostPutOtherServiceTemplateRequest } from "@eshg/travel-medicine-api";
 
 import { useOtherServiceTemplateApi } from "@/lib/businessModules/travelMedicine/api/clients";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/procedureSteps.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/procedureSteps.ts
index 1a053f4a1..4fe27ed6a 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/procedureSteps.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/procedureSteps.ts
@@ -3,14 +3,14 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { unwrapRawResponse } from "@eshg/lib-portal/api/unwrapRawResponse";
+import { useHandledMutation } from "@eshg/lib-portal/api/useHandledMutation";
+import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
 import {
   DeleteAppointmentEpRequest,
   PatchAppointmentRequest,
   PatchEarliestDateRequest,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { unwrapRawResponse } from "@eshg/lib-portal/api/unwrapRawResponse";
-import { useHandledMutation } from "@eshg/lib-portal/api/useHandledMutation";
-import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+} from "@eshg/travel-medicine-api";
 
 import { useProcedureStepApi } from "@/lib/businessModules/travelMedicine/api/clients";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/vaccinationConsultation.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/vaccinationConsultation.ts
index ad778aed5..ddd049982 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/vaccinationConsultation.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/vaccinationConsultation.ts
@@ -3,6 +3,10 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { unwrapRawResponse } from "@eshg/lib-portal/api/unwrapRawResponse";
+import { useHandledMutation } from "@eshg/lib-portal/api/useHandledMutation";
+import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+import { ApiSyncPersonRequest } from "@eshg/travel-medicine-api";
 import {
   AbortDraftVaccinationConsultationRequest,
   AcceptDraftVaccinationConsultationRequest,
@@ -17,11 +21,7 @@ import {
   PatchVaccinationRequest,
   PostInformationStatementsRequest,
   PostServicesRequest,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { ApiSyncPersonRequest } from "@eshg/employee-portal-api/travelMedicine/models";
-import { unwrapRawResponse } from "@eshg/lib-portal/api/unwrapRawResponse";
-import { useHandledMutation } from "@eshg/lib-portal/api/useHandledMutation";
-import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+} from "@eshg/travel-medicine-api";
 
 import { useVaccinationConsultationApi } from "@/lib/businessModules/travelMedicine/api/clients";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/vaccines.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/vaccines.ts
index 866031ddf..a2713d738 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/vaccines.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/mutations/vaccines.ts
@@ -3,9 +3,9 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiPostPutVaccineRequest } from "@eshg/employee-portal-api/travelMedicine";
 import { useHandledMutation } from "@eshg/lib-portal/api/useHandledMutation";
 import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+import { ApiPostPutVaccineRequest } from "@eshg/travel-medicine-api";
 
 import { useVaccineApi } from "@/lib/businessModules/travelMedicine/api/clients";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/queries/appointmentBlocks.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/queries/appointmentBlocks.ts
index d09c177c7..d0d440c67 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/queries/appointmentBlocks.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/queries/appointmentBlocks.ts
@@ -3,14 +3,14 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { mapPaginatedList } from "@eshg/lib-employee-portal/api/models/PaginatedList";
+import { unwrapRawResponse } from "@eshg/lib-portal/api/unwrapRawResponse";
+import { useHandledBackgroundQuery } from "@eshg/lib-portal/api/useHandledBackgroundQuery";
 import {
   ApiAppointmentType,
   ApiCreateDailyAppointmentBlockGroupRequest,
   GetAppointmentBlockGroupsRequest,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { mapPaginatedList } from "@eshg/lib-employee-portal/api/models/PaginatedList";
-import { unwrapRawResponse } from "@eshg/lib-portal/api/unwrapRawResponse";
-import { useHandledBackgroundQuery } from "@eshg/lib-portal/api/useHandledBackgroundQuery";
+} from "@eshg/travel-medicine-api";
 import { queryOptions, useQuery } from "@tanstack/react-query";
 
 import { useAppointmentBlockApi } from "@/lib/businessModules/travelMedicine/api/clients";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/api/queries/vaccinationConsultation.ts b/employee-portal/src/lib/businessModules/travelMedicine/api/queries/vaccinationConsultation.ts
index 03fb39857..abbe828eb 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/api/queries/vaccinationConsultation.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/api/queries/vaccinationConsultation.ts
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiProcedureStatus } from "@eshg/employee-portal-api/travelMedicine";
+import { ApiProcedureStatus } from "@eshg/travel-medicine-api";
 import { queryOptions, useQuery } from "@tanstack/react-query";
 
 import { useVaccinationConsultationApi } from "@/lib/businessModules/travelMedicine/api/clients";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentBlocks/appointmentBlocksGroupForm/AppointmentBlockGroupForm.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentBlocks/appointmentBlocksGroupForm/AppointmentBlockGroupForm.tsx
index 1244b86db..00315b134 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentBlocks/appointmentBlocksGroupForm/AppointmentBlockGroupForm.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentBlocks/appointmentBlocksGroupForm/AppointmentBlockGroupForm.tsx
@@ -4,10 +4,10 @@
  */
 
 import { ApiUser } from "@eshg/base-api";
-import { ApiAppointmentType } from "@eshg/employee-portal-api/travelMedicine";
 import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
 import { isEmptyString } from "@eshg/lib-portal/helpers/guards";
 import { OptionalFieldValue } from "@eshg/lib-portal/types/form";
+import { ApiAppointmentType } from "@eshg/travel-medicine-api";
 import { Divider, Stack } from "@mui/joy";
 import { Formik, FormikErrors } from "formik";
 import { isDefined, isEmpty } from "remeda";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentBlocks/appointmentBlocksGroupForm/CreateAppointmentBlockGroupForm.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentBlocks/appointmentBlocksGroupForm/CreateAppointmentBlockGroupForm.tsx
index e884b8016..365af1bb0 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentBlocks/appointmentBlocksGroupForm/CreateAppointmentBlockGroupForm.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentBlocks/appointmentBlocksGroupForm/CreateAppointmentBlockGroupForm.tsx
@@ -5,12 +5,12 @@
 
 "use client";
 
+import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+import { mapRequiredValue } from "@eshg/lib-portal/helpers/form";
 import {
   ApiCreateDailyAppointmentBlock,
   ApiCreateDailyAppointmentBlockGroupRequest,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
-import { mapRequiredValue } from "@eshg/lib-portal/helpers/form";
+} from "@eshg/travel-medicine-api";
 import { useSuspenseQueries } from "@tanstack/react-query";
 import { useRouter } from "next/navigation";
 import { useEffect, useState } from "react";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentBlocks/appointmentBlocksTable/AppointmentBlockGroupsTable.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentBlocks/appointmentBlocksTable/AppointmentBlockGroupsTable.tsx
index cff37736f..405d8ee44 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentBlocks/appointmentBlocksTable/AppointmentBlockGroupsTable.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentBlocks/appointmentBlocksTable/AppointmentBlockGroupsTable.tsx
@@ -5,11 +5,11 @@
 
 "use client";
 
+import { formatDateTime } from "@eshg/lib-portal/formatters/dateTime";
 import {
   ApiAppointmentBlockSortKey,
   ApiAppointmentType,
-} from "@eshg/employee-portal-api/travelMedicine/models";
-import { formatDateTime } from "@eshg/lib-portal/formatters/dateTime";
+} from "@eshg/travel-medicine-api";
 import { Chip } from "@mui/joy";
 import { useSuspenseQueries } from "@tanstack/react-query";
 import { ColumnSort, createColumnHelper } from "@tanstack/react-table";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentBlocks/options.ts b/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentBlocks/options.ts
index e8a4b8f4a..7948e4180 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentBlocks/options.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentBlocks/options.ts
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAppointmentType } from "@eshg/employee-portal-api/travelMedicine";
 import { buildEnumOptions } from "@eshg/lib-portal/helpers/form";
+import { ApiAppointmentType } from "@eshg/travel-medicine-api";
 
 import { appointmentTypes } from "@/lib/businessModules/travelMedicine/shared/appointmentTypes";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentTypes/AppointmentTypeForm.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentTypes/AppointmentTypeForm.tsx
index 1a700f369..2d6849790 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentTypes/AppointmentTypeForm.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentTypes/AppointmentTypeForm.tsx
@@ -5,9 +5,9 @@
 
 "use client";
 
-import { ApiAppointmentType } from "@eshg/employee-portal-api/travelMedicine";
 import { BaseField } from "@eshg/lib-portal/components/formFields/BaseField";
 import { SingleAutocompleteField } from "@eshg/lib-portal/components/formFields/autocomplete/SingleAutocompleteField";
+import { ApiAppointmentType } from "@eshg/travel-medicine-api";
 import { FormLabel, Input, Stack, Typography } from "@mui/joy";
 import { Formik } from "formik";
 import { Ref } from "react";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentTypes/AppointmentTypeSidebar.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentTypes/AppointmentTypeSidebar.tsx
index 286236624..0060b40be 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentTypes/AppointmentTypeSidebar.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentTypes/AppointmentTypeSidebar.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAppointmentTypeConfig } from "@eshg/employee-portal-api/travelMedicine";
+import { ApiAppointmentTypeConfig } from "@eshg/travel-medicine-api";
 import { useSuspenseQueries } from "@tanstack/react-query";
 
 import { useUpdateAppointmentType } from "@/lib/businessModules/travelMedicine/api/mutations/appointmentTypes";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentTypes/columns.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentTypes/columns.tsx
index e11a5819b..acb5273b2 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentTypes/columns.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentTypes/columns.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAppointmentTypeConfig } from "@eshg/employee-portal-api/travelMedicine";
+import { ApiAppointmentTypeConfig } from "@eshg/travel-medicine-api";
 import { Edit } from "@mui/icons-material";
 import { ColumnHelper, createColumnHelper } from "@tanstack/react-table";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentTypes/translations.ts b/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentTypes/translations.ts
index 54c5840af..829e53faa 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentTypes/translations.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/appointmentTypes/translations.ts
@@ -3,11 +3,11 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { EnumMap } from "@eshg/lib-portal/types/helpers";
 import {
   ApiAppointmentType,
   ApiCreatedByUserType,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { EnumMap } from "@eshg/lib-portal/types/helpers";
+} from "@eshg/travel-medicine-api";
 
 export const APPOINTMENT_TYPES: EnumMap<ApiAppointmentType> = {
   [ApiAppointmentType.Consultation]: "Beratung",
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/diseases/DiseaseSidebar.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/diseases/DiseaseSidebar.tsx
index 60f4e59a8..02e025a79 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/diseases/DiseaseSidebar.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/diseases/DiseaseSidebar.tsx
@@ -6,7 +6,7 @@
 import {
   ApiDisease,
   ApiPostPutDiseaseRequest,
-} from "@eshg/employee-portal-api/travelMedicine";
+} from "@eshg/travel-medicine-api";
 
 import {
   PutDiseaseRequest,
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/diseases/DiseasesTable.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/diseases/DiseasesTable.tsx
index 5c4cbfcb4..45d68e52b 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/diseases/DiseasesTable.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/diseases/DiseasesTable.tsx
@@ -5,7 +5,7 @@
 
 "use client";
 
-import { ApiDisease } from "@eshg/employee-portal-api/travelMedicine";
+import { ApiDisease } from "@eshg/travel-medicine-api";
 import AddIcon from "@mui/icons-material/Add";
 import { Button } from "@mui/joy";
 import { useSuspenseQueries } from "@tanstack/react-query";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/diseases/columns.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/diseases/columns.tsx
index 9e1ca338e..3c1603911 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/diseases/columns.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/diseases/columns.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiDisease } from "@eshg/employee-portal-api/travelMedicine";
 import { formatDateTime } from "@eshg/lib-portal/formatters/dateTime";
+import { ApiDisease } from "@eshg/travel-medicine-api";
 import { Delete, Edit } from "@mui/icons-material";
 import { ColumnHelper, createColumnHelper } from "@tanstack/react-table";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/otherServiceTemplates/OtherServiceSidebar.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/otherServiceTemplates/OtherServiceSidebar.tsx
index ba0ce8497..0af4270f3 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/otherServiceTemplates/OtherServiceSidebar.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/otherServiceTemplates/OtherServiceSidebar.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiPostPutOtherServiceTemplateRequest } from "@eshg/employee-portal-api/travelMedicine";
+import { ApiPostPutOtherServiceTemplateRequest } from "@eshg/travel-medicine-api";
 
 import {
   OtherServiceFormValues,
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/otherServiceTemplates/OtherServiceTable.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/otherServiceTemplates/OtherServiceTable.tsx
index 02ef76409..6a46cafd4 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/otherServiceTemplates/OtherServiceTable.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/otherServiceTemplates/OtherServiceTable.tsx
@@ -5,8 +5,8 @@
 
 "use client";
 
-import { ApiPostPutOtherServiceTemplateRequest } from "@eshg/employee-portal-api/travelMedicine";
 import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+import { ApiPostPutOtherServiceTemplateRequest } from "@eshg/travel-medicine-api";
 import AddIcon from "@mui/icons-material/Add";
 import { Button } from "@mui/joy";
 import { useSuspenseQueries } from "@tanstack/react-query";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/otherServiceTemplates/columns.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/otherServiceTemplates/columns.tsx
index beca53bf9..0f8e39ff3 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/otherServiceTemplates/columns.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/otherServiceTemplates/columns.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiOtherServiceTemplate } from "@eshg/employee-portal-api/travelMedicine";
 import { formatDateTime } from "@eshg/lib-portal/formatters/dateTime";
+import { ApiOtherServiceTemplate } from "@eshg/travel-medicine-api";
 import { Delete, Edit } from "@mui/icons-material";
 import { ColumnHelper, createColumnHelper } from "@tanstack/react-table";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/personSidebar/PersonSidebar.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/personSidebar/PersonSidebar.tsx
index d84093b7b..395dc61e9 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/personSidebar/PersonSidebar.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/personSidebar/PersonSidebar.tsx
@@ -4,11 +4,11 @@
  */
 
 import { type ApiGetReferencePersonResponse } from "@eshg/base-api";
+import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
 import {
   ApiAppointmentBookingType,
   ApiAppointmentType,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+} from "@eshg/travel-medicine-api";
 import { FormikErrors } from "formik";
 import { ReactNode, useEffect, useRef, useState } from "react";
 import { isNullish } from "remeda";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/personSidebar/appointment/InitialAppointmentForm.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/personSidebar/appointment/InitialAppointmentForm.tsx
index 462451f10..1dfa42bb4 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/personSidebar/appointment/InitialAppointmentForm.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/personSidebar/appointment/InitialAppointmentForm.tsx
@@ -3,12 +3,12 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { SelectField } from "@eshg/lib-portal/components/formFields/SelectField";
+import { SelectOption } from "@eshg/lib-portal/components/formFields/SelectOptions";
 import {
   ApiAppointmentBookingType,
   ApiAppointmentType,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { SelectField } from "@eshg/lib-portal/components/formFields/SelectField";
-import { SelectOption } from "@eshg/lib-portal/components/formFields/SelectOptions";
+} from "@eshg/travel-medicine-api";
 import { RefObject } from "@fullcalendar/core/preact.js";
 import { Sheet, Stack } from "@mui/joy";
 import { format } from "date-fns";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/personSidebar/personSidebarHelper.ts b/employee-portal/src/lib/businessModules/travelMedicine/components/personSidebar/personSidebarHelper.ts
index e1de7946d..32b1c5803 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/personSidebar/personSidebarHelper.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/personSidebar/personSidebarHelper.ts
@@ -3,16 +3,16 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { durationBetweenDatesInMinutes } from "@eshg/lib-portal/helpers/dateTime";
+import { toDateString } from "@eshg/lib-portal/helpers/dateTime";
+import { mapOptionalValue } from "@eshg/lib-portal/helpers/form";
 import {
   ApiAppointmentBookingType,
   ApiPatchVaccinationConsultationPatientRequest,
   ApiPatient,
   ApiPostVaccinationConsultationRequest,
   ApiTravelType,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { durationBetweenDatesInMinutes } from "@eshg/lib-portal/helpers/dateTime";
-import { toDateString } from "@eshg/lib-portal/helpers/dateTime";
-import { mapOptionalValue } from "@eshg/lib-portal/helpers/form";
+} from "@eshg/travel-medicine-api";
 
 import { InitialAppointmentFormValuesProps } from "@/lib/businessModules/travelMedicine/components/personSidebar/appointment/InitialAppointmentForm";
 import { mapToApiPersonAddress } from "@/lib/businessModules/travelMedicine/shared/helper";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/InformationStatementTemplateEditor.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/InformationStatementTemplateEditor.tsx
index 9ed21c69c..b67925d56 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/InformationStatementTemplateEditor.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/InformationStatementTemplateEditor.tsx
@@ -5,15 +5,15 @@
 
 "use client";
 
+import { FormPlus } from "@eshg/lib-portal/components/form/FormPlus";
+import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
 import {
   ApiInformationStatementTemplate,
   ApiInformationStatementTemplateRequest,
   ApiInformationStatementTemplateState,
   ApiTemplateSection,
   PutInformationStatementTemplateRequest,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { FormPlus } from "@eshg/lib-portal/components/form/FormPlus";
-import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+} from "@eshg/travel-medicine-api";
 import { Box } from "@mui/joy";
 import { useSuspenseQueries } from "@tanstack/react-query";
 import { Formik } from "formik";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/InformationStatementTemplateMetaInfo.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/InformationStatementTemplateMetaInfo.tsx
index 9a91e6c6f..49840b11b 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/InformationStatementTemplateMetaInfo.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/InformationStatementTemplateMetaInfo.tsx
@@ -3,11 +3,11 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiDisease } from "@eshg/employee-portal-api/travelMedicine";
 import { InputField } from "@eshg/lib-portal/components/formFields/InputField";
 import { SelectOption } from "@eshg/lib-portal/components/formFields/SelectOptions";
 import { MultiAutocompleteField } from "@eshg/lib-portal/components/formFields/autocomplete/MultiAutocompleteField";
 import { validateLength } from "@eshg/lib-portal/helpers/validators";
+import { ApiDisease } from "@eshg/travel-medicine-api";
 import { Stack } from "@mui/joy";
 
 interface TemplateMetaInfoProps {
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/columns.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/columns.tsx
index 1774581f3..8c0f05afa 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/columns.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/columns.tsx
@@ -3,11 +3,11 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { formatDateTime } from "@eshg/lib-portal/formatters/dateTime";
 import {
   ApiInformationStatementTemplate,
   ApiInformationStatementTemplateState,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { formatDateTime } from "@eshg/lib-portal/formatters/dateTime";
+} from "@eshg/travel-medicine-api";
 import { Delete, Edit } from "@mui/icons-material";
 import { Chip } from "@mui/joy";
 import { ColumnHelper, createColumnHelper } from "@tanstack/react-table";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/constants.ts b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/constants.ts
index 1c9743b83..fd413b7b5 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/constants.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/constants.ts
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiInformationStatementTemplateState } from "@eshg/employee-portal-api/travelMedicine";
+import { ApiInformationStatementTemplateState } from "@eshg/travel-medicine-api";
 import { ChipProps } from "@mui/joy";
 
 export const templateStatusColors = {
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/options.ts b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/options.ts
index c9f86813d..e8ad85403 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/options.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/options.ts
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiInformationStatementTemplateState } from "@eshg/employee-portal-api/travelMedicine";
 import { buildEnumOptions } from "@eshg/lib-portal/helpers/form";
+import { ApiInformationStatementTemplateState } from "@eshg/travel-medicine-api";
 
 import { INFORMATION_STATEMENT_TEMPLATE_STATES } from "@/lib/businessModules/travelMedicine/components/templates/informationStatement/translations";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/translations.ts b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/translations.ts
index 3b0123e08..6f8e40389 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/translations.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/informationStatement/translations.ts
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiInformationStatementTemplateState } from "@eshg/employee-portal-api/travelMedicine";
 import { EnumMap } from "@eshg/lib-portal/types/helpers";
+import { ApiInformationStatementTemplateState } from "@eshg/travel-medicine-api";
 
 export const INFORMATION_STATEMENT_TEMPLATE_STATES: EnumMap<ApiInformationStatementTemplateState> =
   {
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/MedicalHistoryTemplateEditor.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/MedicalHistoryTemplateEditor.tsx
index a28cce2a8..74daaaa2e 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/MedicalHistoryTemplateEditor.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/MedicalHistoryTemplateEditor.tsx
@@ -3,13 +3,13 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { FormPlus } from "@eshg/lib-portal/components/form/FormPlus";
+import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
 import {
   ApiMedicalHistoryTemplate,
   ApiMedicalHistoryTemplateState,
   ApiTemplateSection,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { FormPlus } from "@eshg/lib-portal/components/form/FormPlus";
-import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+} from "@eshg/travel-medicine-api";
 import { Box } from "@mui/joy";
 import { Formik } from "formik";
 import { useRouter } from "next/navigation";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/columns.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/columns.tsx
index 5c63e3c97..f0f50ad36 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/columns.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/columns.tsx
@@ -3,11 +3,11 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { formatDateTime } from "@eshg/lib-portal/formatters/dateTime";
 import {
   ApiMedicalHistoryTemplate,
   ApiMedicalHistoryTemplateState,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { formatDateTime } from "@eshg/lib-portal/formatters/dateTime";
+} from "@eshg/travel-medicine-api";
 import {
   DeleteOutlined,
   EditOutlined,
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/constants.ts b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/constants.ts
index 70dbd012f..6511c031e 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/constants.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/constants.ts
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiMedicalHistoryTemplateState } from "@eshg/employee-portal-api/travelMedicine";
+import { ApiMedicalHistoryTemplateState } from "@eshg/travel-medicine-api";
 import { ChipProps } from "@mui/joy";
 
 export const templateStatusColors = {
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/options.ts b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/options.ts
index bdbe5af75..bfbf38b7c 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/options.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/options.ts
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiMedicalHistoryTemplateState } from "@eshg/employee-portal-api/travelMedicine";
 import { buildEnumOptions } from "@eshg/lib-portal/helpers/form";
+import { ApiMedicalHistoryTemplateState } from "@eshg/travel-medicine-api";
 
 import { MEDICAL_HISTORY_TEMPLATE_STATES } from "@/lib/businessModules/travelMedicine/components/templates/medicalHistory/translations";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/translations.ts b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/translations.ts
index b400d9ca4..90f04d53e 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/translations.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/templates/medicalHistory/translations.ts
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiMedicalHistoryTemplateState } from "@eshg/employee-portal-api/travelMedicine";
 import { EnumMap } from "@eshg/lib-portal/types/helpers";
+import { ApiMedicalHistoryTemplateState } from "@eshg/travel-medicine-api";
 
 export const MEDICAL_HISTORY_TEMPLATE_STATES: EnumMap<ApiMedicalHistoryTemplateState> =
   {
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultationSearch/VaccinationConsultationsSearchFilterSettings.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultationSearch/VaccinationConsultationsSearchFilterSettings.tsx
index 9bb3bc3b8..37d02cc38 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultationSearch/VaccinationConsultationsSearchFilterSettings.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultationSearch/VaccinationConsultationsSearchFilterSettings.tsx
@@ -3,13 +3,13 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiProcedureStatus } from "@eshg/employee-portal-api/travelMedicine";
 import { SelectOptions } from "@eshg/lib-portal/components/formFields/SelectOptions";
 import {
   isDateString,
   toDateString,
   toUtcDate,
 } from "@eshg/lib-portal/helpers/dateTime";
+import { ApiProcedureStatus } from "@eshg/travel-medicine-api";
 import { FormControl, FormLabel, Input, Select } from "@mui/joy";
 import { useEffect, useState } from "react";
 import { isDefined } from "remeda";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultationSearch/searchColumns.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultationSearch/searchColumns.tsx
index 86ca3d7cd..d00b46e36 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultationSearch/searchColumns.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultationSearch/searchColumns.tsx
@@ -3,9 +3,9 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiVaccinationConsultationSearch } from "@eshg/employee-portal-api/travelMedicine";
 import { formatDate } from "@eshg/lib-portal/formatters/dateTime";
 import { calculateAge } from "@eshg/lib-portal/helpers/dateTime";
+import { ApiVaccinationConsultationSearch } from "@eshg/travel-medicine-api";
 import { Chip } from "@mui/joy";
 import { ColumnHelper, createColumnHelper } from "@tanstack/react-table";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/VaccinationConsultationsOverviewTable.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/VaccinationConsultationsOverviewTable.tsx
index 8b315bea2..be5e23576 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/VaccinationConsultationsOverviewTable.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/VaccinationConsultationsOverviewTable.tsx
@@ -6,13 +6,13 @@
 "use client";
 
 import { ApiBusinessModule } from "@eshg/employee-portal-api/businessProcedures";
-import { ApiProcedureStatus } from "@eshg/employee-portal-api/travelMedicine";
 import { SelectOptions } from "@eshg/lib-portal/components/formFields/SelectOptions";
 import {
   isDateString,
   toDateString,
   toUtcDate,
 } from "@eshg/lib-portal/helpers/dateTime";
+import { ApiProcedureStatus } from "@eshg/travel-medicine-api";
 import {
   KeyboardArrowLeftOutlined,
   KeyboardArrowRightOutlined,
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/AbortProcedureModal.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/AbortProcedureModal.tsx
index f6032c4d8..1d79201ee 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/AbortProcedureModal.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/AbortProcedureModal.tsx
@@ -3,14 +3,14 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import {
-  AbortDraftVaccinationConsultationRequest,
-  ApiGetVaccinationConsultationDetailsResponse,
-} from "@eshg/employee-portal-api/travelMedicine";
 import {
   BaseModal,
   BaseModalProps,
 } from "@eshg/lib-portal/components/BaseModal";
+import {
+  AbortDraftVaccinationConsultationRequest,
+  ApiGetVaccinationConsultationDetailsResponse,
+} from "@eshg/travel-medicine-api";
 import { Button, Stack, Typography } from "@mui/joy";
 import { useRouter } from "next/navigation";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/AcceptProcedureForm.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/AcceptProcedureForm.tsx
index 6058b5ca6..9c13635f6 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/AcceptProcedureForm.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/AcceptProcedureForm.tsx
@@ -4,7 +4,7 @@
  */
 
 import { ApiGetReferencePersonResponse } from "@eshg/base-api";
-import { ApiPatient } from "@eshg/employee-portal-api/travelMedicine";
+import { ApiPatient } from "@eshg/travel-medicine-api";
 import { ComponentType, Ref, useState } from "react";
 import { isDefined } from "remeda";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/AcceptProcedureSidebar.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/AcceptProcedureSidebar.tsx
index 6d5d4132b..05e14dd24 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/AcceptProcedureSidebar.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/AcceptProcedureSidebar.tsx
@@ -4,6 +4,8 @@
  */
 
 import { ApiGetReferencePersonResponse } from "@eshg/base-api";
+import { toDateString } from "@eshg/lib-portal/helpers/dateTime";
+import { OptionalFieldValue } from "@eshg/lib-portal/types/form";
 import {
   ApiCountryCode,
   ApiGender,
@@ -11,9 +13,7 @@ import {
   ApiPatient,
   ApiPersonAddress,
   ApiSalutation,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { toDateString } from "@eshg/lib-portal/helpers/dateTime";
-import { OptionalFieldValue } from "@eshg/lib-portal/types/form";
+} from "@eshg/travel-medicine-api";
 
 import { useAcceptDraftVaccinationConsultation } from "@/lib/businessModules/travelMedicine/api/mutations/vaccinationConsultation";
 import { AcceptProcedureForm } from "@/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/AcceptProcedureForm";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/PatientDetails.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/PatientDetails.tsx
index 08668305c..4c006782a 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/PatientDetails.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/PatientDetails.tsx
@@ -4,11 +4,6 @@
  */
 
 import { ApiGetReferencePersonResponse } from "@eshg/base-api";
-import {
-  ApiGender,
-  ApiPatient,
-  ApiSalutation,
-} from "@eshg/employee-portal-api/travelMedicine";
 import {
   GENDER_VALUES,
   SALUTATION_VALUES,
@@ -17,6 +12,11 @@ import {
 import { formatDate } from "@eshg/lib-portal/formatters/dateTime";
 import { translateCountry } from "@eshg/lib-portal/helpers/countryOption";
 import { createFieldNameMapper } from "@eshg/lib-portal/helpers/form";
+import {
+  ApiGender,
+  ApiPatient,
+  ApiSalutation,
+} from "@eshg/travel-medicine-api";
 import { Divider, Stack, Typography } from "@mui/joy";
 import { Formik } from "formik";
 import { isDefined } from "remeda";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/PatientPanel.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/PatientPanel.tsx
index 9eb564967..9e4143813 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/PatientPanel.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/PatientPanel.tsx
@@ -5,12 +5,12 @@
 
 "use client";
 
+import { useResetAlertContext } from "@eshg/lib-portal/errorHandling/AlertContext";
 import {
   ApiPatient,
   ApiPersonSync,
   ApiSalutation,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { useResetAlertContext } from "@eshg/lib-portal/errorHandling/AlertContext";
+} from "@eshg/travel-medicine-api";
 import { isDefined } from "remeda";
 
 import { PersonDetails } from "@/lib/businessModules/schoolEntry/api/models/Person";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/ProcedureActionsPanel.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/ProcedureActionsPanel.tsx
index 592df58e7..d98e6c74b 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/ProcedureActionsPanel.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/ProcedureActionsPanel.tsx
@@ -3,12 +3,12 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
 import {
   ApiGetVaccinationConsultationDetailsResponse,
   ApiProcedureStatus,
   ApiServiceStatus,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+} from "@eshg/travel-medicine-api";
 import { Button, Grid } from "@mui/joy";
 import { ReactNode } from "react";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/ProcedureCreatedByTile.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/ProcedureCreatedByTile.tsx
index c5991b769..1b06ab941 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/ProcedureCreatedByTile.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/ProcedureCreatedByTile.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import "@eshg/employee-portal-api/travelMedicine";
-import { ApiCreatedByUserType } from "@eshg/employee-portal-api/travelMedicine";
+import "@eshg/travel-medicine-api";
+import { ApiCreatedByUserType } from "@eshg/travel-medicine-api";
 import { Grid } from "@mui/joy";
 
 import { translateCreatedByUserType } from "@/lib/businessModules/travelMedicine/components/appointmentTypes/translations";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/ServicePlanColumns.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/ServicePlanColumns.tsx
index 6bfc4bebe..676a61849 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/ServicePlanColumns.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/ServicePlanColumns.tsx
@@ -3,15 +3,15 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { formatDate } from "@eshg/lib-portal/formatters/dateTime";
+import { formatPersonName } from "@eshg/lib-portal/formatters/person";
 import {
   ApiAppointmentBookingType,
   ApiServicePlanEntry,
   ApiServicePlanGroup,
   ApiServiceStatus,
   ApiUser,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { formatDate } from "@eshg/lib-portal/formatters/dateTime";
-import { formatPersonName } from "@eshg/lib-portal/formatters/person";
+} from "@eshg/travel-medicine-api";
 import {
   Cancel,
   Delete,
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/ServicePlanTable.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/ServicePlanTable.tsx
index 85fbbaa2b..26136cc11 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/ServicePlanTable.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/ServicePlanTable.tsx
@@ -12,7 +12,7 @@ import {
   ApiServicePlanEntry,
   ApiServicePlanGroup,
   ApiServiceStatus,
-} from "@eshg/employee-portal-api/travelMedicine";
+} from "@eshg/travel-medicine-api";
 import { AddOutlined } from "@mui/icons-material";
 import { Button, Grid } from "@mui/joy";
 import { useSuspenseQueries } from "@tanstack/react-query";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/TravelDataTile.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/TravelDataTile.tsx
index 59620aa88..4a0b37104 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/TravelDataTile.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/TravelDataTile.tsx
@@ -5,9 +5,9 @@
 
 "use client";
 
-import { ApiTravelType } from "@eshg/employee-portal-api/travelMedicine";
 import { formatDate } from "@eshg/lib-portal/formatters/dateTime";
 import { translateCountry } from "@eshg/lib-portal/helpers/countryOption";
+import { ApiTravelType } from "@eshg/travel-medicine-api";
 import { Stack } from "@mui/joy";
 import { isEmpty } from "remeda";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/VaccinationConsultationDetails.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/VaccinationConsultationDetails.tsx
index d2ac4d749..03b48ffd4 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/VaccinationConsultationDetails.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/VaccinationConsultationDetails.tsx
@@ -6,6 +6,7 @@
 "use client";
 
 import { ApiCountryCode } from "@eshg/base-api";
+import { Alert } from "@eshg/lib-portal/components/Alert";
 import {
   ApiCreatedByUserType,
   ApiGetVaccinationConsultationDetailsResponse,
@@ -15,8 +16,7 @@ import {
   ApiServicePlanGroup,
   ApiTravelTimeUnit,
   ApiTravelType,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { Alert } from "@eshg/lib-portal/components/Alert";
+} from "@eshg/travel-medicine-api";
 import { Grid, Stack } from "@mui/joy";
 
 import { DetailsGrid } from "@/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/DetailsGrid";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/AddServiceAppointmentSidebar.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/AddServiceAppointmentSidebar.tsx
index b2bfa7198..8b3a3bb73 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/AddServiceAppointmentSidebar.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/AddServiceAppointmentSidebar.tsx
@@ -3,12 +3,12 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { toUtcDate } from "@eshg/lib-portal/helpers/dateTime";
 import {
   AddProcedureStepRequest,
   ApiAppointmentBookingType,
   ApiAppointmentType,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { toUtcDate } from "@eshg/lib-portal/helpers/dateTime";
+} from "@eshg/travel-medicine-api";
 import { useSuspenseQueries } from "@tanstack/react-query";
 import { format } from "date-fns";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/AddServicePlanSidebar.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/AddServicePlanSidebar.tsx
index 7662230a9..536002019 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/AddServicePlanSidebar.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/AddServicePlanSidebar.tsx
@@ -7,7 +7,7 @@ import {
   ApiPostServicesRequest,
   ApiVaccinationType,
   PostServicesRequest,
-} from "@eshg/employee-portal-api/travelMedicine";
+} from "@eshg/travel-medicine-api";
 import { useSuspenseQueries } from "@tanstack/react-query";
 import { isDefined } from "remeda";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/AssignServiceSidebar.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/AssignServiceSidebar.tsx
index 4d07fbcef..29430c419 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/AssignServiceSidebar.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/AssignServiceSidebar.tsx
@@ -6,7 +6,7 @@
 import {
   ApiPatchServiceAssignmentRequest,
   AssignStepToServiceRequest,
-} from "@eshg/employee-portal-api/travelMedicine";
+} from "@eshg/travel-medicine-api";
 import { useSuspenseQueries } from "@tanstack/react-query";
 import { isDefined } from "remeda";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/EditEarliestDateSidebar.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/EditEarliestDateSidebar.tsx
index 1fbf7ebef..5c088bf80 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/EditEarliestDateSidebar.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/EditEarliestDateSidebar.tsx
@@ -6,7 +6,7 @@
 import {
   ApiServicePlanGroup,
   PatchEarliestDateRequest,
-} from "@eshg/employee-portal-api/travelMedicine";
+} from "@eshg/travel-medicine-api";
 import { useSuspenseQueries } from "@tanstack/react-query";
 import { format } from "date-fns";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/EditServiceAppointmentSidebar.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/EditServiceAppointmentSidebar.tsx
index e42d314b2..4a7801836 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/EditServiceAppointmentSidebar.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/EditServiceAppointmentSidebar.tsx
@@ -7,7 +7,7 @@ import {
   ApiAppointmentType,
   ApiServicePlanGroup,
   PatchAppointmentRequest,
-} from "@eshg/employee-portal-api/travelMedicine";
+} from "@eshg/travel-medicine-api";
 import { useSuspenseQueries } from "@tanstack/react-query";
 
 import { usePatchAppointment } from "@/lib/businessModules/travelMedicine/api/mutations/procedureSteps";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/OtherServiceAppliedSidebar.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/OtherServiceAppliedSidebar.tsx
index 40cd0bb3f..e7f0b750f 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/OtherServiceAppliedSidebar.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/OtherServiceAppliedSidebar.tsx
@@ -3,12 +3,12 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { toDateString } from "@eshg/lib-portal/helpers/dateTime";
 import {
   ApiServicePlanEntry,
   ApiServiceStatus,
   PatchOtherServiceRequest,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { toDateString } from "@eshg/lib-portal/helpers/dateTime";
+} from "@eshg/travel-medicine-api";
 import { useSuspenseQueries } from "@tanstack/react-query";
 
 import { useUpdateOtherService } from "@/lib/businessModules/travelMedicine/api/mutations/vaccinationConsultation";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/ServiceAppliedSidebar.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/ServiceAppliedSidebar.tsx
index afc596697..bcfcc01dd 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/ServiceAppliedSidebar.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/ServiceAppliedSidebar.tsx
@@ -3,12 +3,12 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { toDateString } from "@eshg/lib-portal/helpers/dateTime";
 import {
   ApiServicePlanEntry,
   ApiServiceStatus,
   PatchVaccinationRequest,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { toDateString } from "@eshg/lib-portal/helpers/dateTime";
+} from "@eshg/travel-medicine-api";
 import { useSuspenseQueries } from "@tanstack/react-query";
 import { isEmpty } from "remeda";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/TravelDataSidebar.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/TravelDataSidebar.tsx
index 58d9bf838..f882a6293 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/TravelDataSidebar.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/TravelDataSidebar.tsx
@@ -3,11 +3,11 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { isDateString, toUtcDate } from "@eshg/lib-portal/helpers/dateTime";
 import {
   ApiPatchVaccinationConsultationTravelDetailsRequest,
   ApiTravelType,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { isDateString, toUtcDate } from "@eshg/lib-portal/helpers/dateTime";
+} from "@eshg/travel-medicine-api";
 import { isEmpty } from "remeda";
 
 import { useUpdateTravelDetails } from "@/lib/businessModules/travelMedicine/api/mutations/vaccinationConsultation";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/AddServiceAppointmentForm.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/AddServiceAppointmentForm.tsx
index c6c5598fd..5d75f086b 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/AddServiceAppointmentForm.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/AddServiceAppointmentForm.tsx
@@ -3,12 +3,12 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { DateField } from "@eshg/lib-portal/components/formFields/DateField";
 import {
   ApiAppointmentBookingType,
   ApiAppointmentType,
   ApiAssignableService,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { DateField } from "@eshg/lib-portal/components/formFields/DateField";
+} from "@eshg/travel-medicine-api";
 import { Stack, Typography } from "@mui/joy";
 import { format, isAfter } from "date-fns";
 import { Formik, FormikErrors } from "formik";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/AddServicePlanForm.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/AddServicePlanForm.tsx
index 86fbe28e9..090a1fb7f 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/AddServicePlanForm.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/AddServicePlanForm.tsx
@@ -10,7 +10,7 @@ import {
   ApiPostOtherServiceRequest,
   ApiPostVaccinationRequest,
   ApiVaccine,
-} from "@eshg/employee-portal-api/travelMedicine";
+} from "@eshg/travel-medicine-api";
 import { Stack } from "@mui/joy";
 import { Formik } from "formik";
 import { Ref } from "react";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/AsssignServiceForm.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/AsssignServiceForm.tsx
index 6e556384f..f7eae7866 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/AsssignServiceForm.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/AsssignServiceForm.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAppointmentSummary } from "@eshg/employee-portal-api/travelMedicine";
+import { ApiAppointmentSummary } from "@eshg/travel-medicine-api";
 import { Stack } from "@mui/joy";
 import { Formik } from "formik";
 import { Ref } from "react";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/EditEarliestDateForm.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/EditEarliestDateForm.tsx
index bd56f39ce..4d0bd1996 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/EditEarliestDateForm.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/EditEarliestDateForm.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiProcedureStepService } from "@eshg/employee-portal-api/travelMedicine";
 import { DateField } from "@eshg/lib-portal/components/formFields/DateField";
+import { ApiProcedureStepService } from "@eshg/travel-medicine-api";
 import { List, ListItem, Stack, Typography } from "@mui/joy";
 import { Formik } from "formik";
 import { Ref } from "react";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/EditServiceAppointmentForm.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/EditServiceAppointmentForm.tsx
index 9c6f07ab7..ec35da4b4 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/EditServiceAppointmentForm.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/EditServiceAppointmentForm.tsx
@@ -3,16 +3,16 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import {
-  ApiAppointmentBookingType,
-  ApiAppointmentType,
-  ApiProcedureStepService,
-} from "@eshg/employee-portal-api/travelMedicine";
 import { SelectField } from "@eshg/lib-portal/components/formFields/SelectField";
 import {
   formatDate,
   formatDateTime,
 } from "@eshg/lib-portal/formatters/dateTime";
+import {
+  ApiAppointmentBookingType,
+  ApiAppointmentType,
+  ApiProcedureStepService,
+} from "@eshg/travel-medicine-api";
 import { Chip, List, ListItem, Sheet, Stack, Typography } from "@mui/joy";
 import { Formik, FormikErrors } from "formik";
 import { Ref } from "react";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/InformationStatementForm.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/InformationStatementForm.tsx
index 8d4ce8ca3..030f00f88 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/InformationStatementForm.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/InformationStatementForm.tsx
@@ -3,14 +3,14 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { SelectOption } from "@eshg/lib-portal/components/formFields/SelectOptions";
+import { MultiAutocompleteField } from "@eshg/lib-portal/components/formFields/autocomplete/MultiAutocompleteField";
+import { SetFieldValueHelper } from "@eshg/lib-portal/types/form";
 import {
   ApiDisease,
   ApiInformationStatementTemplate,
   ApiInformationStatementTemplateState,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { SelectOption } from "@eshg/lib-portal/components/formFields/SelectOptions";
-import { MultiAutocompleteField } from "@eshg/lib-portal/components/formFields/autocomplete/MultiAutocompleteField";
-import { SetFieldValueHelper } from "@eshg/lib-portal/types/form";
+} from "@eshg/travel-medicine-api";
 import { Stack } from "@mui/joy";
 import { Formik } from "formik";
 import { Ref, useState } from "react";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/OtherServiceAppliedForm.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/OtherServiceAppliedForm.tsx
index fcbe3097e..c8a6c212a 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/OtherServiceAppliedForm.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/OtherServiceAppliedForm.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiUser } from "@eshg/employee-portal-api/travelMedicine";
+import { ApiUser } from "@eshg/travel-medicine-api";
 import { Sheet, Stack } from "@mui/joy";
 import { Formik } from "formik";
 import { Ref } from "react";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/ServiceAppliedForm.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/ServiceAppliedForm.tsx
index 732a4ceb0..922f670e7 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/ServiceAppliedForm.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/ServiceAppliedForm.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiUser } from "@eshg/employee-portal-api/travelMedicine";
 import { InputField } from "@eshg/lib-portal/components/formFields/InputField";
+import { ApiUser } from "@eshg/travel-medicine-api";
 import { Sheet, Stack } from "@mui/joy";
 import { Formik } from "formik";
 import { Ref } from "react";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/ServicesSheet.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/ServicesSheet.tsx
index bf4eff087..5cc12e136 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/ServicesSheet.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/ServicesSheet.tsx
@@ -3,13 +3,13 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { NumberField } from "@eshg/lib-portal/components/formFields/NumberField";
+import { SelectField } from "@eshg/lib-portal/components/formFields/SelectField";
 import {
   ApiDisease,
   ApiOtherServiceTemplate,
   ApiVaccine,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { NumberField } from "@eshg/lib-portal/components/formFields/NumberField";
-import { SelectField } from "@eshg/lib-portal/components/formFields/SelectField";
+} from "@eshg/travel-medicine-api";
 import { Add } from "@mui/icons-material";
 import { Button, Divider, Sheet, Stack, Typography } from "@mui/joy";
 import { FieldArray, useFormikContext } from "formik";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/TravelDataForm.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/TravelDataForm.tsx
index 3e0fdc193..e3b85166e 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/TravelDataForm.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/TravelDataForm.tsx
@@ -3,14 +3,14 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { DateField } from "@eshg/lib-portal/components/formFields/DateField";
+import { NumberField } from "@eshg/lib-portal/components/formFields/NumberField";
+import { SelectField } from "@eshg/lib-portal/components/formFields/SelectField";
 import {
   ApiCountryCode,
   ApiTravelTimeUnit,
   ApiTravelType,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { DateField } from "@eshg/lib-portal/components/formFields/DateField";
-import { NumberField } from "@eshg/lib-portal/components/formFields/NumberField";
-import { SelectField } from "@eshg/lib-portal/components/formFields/SelectField";
+} from "@eshg/travel-medicine-api";
 import { Grid, Stack } from "@mui/joy";
 import { Formik, FormikErrors } from "formik";
 import { useState } from "react";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/VaccinationFields.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/VaccinationFields.tsx
index da5879a6c..01ac3b347 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/VaccinationFields.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/baseData/sidebars/sidebarForms/VaccinationFields.tsx
@@ -3,10 +3,10 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiVaccinationType } from "@eshg/employee-portal-api/travelMedicine";
 import { NumberField } from "@eshg/lib-portal/components/formFields/NumberField";
 import { SelectField } from "@eshg/lib-portal/components/formFields/SelectField";
 import { SelectOption } from "@eshg/lib-portal/components/formFields/SelectOptions";
+import { ApiVaccinationType } from "@eshg/travel-medicine-api";
 import { Divider, Grid } from "@mui/joy";
 import { FormikErrors, useFormikContext } from "formik";
 import { useState } from "react";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/CertificateForm.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/CertificateForm.tsx
index bea96c948..dba196e85 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/CertificateForm.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/CertificateForm.tsx
@@ -5,14 +5,14 @@
 
 "use client";
 
+import { SelectField } from "@eshg/lib-portal/components/formFields/SelectField";
+import { SelectOption } from "@eshg/lib-portal/components/formFields/SelectOptions";
+import { formatDateTime } from "@eshg/lib-portal/formatters/dateTime";
 import {
   ApiAppliedService,
   ApiCertificateType,
   ApiStepWithAppliedServices,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { SelectField } from "@eshg/lib-portal/components/formFields/SelectField";
-import { SelectOption } from "@eshg/lib-portal/components/formFields/SelectOptions";
-import { formatDateTime } from "@eshg/lib-portal/formatters/dateTime";
+} from "@eshg/travel-medicine-api";
 import { Stack } from "@mui/joy";
 import { Formik, FormikErrors } from "formik";
 import { Ref } from "react";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/CertificateSidebar.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/CertificateSidebar.tsx
index b0dd35932..ef88950da 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/CertificateSidebar.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/CertificateSidebar.tsx
@@ -8,7 +8,7 @@
 import {
   ApiCertificateType,
   ApiStepWithAppliedServices,
-} from "@eshg/employee-portal-api/travelMedicine";
+} from "@eshg/travel-medicine-api";
 
 import {
   UsePostCertificateRequest,
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/CertificatesTable.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/CertificatesTable.tsx
index f8634f339..27f899120 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/CertificatesTable.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/CertificatesTable.tsx
@@ -5,11 +5,11 @@
 
 "use client";
 
+import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
 import {
   ApiProcedureStatus,
   ApiTMCertificate,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+} from "@eshg/travel-medicine-api";
 import { ReceiptOutlined } from "@mui/icons-material";
 import AddOutlined from "@mui/icons-material/AddOutlined";
 import { Button, Stack, Typography } from "@mui/joy";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/columns.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/columns.tsx
index 6c4b4da0d..bf0563df4 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/columns.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/columns.tsx
@@ -3,11 +3,11 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { formatDateTime } from "@eshg/lib-portal/formatters/dateTime";
 import {
   ApiCertificateType,
   ApiTMCertificate,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { formatDateTime } from "@eshg/lib-portal/formatters/dateTime";
+} from "@eshg/travel-medicine-api";
 import { FeedOutlined } from "@mui/icons-material";
 import { ColumnHelper, createColumnHelper } from "@tanstack/react-table";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/options.ts b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/options.ts
index 009e82039..8ac369897 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/options.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/options.ts
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiCertificateType } from "@eshg/employee-portal-api/travelMedicine";
 import { buildEnumOptions } from "@eshg/lib-portal/helpers/form";
+import { ApiCertificateType } from "@eshg/travel-medicine-api";
 
 import { CERTIFICATE_TYPES } from "@/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/translations";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/translations.ts b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/translations.ts
index bf12756a7..19683364f 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/translations.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/certificates/translations.ts
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiCertificateType } from "@eshg/employee-portal-api/travelMedicine";
 import { EnumMap } from "@eshg/lib-portal/types/helpers";
+import { ApiCertificateType } from "@eshg/travel-medicine-api";
 
 export const CERTIFICATE_TYPES: EnumMap<ApiCertificateType> = {
   [ApiCertificateType.HealthInsurance]: "für die Krankenkasse",
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/informationStatements/InformationStatementSidebar.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/informationStatements/InformationStatementSidebar.tsx
index b1dd6300b..0d7e24058 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/informationStatements/InformationStatementSidebar.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/informationStatements/InformationStatementSidebar.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { PostInformationStatementsRequest } from "@eshg/employee-portal-api/travelMedicine";
+import { PostInformationStatementsRequest } from "@eshg/travel-medicine-api";
 import { useSuspenseQueries } from "@tanstack/react-query";
 
 import { useCreateInformationStatements } from "@/lib/businessModules/travelMedicine/api/mutations/vaccinationConsultation";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/informationStatements/InformationStatementsColumns.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/informationStatements/InformationStatementsColumns.tsx
index df6954783..70a1b9749 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/informationStatements/InformationStatementsColumns.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/informationStatements/InformationStatementsColumns.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiInformationStatement } from "@eshg/employee-portal-api/travelMedicine";
+import { ApiInformationStatement } from "@eshg/travel-medicine-api";
 import {
   DeleteOutlined,
   Replay,
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/informationStatements/InformationStatementsTable.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/informationStatements/InformationStatementsTable.tsx
index 7e787c832..b33a91272 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/informationStatements/InformationStatementsTable.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/informationStatements/InformationStatementsTable.tsx
@@ -5,7 +5,7 @@
 
 "use client";
 
-import { ApiProcedureStatus } from "@eshg/employee-portal-api/travelMedicine";
+import { ApiProcedureStatus } from "@eshg/travel-medicine-api";
 import { AddOutlined, DocumentScannerOutlined } from "@mui/icons-material";
 import { Button, Stack, Typography } from "@mui/joy";
 import { useSuspenseQueries } from "@tanstack/react-query";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/ConfirmationElement.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/ConfirmationElement.tsx
index 4a35be7ad..753a7db91 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/ConfirmationElement.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/ConfirmationElement.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiDocumentConfirmation } from "@eshg/employee-portal-api/travelMedicine";
+import { ApiDocumentConfirmation } from "@eshg/travel-medicine-api";
 import { SetStateAction } from "react";
 
 import { CheckboxField } from "@/lib/shared/components/formFields/CheckboxField";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/MedicalHistory.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/MedicalHistory.tsx
index 05820eebb..515ccc1bf 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/MedicalHistory.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/MedicalHistory.tsx
@@ -5,9 +5,9 @@
 
 "use client";
 
-import { ApiMedicalHistory } from "@eshg/employee-portal-api/travelMedicine";
 import { FormPlus } from "@eshg/lib-portal/components/form/FormPlus";
 import { validateLength } from "@eshg/lib-portal/helpers/validators";
+import { ApiMedicalHistory } from "@eshg/travel-medicine-api";
 import { Box, Stack } from "@mui/joy";
 import { Formik } from "formik";
 import { useEffect } from "react";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/MedicalHistoryContent.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/MedicalHistoryContent.tsx
index 2de083364..1a0812129 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/MedicalHistoryContent.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/MedicalHistoryContent.tsx
@@ -5,12 +5,12 @@
 
 "use client";
 
+import { useResetAlertContext } from "@eshg/lib-portal/errorHandling/AlertContext";
+import { formatDate } from "@eshg/lib-portal/formatters/dateTime";
 import {
   ApiMedicalHistory,
   ApiProcedureStatus,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { useResetAlertContext } from "@eshg/lib-portal/errorHandling/AlertContext";
-import { formatDate } from "@eshg/lib-portal/formatters/dateTime";
+} from "@eshg/travel-medicine-api";
 import { DownloadOutlined } from "@mui/icons-material";
 import CheckCircleOutlineIcon from "@mui/icons-material/CheckCircleOutline";
 import EditNoteIcon from "@mui/icons-material/EditNote";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/MedicalHistoryMultiSelectElement.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/MedicalHistoryMultiSelectElement.tsx
index 4063d1fcc..521ef2636 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/MedicalHistoryMultiSelectElement.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/MedicalHistoryMultiSelectElement.tsx
@@ -3,14 +3,14 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import {
-  ApiDocumentSectionElement,
-  ApiDocumentSubElementMultiSelect,
-} from "@eshg/employee-portal-api/travelMedicine";
 import {
   BaseFieldProps,
   useBaseField,
 } from "@eshg/lib-portal/components/formFields/BaseField";
+import {
+  ApiDocumentSectionElement,
+  ApiDocumentSubElementMultiSelect,
+} from "@eshg/travel-medicine-api";
 import { Checkbox, List, ListItem, Stack } from "@mui/joy";
 import { ChangeEvent } from "react";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/MedicalHistoryRadioButtonElement.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/MedicalHistoryRadioButtonElement.tsx
index aa457d2f6..fad698075 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/MedicalHistoryRadioButtonElement.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/medicalHistory/MedicalHistoryRadioButtonElement.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiDocumentSectionElement } from "@eshg/employee-portal-api/travelMedicine";
 import { SetFieldValueHelper } from "@eshg/lib-portal/types/form";
+import { ApiDocumentSectionElement } from "@eshg/travel-medicine-api";
 import { FormLabel, styled } from "@mui/joy";
 
 import { RadioButtonsField } from "@/lib/shared/components/formFields/RadioButtonsField";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/overviewColumns.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/overviewColumns.tsx
index 1f9b3d5b9..5457b3d08 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/overviewColumns.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/overviewColumns.tsx
@@ -3,14 +3,14 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import {
-  ApiAppointmentBookingType,
-  ApiAppointmentOverviewEntry,
-} from "@eshg/employee-portal-api/travelMedicine";
 import {
   formatDate,
   formatDateTime,
 } from "@eshg/lib-portal/formatters/dateTime";
+import {
+  ApiAppointmentBookingType,
+  ApiAppointmentOverviewEntry,
+} from "@eshg/travel-medicine-api";
 import { Chip } from "@mui/joy";
 import {
   ColumnHelper,
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/AppointmentRadioGroup.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/AppointmentRadioGroup.tsx
index 88d97b0fc..d3dc5caf2 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/AppointmentRadioGroup.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/AppointmentRadioGroup.tsx
@@ -3,10 +3,6 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import {
-  ApiAppointmentBookingType,
-  ApiAppointmentType,
-} from "@eshg/employee-portal-api/travelMedicine";
 import { NumberField } from "@eshg/lib-portal/components/formFields/NumberField";
 import { RadioGroupField } from "@eshg/lib-portal/components/formFields/RadioGroupField";
 import { SelectOption } from "@eshg/lib-portal/components/formFields/SelectOptions";
@@ -14,6 +10,10 @@ import {
   AppointmentPickerField,
   FIELD_LABELS_DE,
 } from "@eshg/lib-portal/components/formFields/appointmentPicker/AppointmentPickerField";
+import {
+  ApiAppointmentBookingType,
+  ApiAppointmentType,
+} from "@eshg/travel-medicine-api";
 import { Stack, Typography } from "@mui/joy";
 import { useField } from "formik";
 import { useState } from "react";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/CheckboxGroup.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/CheckboxGroup.tsx
index d286ac7c6..c99b189e9 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/CheckboxGroup.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/CheckboxGroup.tsx
@@ -5,11 +5,11 @@
 
 "use client";
 
+import { useBaseField } from "@eshg/lib-portal/components/formFields/BaseField";
 import {
   ApiAppliedService,
   ApiAssignableService,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { useBaseField } from "@eshg/lib-portal/components/formFields/BaseField";
+} from "@eshg/travel-medicine-api";
 import {
   Checkbox,
   FormControl,
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/LegacyAppointmentRadioGroup.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/LegacyAppointmentRadioGroup.tsx
index 4cc5e514d..98aa4c141 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/LegacyAppointmentRadioGroup.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/LegacyAppointmentRadioGroup.tsx
@@ -3,10 +3,6 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import {
-  ApiAppointmentBookingType,
-  ApiAppointmentType,
-} from "@eshg/employee-portal-api/travelMedicine";
 import { NumberField } from "@eshg/lib-portal/components/formFields/NumberField";
 import { RadioGroupField } from "@eshg/lib-portal/components/formFields/RadioGroupField";
 import { SelectOption } from "@eshg/lib-portal/components/formFields/SelectOptions";
@@ -14,6 +10,10 @@ import {
   AppointmentPickerField,
   FIELD_LABELS_DE,
 } from "@eshg/lib-portal/components/formFields/appointmentPicker/AppointmentPickerField";
+import {
+  ApiAppointmentBookingType,
+  ApiAppointmentType,
+} from "@eshg/travel-medicine-api";
 import { Stack, Typography } from "@mui/joy";
 import { useField } from "formik";
 import { useState } from "react";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/constants.ts b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/constants.ts
index a43831736..19dfb2fe1 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/constants.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/constants.ts
@@ -6,7 +6,7 @@
 import {
   ApiAppointmentBookingType,
   ApiServiceStatus,
-} from "@eshg/employee-portal-api/travelMedicine";
+} from "@eshg/travel-medicine-api";
 import { ChipProps } from "@mui/joy";
 
 export const statusColors = {
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/helpers.ts b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/helpers.ts
index 01de9107e..7ac6d9d3c 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/helpers.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/helpers.ts
@@ -3,6 +3,12 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { SelectOption } from "@eshg/lib-portal/components/formFields/SelectOptions";
+import {
+  formatDate,
+  formatDateTime,
+} from "@eshg/lib-portal/formatters/dateTime";
+import { durationBetweenDatesInMinutes } from "@eshg/lib-portal/helpers/dateTime";
 import {
   ApiAppointmentBookingType,
   ApiAppointmentSummary,
@@ -11,13 +17,7 @@ import {
   ApiServiceStatus,
   ApiUser,
   ApiVaccine,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { SelectOption } from "@eshg/lib-portal/components/formFields/SelectOptions";
-import {
-  formatDate,
-  formatDateTime,
-} from "@eshg/lib-portal/formatters/dateTime";
-import { durationBetweenDatesInMinutes } from "@eshg/lib-portal/helpers/dateTime";
+} from "@eshg/travel-medicine-api";
 import { isEmpty, isNonNullish } from "remeda";
 
 import { AppointmentSummary } from "@/lib/businessModules/travelMedicine/api/models/AppointmentSummary";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/options.ts b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/options.ts
index 237cc89c1..7161654c8 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/options.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/options.ts
@@ -3,12 +3,12 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { buildEnumOptions } from "@eshg/lib-portal/helpers/form";
 import {
   ApiTravelTimeUnit,
   ApiTravelType,
   ApiVaccinationType,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { buildEnumOptions } from "@eshg/lib-portal/helpers/form";
+} from "@eshg/travel-medicine-api";
 
 import { AllowedProcedureStatusForSearch } from "@/lib/businessModules/travelMedicine/components/vaccinationConsultationSearch/VaccinationConsultationsSearchFilterSettings";
 import {
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/translations.ts b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/translations.ts
index d1a2adc82..125c3a357 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/translations.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccinationConsultations/shared/translations.ts
@@ -3,14 +3,14 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
+import { EnumMap } from "@eshg/lib-portal/types/helpers";
 import {
   ApiAppointmentBookingType,
   ApiProcedureStatus,
   ApiServiceStatus,
   ApiTravelTimeUnit,
   ApiTravelType,
-} from "@eshg/employee-portal-api/travelMedicine";
-import { EnumMap } from "@eshg/lib-portal/types/helpers";
+} from "@eshg/travel-medicine-api";
 
 import { AllowedProcedureStatusForSearch } from "@/lib/businessModules/travelMedicine/components/vaccinationConsultationSearch/VaccinationConsultationsSearchFilterSettings";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccines/VaccineForm.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccines/VaccineForm.tsx
index b546b7a17..ddcc4713d 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccines/VaccineForm.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccines/VaccineForm.tsx
@@ -3,16 +3,16 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import {
-  ApiDisease,
-  ApiInventoryVaccineWithoutRmbiVaccine,
-} from "@eshg/employee-portal-api/travelMedicine";
 import { FormAddMoreButton } from "@eshg/lib-portal/components/form/FormAddMoreButton";
 import { InputField } from "@eshg/lib-portal/components/formFields/InputField";
 import { NumberField } from "@eshg/lib-portal/components/formFields/NumberField";
 import { SelectField } from "@eshg/lib-portal/components/formFields/SelectField";
 import { InternalLinkButton } from "@eshg/lib-portal/components/navigation/InternalLinkButton";
 import { validateLength } from "@eshg/lib-portal/helpers/validators";
+import {
+  ApiDisease,
+  ApiInventoryVaccineWithoutRmbiVaccine,
+} from "@eshg/travel-medicine-api";
 import { DeleteOutlined } from "@mui/icons-material";
 import ListAltIcon from "@mui/icons-material/ListAlt";
 import { Grid, IconButton, Stack, Typography } from "@mui/joy";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccines/VaccineSidebar.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccines/VaccineSidebar.tsx
index 83a388a42..3f57f72bd 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccines/VaccineSidebar.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccines/VaccineSidebar.tsx
@@ -8,7 +8,7 @@ import {
   ApiInventoryVaccineWithoutRmbiVaccine,
   ApiPostPutVaccineRequest,
   ApiVaccine,
-} from "@eshg/employee-portal-api/travelMedicine";
+} from "@eshg/travel-medicine-api";
 
 import {
   usePostVaccine,
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccines/columns.tsx b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccines/columns.tsx
index 519716116..ee54cef5e 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/components/vaccines/columns.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/components/vaccines/columns.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiVaccine } from "@eshg/employee-portal-api/travelMedicine";
 import { formatDateTime } from "@eshg/lib-portal/formatters/dateTime";
+import { ApiVaccine } from "@eshg/travel-medicine-api";
 import { Delete, Edit } from "@mui/icons-material";
 import ListAltIcon from "@mui/icons-material/ListAlt";
 import { ColumnHelper, createColumnHelper } from "@tanstack/react-table";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/shared/appointmentTypes.ts b/employee-portal/src/lib/businessModules/travelMedicine/shared/appointmentTypes.ts
index ea06e6d0c..2469edc94 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/shared/appointmentTypes.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/shared/appointmentTypes.ts
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiAppointmentType } from "@eshg/employee-portal-api/travelMedicine";
 import { EnumMap } from "@eshg/lib-portal/types/helpers";
+import { ApiAppointmentType } from "@eshg/travel-medicine-api";
 
 export const appointmentTypes: EnumMap<ApiAppointmentType> = {
   [ApiAppointmentType.Consultation]: "Beratung",
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/shared/constants.ts b/employee-portal/src/lib/businessModules/travelMedicine/shared/constants.ts
index 799e3a887..f9ece9cd1 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/shared/constants.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/shared/constants.ts
@@ -3,10 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import {
-  ApiProcedureType,
-  ApiTaskType,
-} from "@eshg/employee-portal-api/travelMedicine";
+import { ApiProcedureType, ApiTaskType } from "@eshg/travel-medicine-api";
 
 export const procedureTypes = [ApiProcedureType.TmVaccinationConsultation];
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/shared/helper.ts b/employee-portal/src/lib/businessModules/travelMedicine/shared/helper.ts
index bf3f48cc8..1db32fc1d 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/shared/helper.ts
+++ b/employee-portal/src/lib/businessModules/travelMedicine/shared/helper.ts
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiPersonAddress } from "@eshg/employee-portal-api/travelMedicine";
+import { ApiPersonAddress } from "@eshg/travel-medicine-api";
 
 import { LegacyBaseAddress } from "@/lib/shared/components/form/address/LegacyAddressForm";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/TemplateEditorMainContent.tsx b/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/TemplateEditorMainContent.tsx
index c9b33cb11..ce7828d9b 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/TemplateEditorMainContent.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/TemplateEditorMainContent.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiTemplateSection } from "@eshg/employee-portal-api/travelMedicine";
+import { ApiTemplateSection } from "@eshg/travel-medicine-api";
 import { Box, Sheet } from "@mui/joy";
 import { ReactNode } from "react";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/TemplateSection.tsx b/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/TemplateSection.tsx
index a277299b3..b35064dcc 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/TemplateSection.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/TemplateSection.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiTemplateSectionElement } from "@eshg/employee-portal-api/travelMedicine";
 import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+import { ApiTemplateSectionElement } from "@eshg/travel-medicine-api";
 import { Sheet, Stack } from "@mui/joy";
 import { FieldArray } from "formik";
 import { ReactNode } from "react";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/TemplateSectionList.tsx b/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/TemplateSectionList.tsx
index 080b2dea8..0c8eed1db 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/TemplateSectionList.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/TemplateSectionList.tsx
@@ -3,8 +3,8 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiTemplateSection } from "@eshg/employee-portal-api/travelMedicine";
 import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
+import { ApiTemplateSection } from "@eshg/travel-medicine-api";
 import { CreateNewFolder } from "@mui/icons-material";
 import { Button } from "@mui/joy";
 import { FieldArray } from "formik";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/SectionDataElementList.tsx b/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/SectionDataElementList.tsx
index 2aa62991a..1c9df4f27 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/SectionDataElementList.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/SectionDataElementList.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiTemplateSectionElement } from "@eshg/employee-portal-api/travelMedicine";
+import { ApiTemplateSectionElement } from "@eshg/travel-medicine-api";
 
 import { SectionElementComponentFactory } from "@/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/SectionElementComponentFactory";
 
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/SectionElementComponentFactory.tsx b/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/SectionElementComponentFactory.tsx
index 570640c3d..4ab9815e8 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/SectionElementComponentFactory.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/SectionElementComponentFactory.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiTemplateSectionElement } from "@eshg/employee-portal-api/travelMedicine/models";
+import { ApiTemplateSectionElement } from "@eshg/travel-medicine-api";
 
 import { TemplateSectionElementProp } from "@/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/SectionDataElementList";
 import { TemplateConfirmation } from "@/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/TemplateConfirmation";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/anamnesisQuestion/AnamnesisQuestion.tsx b/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/anamnesisQuestion/AnamnesisQuestion.tsx
index 6dcc609a4..3b849cefd 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/anamnesisQuestion/AnamnesisQuestion.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/anamnesisQuestion/AnamnesisQuestion.tsx
@@ -6,7 +6,7 @@
 import {
   ApiTemplateAnamnesisQuestion,
   ApiTemplateSubElementText,
-} from "@eshg/employee-portal-api/travelMedicine";
+} from "@eshg/travel-medicine-api";
 import { Add } from "@mui/icons-material";
 import { Box, Button } from "@mui/joy";
 import { FieldArray } from "formik";
diff --git a/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/anamnesisQuestion/subElements/SubMultiSelectList.tsx b/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/anamnesisQuestion/subElements/SubMultiSelectList.tsx
index c286b7eb3..7dc7fae2e 100644
--- a/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/anamnesisQuestion/subElements/SubMultiSelectList.tsx
+++ b/employee-portal/src/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/anamnesisQuestion/subElements/SubMultiSelectList.tsx
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import { ApiTemplateSubElementMultiSelect } from "@eshg/employee-portal-api/travelMedicine";
+import { ApiTemplateSubElementMultiSelect } from "@eshg/travel-medicine-api";
 import { Stack } from "@mui/joy";
 
 import { SubMultiSelectElement } from "@/lib/businessModules/travelMedicine/shared/templateEditor/sections/dataElements/anamnesisQuestion/subElements/SubMultiSelectElement";
diff --git a/employee-portal/src/lib/shared/components/detailsSection/DetailsCell.tsx b/employee-portal/src/lib/shared/components/detailsSection/DetailsCell.tsx
index 14ec2cf7b..81439bab1 100644
--- a/employee-portal/src/lib/shared/components/detailsSection/DetailsCell.tsx
+++ b/employee-portal/src/lib/shared/components/detailsSection/DetailsCell.tsx
@@ -22,6 +22,24 @@ export interface DetailsCellProps {
   valueSx?: SxProps;
 }
 
+export function DetailsCellWrapped(props: DetailsCellProps) {
+  return (
+    <DetailsCell
+      name={props.name}
+      label={props.label}
+      value={props.value}
+      showIfEmpty={props.showIfEmpty}
+      avoidWrap={props.avoidWrap}
+      flexGrow={props.flexGrow}
+      valueIsDiv={props.valueIsDiv}
+      sx={props.sx}
+      valueSx={{ overflowWrap: "anywhere", ...props.valueSx }}
+    >
+      {props.children}
+    </DetailsCell>
+  );
+}
+
 export function DetailsCell({
   name: givenName,
   label,
diff --git a/employee-portal/src/lib/shared/components/formFields/CheckboxField.tsx b/employee-portal/src/lib/shared/components/formFields/CheckboxField.tsx
index 495b8a392..53d071327 100644
--- a/employee-portal/src/lib/shared/components/formFields/CheckboxField.tsx
+++ b/employee-portal/src/lib/shared/components/formFields/CheckboxField.tsx
@@ -3,6 +3,7 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
+import { useIsFormDisabled } from "@eshg/lib-portal/components/form/DisabledFormContext";
 import { useBaseField } from "@eshg/lib-portal/components/formFields/BaseField";
 import { FieldProps } from "@eshg/lib-portal/types/form";
 import { Checkbox, CheckboxProps, FormControl, FormHelperText } from "@mui/joy";
@@ -36,6 +37,7 @@ function isChecked(
 }
 
 export function CheckboxField(props: CheckboxFieldProps) {
+  const disabled = useIsFormDisabled() || props.disabled;
   const {
     input: field,
     required,
@@ -74,7 +76,7 @@ export function CheckboxField(props: CheckboxFieldProps) {
         }}
         onBlur={field.onBlur}
         label={starLabel}
-        disabled={props.disabled}
+        disabled={disabled}
         checked={isChecked(field.value, props.representingValue)}
         value={props.representingValue ?? "true"}
         size={props.size}
diff --git a/employee-portal/src/lib/shared/components/formFields/CheckboxGroupField.tsx b/employee-portal/src/lib/shared/components/formFields/CheckboxGroupField.tsx
index 702f297f8..396df272f 100644
--- a/employee-portal/src/lib/shared/components/formFields/CheckboxGroupField.tsx
+++ b/employee-portal/src/lib/shared/components/formFields/CheckboxGroupField.tsx
@@ -13,14 +13,11 @@ import {
   CheckboxProps,
   FormControl,
   FormControlProps,
-  getFormControlUtilityClass,
-  styled,
 } from "@mui/joy";
-import { SxProps } from "@mui/joy/styles/types";
+import { SxProps, TypographySystem } from "@mui/joy/styles/types";
 import { ChangeEvent, ChangeEventHandler, ReactNode, useId } from "react";
 
-import { Legend } from "./Legend";
-import { OptionalHelperText } from "./OptionalHelperText";
+import { FieldSetControl } from "./FieldSetControl";
 
 export interface AccessibleSelectOption extends SelectOption {
   ariaLabel?: string;
@@ -30,6 +27,7 @@ export interface CheckboxGroupFieldProps<T extends SelectOption>
   options: T[];
   name: string;
   label?: string | ReactNode;
+  labelLevel?: keyof TypographySystem;
   orientation?: "vertical" | "horizontal";
   onChange?: ChangeEventHandler<HTMLInputElement>;
   sx?: SxProps;
@@ -71,6 +69,7 @@ export function CheckboxGroupField<T extends SelectOption = SelectOption>(
     <FieldSetControl
       onBlur={field.input.onBlur}
       legend={props.label}
+      legendLevel={props.labelLevel}
       helperText={field.helperText}
       required={field.required}
       error={field.error}
@@ -94,7 +93,7 @@ export function CheckboxGroupField<T extends SelectOption = SelectOption>(
   );
 }
 
-type FieldSetProps = Pick<
+export type FieldSetProps = Pick<
   FormControlProps,
   | "required"
   | "error"
@@ -105,51 +104,14 @@ type FieldSetProps = Pick<
   | "aria-label"
 > & { flexDirection?: "row" | "column" };
 
-interface FieldSetLegendAndHelper {
+export interface FieldSetLegendAndHelper {
   helperText?: string;
   legend?: string | ReactNode;
+  legendLevel?: keyof TypographySystem;
   children: ReactNode;
   groupHelperTextId?: string;
 }
 
-export function FieldSetControl({
-  helperText,
-  legend,
-  children,
-  error,
-  groupHelperTextId,
-  ...fieldSetProps
-}: FieldSetProps & FieldSetLegendAndHelper) {
-  const rootClass = getFormControlUtilityClass("root");
-  const errorClass = getFormControlUtilityClass("error");
-  const className =
-    fieldSetProps.className != null
-      ? `${rootClass} ${fieldSetProps.className}`
-      : rootClass;
-
-  const classNameWithError = error ? `${errorClass} ${className}` : className;
-  return (
-    <FieldSetRow
-      component="fieldset"
-      flexDirection={"column"}
-      {...fieldSetProps}
-      className={classNameWithError}
-    >
-      <Legend>{legend}</Legend>
-      {children}
-      <OptionalHelperText id={groupHelperTextId}>
-        {helperText}
-      </OptionalHelperText>
-    </FieldSetRow>
-  );
-}
-
-const FieldSetRow = styled(Row)(() => ({
-  margin: 0,
-  padding: 0,
-  border: "none",
-}));
-
 interface CheckboxesProps<T extends AccessibleSelectOption> {
   name: string;
   options: T[];
diff --git a/employee-portal/src/lib/shared/components/formFields/FieldSetControl.tsx b/employee-portal/src/lib/shared/components/formFields/FieldSetControl.tsx
new file mode 100644
index 000000000..89e36a6f0
--- /dev/null
+++ b/employee-portal/src/lib/shared/components/formFields/FieldSetControl.tsx
@@ -0,0 +1,51 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import { Row } from "@eshg/lib-portal/components/Row";
+import { BoxProps, getFormControlUtilityClass, styled } from "@mui/joy";
+
+import { FieldSetLegendAndHelper, FieldSetProps } from "./CheckboxGroupField";
+import { Legend } from "./Legend";
+import { OptionalHelperText } from "./OptionalHelperText";
+
+function UnstyledFieldSetRow(props: Omit<BoxProps, "component">) {
+  return <Row {...props} component="fieldset" />;
+}
+export const FieldSetRow = styled(UnstyledFieldSetRow)(() => ({
+  margin: 0,
+  padding: 0,
+  border: "none",
+}));
+export const FieldSetColumn = styled(FieldSetRow)(() => ({
+  flexDirection: "column",
+}));
+
+export function FieldSetControl({
+  helperText,
+  legend,
+  children,
+  legendLevel,
+  error,
+  groupHelperTextId,
+  ...fieldSetProps
+}: FieldSetProps & FieldSetLegendAndHelper) {
+  const rootClass = getFormControlUtilityClass("root");
+  const errorClass = getFormControlUtilityClass("error");
+  const className =
+    fieldSetProps.className != null
+      ? `${rootClass} ${fieldSetProps.className}`
+      : rootClass;
+
+  const classNameWithError = error ? `${errorClass} ${className}` : className;
+  return (
+    <FieldSetColumn {...fieldSetProps} className={classNameWithError}>
+      <Legend level={legendLevel}>{legend}</Legend>
+      {children}
+      <OptionalHelperText id={groupHelperTextId}>
+        {helperText}
+      </OptionalHelperText>
+    </FieldSetColumn>
+  );
+}
diff --git a/employee-portal/src/lib/shared/components/formFields/Legend.tsx b/employee-portal/src/lib/shared/components/formFields/Legend.tsx
index 189cb4bda..bb7e878be 100644
--- a/employee-portal/src/lib/shared/components/formFields/Legend.tsx
+++ b/employee-portal/src/lib/shared/components/formFields/Legend.tsx
@@ -3,11 +3,18 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
+import { useIsFormDisabled } from "@eshg/lib-portal/components/form/DisabledFormContext";
 import { FormLabel, getFormLabelUtilityClass, useTheme } from "@mui/joy";
+import { TypographySystem } from "@mui/joy/styles/types";
 import { PropsWithChildren } from "react";
 
-export function Legend({ children }: PropsWithChildren) {
+interface LegendProps extends PropsWithChildren {
+  level?: keyof TypographySystem;
+}
+
+export function Legend({ children, level }: LegendProps) {
   const theme = useTheme();
+  const disabled = useIsFormDisabled();
 
   if (children == null) {
     return null;
@@ -24,6 +31,10 @@ export function Legend({ children }: PropsWithChildren) {
         margin: "0 0 0.375rem 0",
         fontSize: theme.fontSize.sm,
         fontWeight: theme.fontWeight.md,
+        color: disabled ? theme.palette.text.secondary : "inherit",
+        ...(level && {
+          font: theme.typography[level],
+        }),
       }}
     >
       {children}
diff --git a/employee-portal/src/lib/shared/components/formFields/TextareaField.tsx b/employee-portal/src/lib/shared/components/formFields/TextareaField.tsx
index c72c643fa..c379a37cf 100644
--- a/employee-portal/src/lib/shared/components/formFields/TextareaField.tsx
+++ b/employee-portal/src/lib/shared/components/formFields/TextareaField.tsx
@@ -9,11 +9,11 @@ import {
   useBaseField,
 } from "@eshg/lib-portal/components/formFields/BaseField";
 import { ValidationRules } from "@eshg/lib-portal/types/form";
-import { Textarea } from "@mui/joy";
+import { Textarea, TextareaProps } from "@mui/joy";
 import { SxProps } from "@mui/joy/styles/types";
 import { FocusEvent, ReactNode } from "react";
 
-interface TextareaFieldProps extends ValidationRules<string> {
+export interface TextareaFieldProps extends ValidationRules<string> {
   name: string;
   label?: string | ReactNode;
   placeholder?: string;
@@ -26,6 +26,7 @@ interface TextareaFieldProps extends ValidationRules<string> {
   disabled?: boolean;
   "data-testid"?: string;
   "aria-label"?: string;
+  slotProps?: TextareaProps["slotProps"];
 }
 
 export function TextareaField(props: TextareaFieldProps) {
@@ -64,7 +65,10 @@ export function TextareaField(props: TextareaFieldProps) {
         placeholder={props.placeholder}
         readOnly={props.readOnly}
         disabled={disabled}
-        slotProps={{ textarea: { disabled } }}
+        slotProps={{
+          ...props.slotProps,
+          textarea: { ...props.slotProps?.textarea, disabled },
+        }}
         data-testid={props["data-testid"]}
         aria-label={props["aria-label"]}
       />
diff --git a/employee-portal/src/lib/shared/components/icons/AddTextTemplate.tsx b/employee-portal/src/lib/shared/components/icons/AddTextTemplate.tsx
new file mode 100644
index 000000000..bbb346599
--- /dev/null
+++ b/employee-portal/src/lib/shared/components/icons/AddTextTemplate.tsx
@@ -0,0 +1,33 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import { SvgIcon, SvgIconProps } from "@mui/joy";
+
+export function AddTextTemplate(props: SvgIconProps) {
+  return (
+    <SvgIcon {...props}>
+      <svg
+        width="20"
+        height="20"
+        viewBox="0 0 20 20"
+        fill="none"
+        xmlns="http://www.w3.org/2000/svg"
+      >
+        <path
+          fillRule="evenodd"
+          clipRule="evenodd"
+          d="M17.2368 13.3759H15.307V15.3057H13.3772V17.2355H15.307V19.1654H17.2368V17.2355H19.1667V15.3057H17.2368V13.3759Z"
+          fill="#0B6BCB"
+        />
+        <path
+          fillRule="evenodd"
+          clipRule="evenodd"
+          d="M10.9498 1.29941L14.8321 5.18167C15.1374 5.48698 15.307 5.89782 15.307 6.32374V10.9862C13.0267 11.2124 11.2137 13.0254 10.9875 15.3057H2.44277C1.55701 15.3057 0.833328 14.582 0.833328 13.6963V2.44147C0.833328 1.55572 1.55701 0.832031 2.44277 0.832031H9.8153C10.2412 0.832031 10.6521 1.00164 10.9498 1.29941ZM9.51754 4.04715H4.04845V5.65659H9.51754V4.04715ZM4.04845 12.0906H9.51754V10.4812H4.04845V12.0906ZM4.04845 8.87171H11.4474V7.26604H4.04845V8.87171Z"
+          fill="#0B6BCB"
+        />
+      </svg>
+    </SvgIcon>
+  );
+}
diff --git a/employee-portal/src/lib/shared/components/icons/CalendarAddDay.tsx b/employee-portal/src/lib/shared/components/icons/CalendarAddDay.tsx
index e4c4019fd..9cb805ab7 100644
--- a/employee-portal/src/lib/shared/components/icons/CalendarAddDay.tsx
+++ b/employee-portal/src/lib/shared/components/icons/CalendarAddDay.tsx
@@ -18,7 +18,7 @@ export function CalendarAddDay(props: SvgIconProps) {
       >
         <path
           d="M14 20V17H11V15H14V12H16V15H19V17H16V20H14ZM2 18C1.45 18 0.979167 17.8042 0.5875 17.4125C0.195833 17.0208 0 16.55 0 16V4C0 3.45 0.195833 2.97917 0.5875 2.5875C0.979167 2.19583 1.45 2 2 2H3V0H5V2H11V0H13V2H14C14.55 2 15.0208 2.19583 15.4125 2.5875C15.8042 2.97917 16 3.45 16 4V10.1C15.6667 10.05 15.3333 10.025 15 10.025C14.6667 10.025 14.3333 10.05 14 10.1V7H2V16H9C9 16.3333 9.025 16.6667 9.075 17C9.125 17.3333 9.21667 17.6667 9.35 18H2Z"
-          fill="#0B6BCB"
+          fill="currentColor"
         />
       </svg>
     </SvgIcon>
diff --git a/employee-portal/src/lib/shared/components/legacyPersonSidebar/personSidebarHelper.ts b/employee-portal/src/lib/shared/components/legacyPersonSidebar/personSidebarHelper.ts
index 69be5f313..e349bebbe 100644
--- a/employee-portal/src/lib/shared/components/legacyPersonSidebar/personSidebarHelper.ts
+++ b/employee-portal/src/lib/shared/components/legacyPersonSidebar/personSidebarHelper.ts
@@ -7,9 +7,9 @@ import {
   ApiDomesticAddress,
   ApiGetReferencePersonResponse,
 } from "@eshg/base-api";
-import { ApiPatient } from "@eshg/employee-portal-api/travelMedicine";
 import { toDateString } from "@eshg/lib-portal/helpers/dateTime";
 import { dropBlankStrings } from "@eshg/lib-portal/helpers/form";
+import { ApiPatient } from "@eshg/travel-medicine-api";
 
 import {
   LegacyBaseAddress,
diff --git a/employee-portal/src/lib/shared/components/procedures/progress-entries/ProgressEntriesContext.tsx b/employee-portal/src/lib/shared/components/procedures/progress-entries/ProgressEntriesContext.tsx
index 5c7dbf114..4df1805f1 100644
--- a/employee-portal/src/lib/shared/components/procedures/progress-entries/ProgressEntriesContext.tsx
+++ b/employee-portal/src/lib/shared/components/procedures/progress-entries/ProgressEntriesContext.tsx
@@ -9,7 +9,6 @@ import { ApiProcedureStatus } from "@eshg/employee-portal-api/businessProcedures
 import { RequiresChildren } from "@eshg/lib-portal/types/react";
 import { createContext, useContext, useState } from "react";
 
-import { buildName } from "@/lib/shared/components/procedures/progress-entries/helper";
 import { useHasUserRoleCheck } from "@/lib/shared/hooks/useAccessControl";
 import { useIsOffline } from "@/lib/shared/hooks/useIsOffline";
 
@@ -115,22 +114,3 @@ export function useIsReadOnly() {
 export function useProgressEntriesConfig() {
   return useContext(ProgressEntriesContext).config;
 }
-
-export function useOpenApprovalRequests() {
-  const { approvalRequestsResponse } = useContext(
-    ProgressEntriesContext,
-  ).config;
-  return approvalRequestsResponse?.approvalRequests;
-}
-
-export function useResolvedUserName(userId?: string) {
-  const { approvalRequestsResponse } = useContext(
-    ProgressEntriesContext,
-  ).config;
-  if (!userId) {
-    return "Unbekanntem Nutzer";
-  }
-
-  const user = approvalRequestsResponse?.resolvedUsers?.[userId];
-  return buildName(user?.firstName, user?.lastName);
-}
diff --git a/employee-portal/src/lib/shared/components/procedures/progress-entries/ProgressEntriesPage.tsx b/employee-portal/src/lib/shared/components/procedures/progress-entries/ProgressEntriesPage.tsx
index 355a8cc72..b20e5accf 100644
--- a/employee-portal/src/lib/shared/components/procedures/progress-entries/ProgressEntriesPage.tsx
+++ b/employee-portal/src/lib/shared/components/procedures/progress-entries/ProgressEntriesPage.tsx
@@ -33,7 +33,6 @@ import {
   ProgressEntriesProvider,
   useHasDeletionRights,
   useIsReadOnly,
-  useOpenApprovalRequests,
   useProgressEntriesConfig,
 } from "./ProgressEntriesContext";
 import { SortSelect } from "./SortSelect";
@@ -227,10 +226,10 @@ interface ProgressEntriesInformationSheetProps {
 function ProgressEntriesInformationSheet({
   openApprovalRequestsSidebar,
 }: ProgressEntriesInformationSheetProps) {
-  const { searchParams } = useProgressEntriesConfig();
+  const { searchParams, approvalRequestsResponse } = useProgressEntriesConfig();
   const timelineEntryProps = useTimelineEntryProps();
 
-  const approvalRequests = useOpenApprovalRequests();
+  const approvalRequests = approvalRequestsResponse?.approvalRequests;
   const hasDeletionRights = useHasDeletionRights();
   const isReadOnly = useIsReadOnly();
   const isOffline = useIsOffline();
diff --git a/employee-portal/src/lib/shared/components/procedures/progress-entries/buildTimelineEntryProps.tsx b/employee-portal/src/lib/shared/components/procedures/progress-entries/buildTimelineEntryProps.tsx
index af8c563fa..47f81abbf 100644
--- a/employee-portal/src/lib/shared/components/procedures/progress-entries/buildTimelineEntryProps.tsx
+++ b/employee-portal/src/lib/shared/components/procedures/progress-entries/buildTimelineEntryProps.tsx
@@ -8,6 +8,7 @@ import {
   ApiManualProgressEntry,
   ApiProcessedInboxProgressEntry,
   ApiSystemProgressEntry,
+  ApiUser,
 } from "@eshg/employee-portal-api/businessProcedures";
 import { ButtonLink } from "@eshg/lib-portal/components/buttons/ButtonLink";
 import { formatDateTime } from "@eshg/lib-portal/formatters/dateTime";
@@ -23,6 +24,7 @@ import {
 } from "@/lib/shared/components/procedures/progress-entries/ProgressEntriesContext";
 import { TimelineEntryProps } from "@/lib/shared/components/timeline/TimelineEntry";
 import { TimelineEntryIndicator } from "@/lib/shared/components/timeline/TimelineEntryIndicator";
+import { fullName } from "@/lib/shared/components/users/userFormatter";
 
 import { EntryFile } from "./EntryFile";
 import {
@@ -32,30 +34,41 @@ import {
   systemProgressEntryIndicators,
   systemProgressEntryTypeTitles,
 } from "./constants";
-import { buildName, displayTriggerer } from "./helper";
+import { formatTriggeredBy } from "./helper";
 
 interface ProgressEntryTimelineEntryProps extends TimelineEntryProps {
   key: string;
 }
 
 export function useTimelineEntryProps(): ProgressEntryTimelineEntryProps[] {
-  const { progressEntries } = useProgressEntriesConfig();
+  const { progressEntries, resolvedUsers } =
+    useProgressEntriesConfig().progressEntries;
 
   return progressEntries.map((progressEntry) =>
-    timelineEntryPropsOfProgressEntry(progressEntry),
+    timelineEntryPropsOfProgressEntry(progressEntry, resolvedUsers),
   );
 }
 
 function timelineEntryPropsOfProgressEntry(
   progressEntry: ApiGetProgressEntriesResponseProgressEntriesInner,
+  resolvedUsers: Record<string, ApiUser>,
 ): ProgressEntryTimelineEntryProps {
   switch (progressEntry.type) {
     case "SystemProgressEntry":
-      return timelineEntryPropsOfSystemProgressEntry(progressEntry);
+      return timelineEntryPropsOfSystemProgressEntry(
+        progressEntry,
+        resolvedUsers,
+      );
     case "ManualProgressEntry":
-      return timelineEntryPropsOfManualProgressEntry(progressEntry);
+      return timelineEntryPropsOfManualProgressEntry(
+        progressEntry,
+        resolvedUsers,
+      );
     case "ProcessedInboxProgressEntry":
-      return timelineEntryPropsOfInboxProgressEntry(progressEntry);
+      return timelineEntryPropsOfInboxProgressEntry(
+        progressEntry,
+        resolvedUsers,
+      );
   }
 }
 
@@ -73,6 +86,7 @@ function TextSheet(props: { text: string; dataTestId: string }) {
 
 function timelineEntryPropsOfSystemProgressEntry(
   systemProgressEntry: ApiSystemProgressEntry,
+  resolvedUsers: Record<string, ApiUser>,
 ): ProgressEntryTimelineEntryProps {
   return {
     key: systemProgressEntry.progressEntryId,
@@ -88,7 +102,7 @@ function timelineEntryPropsOfSystemProgressEntry(
     ),
     label: buildLabel(
       systemProgressEntry.createdAt,
-      displayTriggerer(systemProgressEntry),
+      formatTriggeredBy(systemProgressEntry, resolvedUsers),
     ),
     indicator: (
       <TimelineEntryIndicator color="success">
@@ -116,6 +130,7 @@ function timelineEntryPropsOfSystemProgressEntry(
 
 function timelineEntryPropsOfManualProgressEntry(
   manualProgressEntry: ApiManualProgressEntry,
+  resolvedUsers: Record<string, ApiUser>,
 ): ProgressEntryTimelineEntryProps {
   const note = manualProgressEntry.note;
   return {
@@ -130,10 +145,7 @@ function timelineEntryPropsOfManualProgressEntry(
     ),
     label: buildLabel(
       manualProgressEntry.createdAt,
-      buildName(
-        manualProgressEntry.createdByUserFirstName,
-        manualProgressEntry.createdByUserLastName,
-      ),
+      fullName(resolvedUsers[manualProgressEntry.createdBy]),
     ),
     indicator: (
       <TimelineEntryIndicator>
@@ -158,6 +170,7 @@ function timelineEntryPropsOfManualProgressEntry(
 
 function timelineEntryPropsOfInboxProgressEntry(
   inboxProgressEntry: ApiProcessedInboxProgressEntry,
+  resolvedUsers: Record<string, ApiUser>,
 ): ProgressEntryTimelineEntryProps {
   return {
     key: inboxProgressEntry.progressEntryId,
@@ -171,10 +184,7 @@ function timelineEntryPropsOfInboxProgressEntry(
     ),
     label: buildLabel(
       inboxProgressEntry.createdAt,
-      buildName(
-        inboxProgressEntry.createdByUserFirstName,
-        inboxProgressEntry.createdByUserLastName,
-      ),
+      fullName(resolvedUsers[inboxProgressEntry.createdBy]),
     ),
     indicator: (
       <TimelineEntryIndicator>
diff --git a/employee-portal/src/lib/shared/components/procedures/progress-entries/helper.ts b/employee-portal/src/lib/shared/components/procedures/progress-entries/helper.ts
index 539c52305..9664b83ce 100644
--- a/employee-portal/src/lib/shared/components/procedures/progress-entries/helper.ts
+++ b/employee-portal/src/lib/shared/components/procedures/progress-entries/helper.ts
@@ -8,11 +8,13 @@ import {
   ApiProgressEntry,
   ApiSystemProgressEntry,
   ApiTriggerType,
+  ApiUser,
 } from "@eshg/employee-portal-api/businessProcedures";
 import { OptionalFieldValue } from "@eshg/lib-portal/types/form";
 import { isDefined, isEmpty } from "remeda";
 
 import { manualProgressEntryFileTypes } from "@/lib/shared/components/procedures/progress-entries/constants";
+import { fullName } from "@/lib/shared/components/users/userFormatter";
 
 export function extractFileDescriptionValue(entry: ApiProgressEntry) {
   if (!isDefined(entry.fileReference)) return undefined;
@@ -20,23 +22,19 @@ export function extractFileDescriptionValue(entry: ApiProgressEntry) {
   return entry.fileReference.metaData?.description;
 }
 
-export function displayTriggerer(entry: ApiSystemProgressEntry) {
+export function formatTriggeredBy(
+  entry: ApiSystemProgressEntry,
+  resolvedUsers: Record<string, ApiUser>,
+) {
   if (entry.triggerType === ApiTriggerType.Citizen) {
     return "Bürger:in";
   }
-  return entry.triggeredBy
-    ? buildName(entry.triggeredByUserFirstName, entry.triggeredByUserLastName)
-    : "System";
-}
 
-export function buildName(firstName?: string, lastName?: string): string {
-  if (!isDefined(firstName) && !isDefined(lastName))
-    return "Unbekanntem Nutzer";
-  return `${emptyIfUndefined(firstName)} ${emptyIfUndefined(lastName)}`;
-}
+  if (!isDefined(entry.triggeredBy)) {
+    return "System";
+  }
 
-function emptyIfUndefined(optionalValue?: string) {
-  return isDefined(optionalValue) ? optionalValue : "";
+  return fullName(resolvedUsers[entry.triggeredBy]);
 }
 
 export function hasFileField(
diff --git a/employee-portal/src/lib/shared/components/procedures/progress-entries/queries/progressEntryApi.ts b/employee-portal/src/lib/shared/components/procedures/progress-entries/queries/progressEntryApi.ts
index 50030e5b1..181e84b21 100644
--- a/employee-portal/src/lib/shared/components/procedures/progress-entries/queries/progressEntryApi.ts
+++ b/employee-portal/src/lib/shared/components/procedures/progress-entries/queries/progressEntryApi.ts
@@ -78,7 +78,7 @@ export function useFetchProgressEntries(
       return {
         detailedProcedure,
         files: files.fileDetails,
-        progressEntries: (await progressEntries.value()).progressEntries,
+        progressEntries: await progressEntries.value(),
         approvalRequestsResponse: approvalRequestsResponse,
       };
     },
diff --git a/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/approvalRequestOverviewSidebar/ApprovalRequestCard.tsx b/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/approvalRequestOverviewSidebar/ApprovalRequestCard.tsx
index f30de71ce..f83b3c4b3 100644
--- a/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/approvalRequestOverviewSidebar/ApprovalRequestCard.tsx
+++ b/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/approvalRequestOverviewSidebar/ApprovalRequestCard.tsx
@@ -21,18 +21,18 @@ import { useContext } from "react";
 import { isDefined } from "remeda";
 
 import { ButtonBar } from "@/lib/shared/components/buttons/ButtonBar";
-import {
-  ProgressEntriesContext,
-  useResolvedUserName,
-} from "@/lib/shared/components/procedures/progress-entries/ProgressEntriesContext";
+import { ProgressEntriesContext } from "@/lib/shared/components/procedures/progress-entries/ProgressEntriesContext";
 import { useDecideApprovalRequest } from "@/lib/shared/components/procedures/progress-entries/mutations/approvalRequestApi";
 import { FileAsApprovalRequestEntity } from "@/lib/shared/components/procedures/progress-entries/sidebars/approvalRequestOverviewSidebar/FileAsApprovalRequestEntity";
 import { ProgressEntryAsApprovalRequestEntity } from "@/lib/shared/components/procedures/progress-entries/sidebars/approvalRequestOverviewSidebar/ProgressEntryAsApprovalRequestEntity";
+import { fullName } from "@/lib/shared/components/users/userFormatter";
 
 export function ApprovalRequestCard(request: ApiApprovalRequest) {
   const progressEntriesContext = useContext(ProgressEntriesContext);
-  const { approvalRequestApi } = progressEntriesContext.config;
+  const { approvalRequestApi, approvalRequestsResponse } =
+    progressEntriesContext.config;
   const decideApprovalRequest = useDecideApprovalRequest(approvalRequestApi);
+  const { resolvedUsers } = approvalRequestsResponse!;
 
   function decideRequest(decision: string) {
     return function () {
@@ -62,7 +62,7 @@ export function ApprovalRequestCard(request: ApiApprovalRequest) {
             color="danger"
             data-testid="requestTitle"
           >
-            Löschanfrage von {useResolvedUserName(request.createdBy)}
+            Löschanfrage von {fullName(resolvedUsers[request.createdBy])}
           </Typography>
           <div data-testid="requestEntity">
             {isDefined(request.entity) &&
diff --git a/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/approvalRequestOverviewSidebar/ApprovalRequestsOverviewSidebar.tsx b/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/approvalRequestOverviewSidebar/ApprovalRequestsOverviewSidebar.tsx
index 9ba211e49..8c8f4e0ea 100644
--- a/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/approvalRequestOverviewSidebar/ApprovalRequestsOverviewSidebar.tsx
+++ b/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/approvalRequestOverviewSidebar/ApprovalRequestsOverviewSidebar.tsx
@@ -9,10 +9,7 @@ import { Button, Stack } from "@mui/joy";
 import { useContext } from "react";
 
 import { ButtonBar } from "@/lib/shared/components/buttons/ButtonBar";
-import {
-  ProgressEntriesContext,
-  useOpenApprovalRequests,
-} from "@/lib/shared/components/procedures/progress-entries/ProgressEntriesContext";
+import { ProgressEntriesContext } from "@/lib/shared/components/procedures/progress-entries/ProgressEntriesContext";
 import { useGrantDeletionForAllRequests } from "@/lib/shared/components/procedures/progress-entries/mutations/approvalRequestApi";
 import { ApprovalRequestCard } from "@/lib/shared/components/procedures/progress-entries/sidebars/approvalRequestOverviewSidebar/ApprovalRequestCard";
 import { Sidebar } from "@/lib/shared/components/sidebar/Sidebar";
@@ -28,11 +25,12 @@ export function ApprovalRequestsOverviewSidebar({
   open,
   onClose,
 }: ApprovalRequestOverviewProps) {
-  const approvalRequests = useOpenApprovalRequests()!;
   const progressEntriesContext = useContext(ProgressEntriesContext);
-  const { approvalRequestApi } = progressEntriesContext.config;
+  const { approvalRequestApi, approvalRequestsResponse } =
+    progressEntriesContext.config;
   const grantDeletionForAll =
     useGrantDeletionForAllRequests(approvalRequestApi);
+  const { approvalRequests } = approvalRequestsResponse!;
 
   function deleteAll() {
     grantDeletionForAll.mutate(approvalRequests);
diff --git a/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/approvalRequestOverviewSidebar/FileAsApprovalRequestEntity.tsx b/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/approvalRequestOverviewSidebar/FileAsApprovalRequestEntity.tsx
index cec23dafc..757e73b2f 100644
--- a/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/approvalRequestOverviewSidebar/FileAsApprovalRequestEntity.tsx
+++ b/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/approvalRequestOverviewSidebar/FileAsApprovalRequestEntity.tsx
@@ -6,9 +6,12 @@
 import { ApiAbstractFile } from "@eshg/employee-portal-api/businessProcedures";
 import { formatDateTime } from "@eshg/lib-portal/formatters/dateTime";
 import { Stack, Typography } from "@mui/joy";
+import { useContext } from "react";
+import { isDefined } from "remeda";
 
 import { FileCardWithDownload } from "@/lib/shared/components/procedures/progress-entries/FileCardWithActions";
-import { useResolvedUserName } from "@/lib/shared/components/procedures/progress-entries/ProgressEntriesContext";
+import { ProgressEntriesContext } from "@/lib/shared/components/procedures/progress-entries/ProgressEntriesContext";
+import { fullName } from "@/lib/shared/components/users/userFormatter";
 
 interface FileAsApprovalRequestEntityProps {
   approvalRequestEntity: ApiAbstractFile;
@@ -17,13 +20,20 @@ interface FileAsApprovalRequestEntityProps {
 export function FileAsApprovalRequestEntity({
   approvalRequestEntity,
 }: FileAsApprovalRequestEntityProps) {
+  const { resolvedUsers } = useContext(ProgressEntriesContext).config
+    .approvalRequestsResponse!;
+
   return (
     <>
       <Stack spacing={1}>
         <Typography level={"body-xs"} data-testid="createdAtAndBy">
           {buildLabel(
             approvalRequestEntity.createdAt,
-            useResolvedUserName(approvalRequestEntity.createdBy),
+            fullName(
+              isDefined(approvalRequestEntity.createdBy)
+                ? resolvedUsers[approvalRequestEntity.createdBy]
+                : undefined,
+            ),
           )}
         </Typography>
         <FileCardWithDownload file={approvalRequestEntity} />
diff --git a/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/approvalRequestOverviewSidebar/ProgressEntryAsApprovalRequestEntity.tsx b/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/approvalRequestOverviewSidebar/ProgressEntryAsApprovalRequestEntity.tsx
index 885e8dfa2..cfca8be37 100644
--- a/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/approvalRequestOverviewSidebar/ProgressEntryAsApprovalRequestEntity.tsx
+++ b/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/approvalRequestOverviewSidebar/ProgressEntryAsApprovalRequestEntity.tsx
@@ -6,12 +6,14 @@
 import { ApiManualProgressEntry } from "@eshg/employee-portal-api/businessProcedures";
 import { formatDateTime } from "@eshg/lib-portal/formatters/dateTime";
 import { Stack, Typography } from "@mui/joy";
+import { useContext } from "react";
 import { isDefined } from "remeda";
 
 import { FileCardWithDownload } from "@/lib/shared/components/procedures/progress-entries/FileCardWithActions";
 import { DeletionNote } from "@/lib/shared/components/procedures/progress-entries/FileOrDeletionNote";
+import { ProgressEntriesContext } from "@/lib/shared/components/procedures/progress-entries/ProgressEntriesContext";
 import { manualProgressEntryTitles } from "@/lib/shared/components/procedures/progress-entries/constants";
-import { buildName } from "@/lib/shared/components/procedures/progress-entries/helper";
+import { fullName } from "@/lib/shared/components/users/userFormatter";
 
 interface ProgressEntryAsApprovalRequestEntityProps {
   approvalRequestEntity: ApiManualProgressEntry;
@@ -20,6 +22,9 @@ interface ProgressEntryAsApprovalRequestEntityProps {
 export function ProgressEntryAsApprovalRequestEntity({
   approvalRequestEntity,
 }: ProgressEntryAsApprovalRequestEntityProps) {
+  const { resolvedUsers } = useContext(ProgressEntriesContext).config
+    .approvalRequestsResponse!;
+
   const file = approvalRequestEntity.fileReference;
   return (
     <>
@@ -28,10 +33,7 @@ export function ProgressEntryAsApprovalRequestEntity({
           <Typography level={"body-xs"} data-testid="createdAtAndBy">
             {buildLabel(
               approvalRequestEntity.createdAt,
-              buildName(
-                approvalRequestEntity.createdByUserFirstName,
-                approvalRequestEntity.createdByUserLastName,
-              ),
+              fullName(resolvedUsers[approvalRequestEntity.createdBy]),
             )}
           </Typography>
           <Typography level={"title-md"} data-testid="entryTitle">
diff --git a/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/InboxProgressEntryDetails.tsx b/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/InboxProgressEntryDetails.tsx
index e21af9c81..222394ee2 100644
--- a/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/InboxProgressEntryDetails.tsx
+++ b/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/InboxProgressEntryDetails.tsx
@@ -3,23 +3,29 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
-import { ApiProcessedInboxProgressEntry } from "@eshg/employee-portal-api/businessProcedures";
+import {
+  ApiProcessedInboxProgressEntry,
+  ApiUser,
+} from "@eshg/employee-portal-api/businessProcedures";
 import { isDefined } from "remeda";
 
 import { inboxProgressEntryTitles } from "@/lib/shared/components/procedures/progress-entries/constants";
 import { DetailsContentWrapper } from "@/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/DetailsContentWrapper";
 import { LabelValueDisplay } from "@/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/LabelValueDisplay";
+import { fullName } from "@/lib/shared/components/users/userFormatter";
 
 export function InboxProgressEntryDetails({
   entry,
+  resolvedUsers,
 }: {
   entry: ApiProcessedInboxProgressEntry;
+  resolvedUsers: Record<string, ApiUser>;
 }) {
   return (
     <DetailsContentWrapper
       entry={entry}
       title={`Details ${inboxProgressEntryTitles[entry.inboxProgressEntryType]}`}
-      creatorName={`${entry.createdByUserFirstName} ${entry.createdByUserLastName}`}
+      creatorName={fullName(resolvedUsers[entry.createdBy])}
     >
       <LabelValueDisplay
         key="subject"
diff --git a/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/ManualProgressEntryDetails.tsx b/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/ManualProgressEntryDetails.tsx
index 703be2e8b..1cf09dc0b 100644
--- a/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/ManualProgressEntryDetails.tsx
+++ b/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/ManualProgressEntryDetails.tsx
@@ -6,6 +6,7 @@
 import {
   ApiGetProgressEntryResponseRelatedKeyDocumentProgressEntriesInner,
   ApiManualProgressEntry,
+  ApiUser,
 } from "@eshg/employee-portal-api/businessProcedures";
 import { SubmitButton } from "@eshg/lib-portal/components/buttons/SubmitButton";
 import ArrowForwardIcon from "@mui/icons-material/ArrowForward";
@@ -39,15 +40,18 @@ import {
 import { DetailsHistory } from "@/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/DetailsHistory";
 import { LabelValueDisplay } from "@/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/LabelValueDisplay";
 import { SidebarActions } from "@/lib/shared/components/sidebar/SidebarActions";
+import { fullName } from "@/lib/shared/components/users/userFormatter";
 
 type ManualProgressEntryDetailsView = "DETAILS" | "HISTORY";
 
 export function ManualProgressEntryDetails({
   entry,
+  resolvedUsers,
   relatedKeyDocumentProgressEntries,
   onClose,
 }: {
   entry: ApiManualProgressEntry;
+  resolvedUsers: Record<string, ApiUser>;
   relatedKeyDocumentProgressEntries: ApiGetProgressEntryResponseRelatedKeyDocumentProgressEntriesInner[];
   onClose: () => void;
 }) {
@@ -67,6 +71,7 @@ export function ManualProgressEntryDetails({
       {currentView === "DETAILS" && (
         <ManualProgressEntryDetailsView
           entry={entry}
+          resolvedUsers={resolvedUsers}
           relatedKeyDocumentProgressEntries={relatedKeyDocumentProgressEntries}
           onHistory={openHistory}
           onClose={onClose}
@@ -82,10 +87,11 @@ export function ManualProgressEntryDetails({
 export function ManualProgressEntryDetailsView(props: {
   entry: ApiManualProgressEntry;
   relatedKeyDocumentProgressEntries: ApiGetProgressEntryResponseRelatedKeyDocumentProgressEntriesInner[];
+  resolvedUsers: Record<string, ApiUser>;
   onClose: () => void;
   onHistory: () => void;
 }) {
-  const { entry } = props;
+  const { entry, resolvedUsers } = props;
   const isReadOnly = useIsReadOnly();
   const hasEditRights = useHasEditRights(entry);
   const editable = hasEditRights && !isReadOnly && !entry.locked;
@@ -95,6 +101,7 @@ export function ManualProgressEntryDetailsView(props: {
   ) : (
     <ManualProgressEntryDetailsTemplate
       entry={entry}
+      resolvedUsers={resolvedUsers}
       relatedKeyDocumentProgressEntries={
         props.relatedKeyDocumentProgressEntries
       }
@@ -125,11 +132,13 @@ export interface ProgressEntryDetailsValues {
 
 function EditableManualProgressEntryDetails({
   entry,
+  resolvedUsers,
   relatedKeyDocumentProgressEntries,
   onClose,
   onHistory,
 }: {
   entry: ApiManualProgressEntry;
+  resolvedUsers: Record<string, ApiUser>;
   relatedKeyDocumentProgressEntries: ApiGetProgressEntryResponseRelatedKeyDocumentProgressEntriesInner[];
   onClose: () => void;
   onHistory: () => void;
@@ -169,6 +178,7 @@ function EditableManualProgressEntryDetails({
         <SidebarForm onSubmit={handleSubmit}>
           <ManualProgressEntryDetailsTemplate
             entry={entry}
+            resolvedUsers={resolvedUsers}
             relatedKeyDocumentProgressEntries={
               relatedKeyDocumentProgressEntries
             }
@@ -209,6 +219,7 @@ function isFileLocked(entry: ApiManualProgressEntry) {
 
 interface ManualProgressEntryDetailsTemplateProps {
   entry: ApiManualProgressEntry;
+  resolvedUsers: Record<string, ApiUser>;
   relatedKeyDocumentProgressEntries: ApiGetProgressEntryResponseRelatedKeyDocumentProgressEntriesInner[];
   handleClose: () => void;
   elements: {
@@ -221,6 +232,7 @@ interface ManualProgressEntryDetailsTemplateProps {
 
 function ManualProgressEntryDetailsTemplate({
   entry,
+  resolvedUsers,
   relatedKeyDocumentProgressEntries,
   handleClose,
   elements,
@@ -248,7 +260,7 @@ function ManualProgressEntryDetailsTemplate({
       <DetailsContentWrapper
         entry={entry}
         title={`Details ${manualProgressEntryTypeNames[entry.manualProgressEntryType]}`}
-        creatorName={`${entry.createdByUserFirstName} ${entry.createdByUserLastName}`}
+        creatorName={fullName(resolvedUsers[entry.createdBy])}
         additionalFileElements={{
           start: (
             <>
diff --git a/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/ProgressEntryDetailsSidebar.tsx b/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/ProgressEntryDetailsSidebar.tsx
index 4867b8d90..b0b43d0f7 100644
--- a/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/ProgressEntryDetailsSidebar.tsx
+++ b/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/ProgressEntryDetailsSidebar.tsx
@@ -26,7 +26,7 @@ export function ProgressEntryDetailsSidebar({
   const { procedureId, progressEntryApi, progressEntryApiQueryKey } =
     progressEntriesContext.config;
   const { closeEntryDetailsSidebar } = progressEntriesContext.action;
-  const { progressEntry, relatedKeyDocumentProgressEntries } =
+  const { progressEntry, relatedKeyDocumentProgressEntries, resolvedUsers } =
     useFetchProgressEntryDetails(
       progressEntryApi,
       progressEntryApiQueryKey,
@@ -40,6 +40,7 @@ export function ProgressEntryDetailsSidebar({
         progressEntry.type === "ManualProgressEntry" && (
           <ManualProgressEntryDetails
             entry={progressEntry}
+            resolvedUsers={resolvedUsers}
             relatedKeyDocumentProgressEntries={
               relatedKeyDocumentProgressEntries
             }
@@ -50,6 +51,7 @@ export function ProgressEntryDetailsSidebar({
         progressEntry.type === "SystemProgressEntry" && (
           <SystemProgressEntryDetails
             entry={progressEntry}
+            resolvedUsers={resolvedUsers}
             relatedKeyDocumentProgressEntries={
               relatedKeyDocumentProgressEntries
             }
@@ -57,7 +59,10 @@ export function ProgressEntryDetailsSidebar({
         )}
       {isDefined(progressEntry) &&
         progressEntry.type === "ProcessedInboxProgressEntry" && (
-          <InboxProgressEntryDetails entry={progressEntry} />
+          <InboxProgressEntryDetails
+            entry={progressEntry}
+            resolvedUsers={resolvedUsers}
+          />
         )}
     </Sidebar>
   );
diff --git a/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/SystemProgressEntryDetails.tsx b/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/SystemProgressEntryDetails.tsx
index 317bc5e89..596cce0b1 100644
--- a/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/SystemProgressEntryDetails.tsx
+++ b/employee-portal/src/lib/shared/components/procedures/progress-entries/sidebars/progressEntryDetailsSidebar/SystemProgressEntryDetails.tsx
@@ -6,13 +6,14 @@
 import {
   ApiGetProgressEntryResponseRelatedKeyDocumentProgressEntriesInner,
   ApiSystemProgressEntry,
+  ApiUser,
 } from "@eshg/employee-portal-api/businessProcedures";
 import { Chip } from "@mui/joy";
 import { isDefined } from "remeda";
 
 import { useProgressEntriesConfig } from "@/lib/shared/components/procedures/progress-entries/ProgressEntriesContext";
 import { systemProgressEntryTypeTitles } from "@/lib/shared/components/procedures/progress-entries/constants";
-import { displayTriggerer } from "@/lib/shared/components/procedures/progress-entries/helper";
+import { formatTriggeredBy } from "@/lib/shared/components/procedures/progress-entries/helper";
 import {
   AllKeyDocumentVersions,
   DetailsContentWrapper,
@@ -22,9 +23,11 @@ import { LabelValueDisplay } from "@/lib/shared/components/procedures/progress-e
 
 export function SystemProgressEntryDetails({
   entry,
+  resolvedUsers,
   relatedKeyDocumentProgressEntries,
 }: {
   entry: ApiSystemProgressEntry;
+  resolvedUsers: Record<string, ApiUser>;
   relatedKeyDocumentProgressEntries: ApiGetProgressEntryResponseRelatedKeyDocumentProgressEntriesInner[];
 }) {
   const { keyDocumentTypes } = useProgressEntriesConfig();
@@ -49,7 +52,7 @@ export function SystemProgressEntryDetails({
       title={
         isDefined(titleSuffix) ? `${titlePrefix} ${titleSuffix}` : titlePrefix
       }
-      creatorName={displayTriggerer(entry)}
+      creatorName={formatTriggeredBy(entry, resolvedUsers)}
       additionalFileElements={{
         start: (
           <>
diff --git a/employee-portal/src/lib/shared/components/procedures/progress-entries/types.ts b/employee-portal/src/lib/shared/components/procedures/progress-entries/types.ts
index 2ba4d6396..d4c2cbb9e 100644
--- a/employee-portal/src/lib/shared/components/procedures/progress-entries/types.ts
+++ b/employee-portal/src/lib/shared/components/procedures/progress-entries/types.ts
@@ -9,7 +9,7 @@ import { ApiUserRole } from "@eshg/base-api";
 import {
   ApiGetDetailedProcedureResponse,
   ApiGetProcedureApprovalRequestsResponse,
-  ApiGetProgressEntriesResponseProgressEntriesInner,
+  ApiGetProgressEntriesResponse,
   ApiProgressEntryClass,
   ApiProgressEntryReferenceFilePair,
   ApprovalRequestApi,
@@ -44,7 +44,7 @@ export interface ProgressEntriesPageProps extends ProgressEntryClients {
 
 export interface ProgressEntriesConfig extends ProgressEntryClients {
   procedureId: string;
-  progressEntries: ApiGetProgressEntriesResponseProgressEntriesInner[];
+  progressEntries: ApiGetProgressEntriesResponse;
   detailedProcedure: ApiGetDetailedProcedureResponse;
   files: ApiProgressEntryReferenceFilePair[];
   searchParams: ProgressEntriesSearchParams;
diff --git a/employee-portal/src/lib/shared/components/tabNavigationToolbar/TabNavigationToolbar.tsx b/employee-portal/src/lib/shared/components/tabNavigationToolbar/TabNavigationToolbar.tsx
index 4d9e4b26d..cf2ff2735 100644
--- a/employee-portal/src/lib/shared/components/tabNavigationToolbar/TabNavigationToolbar.tsx
+++ b/employee-portal/src/lib/shared/components/tabNavigationToolbar/TabNavigationToolbar.tsx
@@ -5,8 +5,15 @@
 
 import { InternalLinkIconButton } from "@eshg/lib-portal/components/navigation/InternalLinkIconButton";
 import { ChevronLeft } from "@mui/icons-material";
-import { Box, Divider, Sheet, Stack } from "@mui/joy";
-import { ReactNode } from "react";
+import {
+  Box,
+  Divider,
+  IconButton,
+  IconButtonProps,
+  Sheet,
+  Stack,
+} from "@mui/joy";
+import { ElementType, ReactNode } from "react";
 
 import { TabNavigation } from "@/lib/shared/components/tabNavigation/TabNavigation";
 import { TabNavigationItem } from "@/lib/shared/components/tabNavigation/types";
@@ -15,8 +22,8 @@ import { HorizontalScrollBoxWithButtons } from "@/lib/shared/components/tabNavig
 export interface TabNavigationToolbarProps {
   /** tab definitions */
   items: TabNavigationItem[];
-  /** route for back button */
-  routeBack?: string;
+  /** route or component for back button */
+  routeBack?: string | ReactNode;
   /** component to be displayed as header; required. */
   header: ReactNode;
   /** component to be displayed right aligned beneath the tabs; optional. */
@@ -43,14 +50,13 @@ export function TabNavigationToolbar(props: TabNavigationToolbarProps) {
           overflowY: "hidden",
         }}
       >
-        {props.routeBack !== undefined && (
-          <InternalLinkIconButton
+        {typeof props.routeBack === "string" ? (
+          <BackButton
+            component={InternalLinkIconButton}
             href={props.routeBack}
-            aria-label="Zurück"
-            sx={{ minWidth: "3.5rem" }}
-          >
-            <ChevronLeft sx={{ width: "40px", height: "40px" }} />
-          </InternalLinkIconButton>
+          />
+        ) : (
+          props.routeBack
         )}
         <Stack divider={<Divider />} sx={{ flexGrow: 1, minWidth: 0 }}>
           <Box sx={{ paddingInline: 3 }}>{props.header}</Box>
@@ -79,3 +85,11 @@ export function TabNavigationToolbar(props: TabNavigationToolbarProps) {
     </Sheet>
   );
 }
+
+export function BackButton<T extends ElementType>(props: IconButtonProps<T>) {
+  return (
+    <IconButton aria-label="Zurück" sx={{ minWidth: "3.5rem" }} {...props}>
+      <ChevronLeft sx={{ width: "40px", height: "40px" }} />
+    </IconButton>
+  );
+}
diff --git a/lib-portal/src/businessModules/schoolEntry/features/procedures/fieldVariants.tsx b/lib-portal/src/components/form/fieldVariants.tsx
similarity index 83%
rename from lib-portal/src/businessModules/schoolEntry/features/procedures/fieldVariants.tsx
rename to lib-portal/src/components/form/fieldVariants.tsx
index ac709ddc2..f0e65b5d6 100644
--- a/lib-portal/src/businessModules/schoolEntry/features/procedures/fieldVariants.tsx
+++ b/lib-portal/src/components/form/fieldVariants.tsx
@@ -11,26 +11,21 @@ import {
   Select,
   SelectProps,
 } from "@mui/joy";
+import { ReactNode } from "react";
 
-import { BaseField } from "../../../../components/formFields/BaseField";
+import { isEmptyString } from "../../helpers/guards";
+import { BaseField } from "../formFields/BaseField";
 import {
   BooleanSelectField,
   BooleanSelectFieldProps,
-} from "../../../../components/formFields/BooleanSelectField";
-import { HorizontalField } from "../../../../components/formFields/HorizontalField";
-import {
-  NumberField,
-  NumberFieldProps,
-} from "../../../../components/formFields/NumberField";
-import {
-  SelectField,
-  SelectFieldProps,
-} from "../../../../components/formFields/SelectField";
+} from "../formFields/BooleanSelectField";
+import { HorizontalField } from "../formFields/HorizontalField";
+import { NumberField, NumberFieldProps } from "../formFields/NumberField";
+import { SelectField, SelectFieldProps } from "../formFields/SelectField";
 import {
   SelectObjectField,
   SelectObjectFieldProps,
-} from "../../../../components/formFields/SelectObjectField";
-import { isEmptyString } from "../../../../helpers/guards";
+} from "../formFields/SelectObjectField";
 
 const SOFT_REQUIRED_INPUT_PROPS = {
   variant: "soft",
@@ -95,16 +90,19 @@ export function SoftRequiredInput(props: InputProps) {
   return <Input {...props} {...additionalProps} slotProps={slotProps} />;
 }
 
-export interface SoftRequiredSelectFieldProps<TMultiple extends boolean>
-  extends SoftRequiredFieldProps,
-    SelectFieldProps<TMultiple> {}
+export interface SoftRequiredSelectFieldProps<
+  TMultiple extends boolean,
+  TOptionLabel extends string | ReactNode = string,
+> extends SoftRequiredFieldProps,
+    SelectFieldProps<TMultiple, TOptionLabel> {}
 
-export function SoftRequiredSelectField<TMultiple extends boolean = false>(
-  props: SoftRequiredSelectFieldProps<TMultiple>,
-) {
+export function SoftRequiredSelectField<
+  TMultiple extends boolean = false,
+  TOptionLabel extends string | ReactNode = string,
+>(props: SoftRequiredSelectFieldProps<TMultiple, TOptionLabel>) {
   const { orientation, softRequired, ...fieldProps } = props;
   return (
-    <SelectField<TMultiple>
+    <SelectField<TMultiple, TOptionLabel>
       {...fieldProps}
       component={resolveFieldComponent(orientation)}
       select={softRequired ? SoftRequiredSelect : undefined}
diff --git a/lib-portal/src/components/formFields/MonthAndYearFields.tsx b/lib-portal/src/components/formFields/MonthAndYearFields.tsx
index 42271e536..f8bfff255 100644
--- a/lib-portal/src/components/formFields/MonthAndYearFields.tsx
+++ b/lib-portal/src/components/formFields/MonthAndYearFields.tsx
@@ -7,14 +7,14 @@ import { Stack } from "@mui/joy";
 import { ReactNode } from "react";
 import { isDefined } from "remeda";
 
-import {
-  SoftRequiredNumberField,
-  SoftRequiredSelectObjectField,
-} from "../../businessModules/schoolEntry/features/procedures/fieldVariants";
 import { toDateString, toUtcDate } from "../../helpers/dateTime";
 import { isEmptyString } from "../../helpers/guards";
 import { useMonthAndYearValidationsRules } from "../../hooks/useMonthAndYearValidations";
 import { OptionalFieldValue } from "../../types/form";
+import {
+  SoftRequiredNumberField,
+  SoftRequiredSelectObjectField,
+} from "../form/fieldVariants";
 
 import { HorizontalField } from "./HorizontalField";
 
diff --git a/lib-portal/src/components/formFields/SelectField.tsx b/lib-portal/src/components/formFields/SelectField.tsx
index ec77a9ea5..16e171312 100644
--- a/lib-portal/src/components/formFields/SelectField.tsx
+++ b/lib-portal/src/components/formFields/SelectField.tsx
@@ -63,7 +63,7 @@ export function SelectField<
   const FieldComponent = props.component ?? BaseField;
   const SelectComponent = props.select ?? Select;
   const field = useBaseField<SelectFieldValue<TMultiple>>(props);
-  const disabled = useIsFormDisabled();
+  const disabled = useIsFormDisabled() || props.disabled;
 
   const { enqueue } = usePromiseSequencer();
 
@@ -75,7 +75,7 @@ export function SelectField<
       error={field.error}
       className={props.className}
       sx={props.sx}
-      disabled={props.disabled}
+      disabled={disabled}
     >
       <SelectComponent
         name={props.name}
@@ -102,7 +102,7 @@ export function SelectField<
         }}
         multiple={props.multiple}
         placeholder={props.placeholder}
-        disabled={disabled || props.disabled}
+        disabled={disabled}
         renderValue={props.renderValue}
         color={props.primary ? "primary" : undefined}
       >
diff --git a/packages/base-api/build.gradle b/packages/base-api/build.gradle
index f0191f7b5..57784c078 100644
--- a/packages/base-api/build.gradle
+++ b/packages/base-api/build.gradle
@@ -5,5 +5,5 @@ plugins {
 def backendDir = rootProject.layout.projectDirectory.dir('backend')
 
 apiPackage {
-  inputSpec = backendDir.file('base/openApi.yaml')
+  inputSpec = backendDir.file('base/openApi.json')
 }
diff --git a/packages/dental-api/build.gradle b/packages/dental-api/build.gradle
index 0af166489..6acb54b4f 100644
--- a/packages/dental-api/build.gradle
+++ b/packages/dental-api/build.gradle
@@ -5,5 +5,5 @@ plugins {
 def backendDir = rootProject.layout.projectDirectory.dir('backend')
 
 apiPackage {
-  inputSpec = backendDir.file('dental/openApi.yaml')
+  inputSpec = backendDir.file('dental/openApi.json')
 }
diff --git a/packages/dental/src/api/models/ChildExamination.ts b/packages/dental/src/api/models/ChildExamination.ts
index 53e76f9fe..ac886ed99 100644
--- a/packages/dental/src/api/models/ChildExamination.ts
+++ b/packages/dental/src/api/models/ChildExamination.ts
@@ -9,10 +9,7 @@ import {
 } from "@eshg/dental-api";
 import { mapOptional } from "@eshg/lib-employee-portal/api/models/utils";
 
-import {
-  ChildExaminationResult,
-  mapChildExaminationResult,
-} from "./ChildExaminationResult";
+import { ExaminationResult, mapExaminationResult } from "./ExaminationResult";
 import { ExaminationStatus, mapToExaminationStatus } from "./ExaminationStatus";
 
 export interface ChildExamination {
@@ -22,20 +19,25 @@ export interface ChildExamination {
   readonly dateOfBirth: Date;
   readonly groupName: string;
   readonly gender?: ApiGender;
-  readonly fluoridationConsent?: boolean;
-  readonly examinationResult?: ChildExaminationResult;
+  readonly fluoridationConsentGiven?: boolean;
   readonly status: ExaminationStatus;
+  readonly result?: ExaminationResult;
+  readonly note?: string;
 }
 
 export function mapChildExamination(
   response: ApiProphylaxisSessionChildExamination,
 ): ChildExamination {
   return {
-    ...response,
-    status: mapToExaminationStatus(response.examinationResult),
-    examinationResult: mapOptional(
-      response.examinationResult,
-      mapChildExaminationResult,
-    ),
+    childId: response.childId,
+    firstName: response.firstName,
+    lastName: response.lastName,
+    dateOfBirth: response.dateOfBirth,
+    groupName: response.groupName,
+    gender: response.gender,
+    fluoridationConsentGiven: response.fluoridationConsentGiven,
+    status: mapToExaminationStatus(response.result),
+    result: mapOptional(response.result, mapExaminationResult),
+    note: response.note,
   };
 }
diff --git a/packages/dental/src/api/models/Examination.ts b/packages/dental/src/api/models/Examination.ts
index 8905154ce..851155235 100644
--- a/packages/dental/src/api/models/Examination.ts
+++ b/packages/dental/src/api/models/Examination.ts
@@ -3,13 +3,11 @@
  * SPDX-License-Identifier: AGPL-3.0-only
  */
 
-import {
-  ApiDentalExaminationResult,
-  ApiExamination,
-  ApiProphylaxisType,
-} from "@eshg/dental-api";
+import { ApiExamination, ApiProphylaxisType } from "@eshg/dental-api";
 import { BaseEntity } from "@eshg/lib-employee-portal/api/models/BaseEntity";
+import { mapOptional } from "@eshg/lib-employee-portal/api/models/utils";
 
+import { ExaminationResult, mapExaminationResult } from "./ExaminationResult";
 import { ExaminationStatus, mapToExaminationStatus } from "./ExaminationStatus";
 
 export interface Examination extends BaseEntity {
@@ -17,8 +15,9 @@ export interface Examination extends BaseEntity {
   readonly prophylaxisType: ApiProphylaxisType;
   readonly screening: boolean;
   readonly fluoridation: boolean;
+  readonly fluoridationConsentGiven: boolean;
   readonly note?: string;
-  readonly result?: ApiDentalExaminationResult;
+  readonly result?: ExaminationResult;
   readonly version: number;
   readonly status: ExaminationStatus;
 }
@@ -28,10 +27,11 @@ export function mapExamination(response: ApiExamination): Examination {
     ...response,
     dateAndTime: response.dateAndTime,
     prophylaxisType: response.prophylaxisType,
-    screening: response.screening,
-    fluoridation: response.fluoridation,
+    screening: response.isScreening,
+    fluoridation: response.isFluoridation,
+    fluoridationConsentGiven: response.fluoridationConsentGiven,
     note: response.note,
-    result: response.result,
+    result: mapOptional(response.result, mapExaminationResult),
     status: mapToExaminationStatus(response.result),
   };
 }
diff --git a/packages/dental/src/api/models/ChildExaminationResult.ts b/packages/dental/src/api/models/ExaminationResult.ts
similarity index 79%
rename from packages/dental/src/api/models/ChildExaminationResult.ts
rename to packages/dental/src/api/models/ExaminationResult.ts
index 6a5405513..a93a629a4 100644
--- a/packages/dental/src/api/models/ChildExaminationResult.ts
+++ b/packages/dental/src/api/models/ExaminationResult.ts
@@ -12,27 +12,30 @@ import {
   ApiScreeningExaminationResult,
 } from "@eshg/dental-api";
 
-export type ChildExaminationResult =
+export type ExaminationResult =
   | FluoridationExaminationResult
   | ScreeningExaminationResult
   | AbsenceExaminationResult;
 
 export interface FluoridationExaminationResult {
+  readonly type: "fluoridation";
   readonly fluorideVarnishApplied: boolean;
 }
 
-export interface ScreeningExaminationResult
-  extends FluoridationExaminationResult {
+export interface ScreeningExaminationResult {
+  readonly type: "screening";
   readonly oralHygieneStatus?: ApiOralHygieneStatus;
+  readonly fluorideVarnishApplied: boolean;
 }
 
 export interface AbsenceExaminationResult {
+  readonly type: "absence";
   readonly reasonForAbsence?: ApiReasonForAbsence;
 }
 
-export function mapChildExaminationResult(
+export function mapExaminationResult(
   response: ApiExaminationResult,
-): ChildExaminationResult {
+): ExaminationResult {
   switch (response.type) {
     case "FluoridationExaminationResult":
       return mapFluoridationExaminationResult(response);
@@ -47,6 +50,7 @@ function mapFluoridationExaminationResult(
   response: ApiFluoridationExaminationResult,
 ): FluoridationExaminationResult {
   return {
+    type: "fluoridation",
     fluorideVarnishApplied: response.fluorideVarnishApplied,
   };
 }
@@ -55,8 +59,9 @@ function mapScreeningExaminationResult(
   response: ApiScreeningExaminationResult,
 ): ScreeningExaminationResult {
   return {
-    ...mapFluoridationExaminationResult(response),
+    type: "screening",
     oralHygieneStatus: response.oralHygieneStatus,
+    fluorideVarnishApplied: response.fluorideVarnishApplied,
   };
 }
 
@@ -64,6 +69,7 @@ function mapAbsenceExaminationResult(
   response: ApiAbsenceExaminationResult,
 ): AbsenceExaminationResult {
   return {
+    type: "absence",
     reasonForAbsence: response.reasonForAbsence,
   };
 }
diff --git a/packages/dental/src/api/models/ProphylaxisSession.ts b/packages/dental/src/api/models/ProphylaxisSession.ts
index a232a6970..5ec27547b 100644
--- a/packages/dental/src/api/models/ProphylaxisSession.ts
+++ b/packages/dental/src/api/models/ProphylaxisSession.ts
@@ -20,7 +20,7 @@ export interface ProphylaxisSession extends BaseEntity {
   institution: Institution;
   groupName: string;
   type: ApiProphylaxisType;
-  screening: boolean;
+  isScreening: boolean;
   fluoridationVarnish?: ApiFluoridationVarnish;
 }
 
@@ -33,7 +33,7 @@ export function mapProphylaxisSession(
     institution: mapInstitution(response.institution),
     groupName: response.groupName,
     type: response.type,
-    screening: response.screening,
+    isScreening: response.isScreening,
     fluoridationVarnish: response.fluoridationVarnish,
   };
 }
diff --git a/packages/dental/src/api/mutations/prophylaxisSessionApi.ts b/packages/dental/src/api/mutations/prophylaxisSessionApi.ts
index 1d0a2e343..67261f4f6 100644
--- a/packages/dental/src/api/mutations/prophylaxisSessionApi.ts
+++ b/packages/dental/src/api/mutations/prophylaxisSessionApi.ts
@@ -10,8 +10,9 @@ import {
 } from "@eshg/dental-api";
 import { useHandledMutation } from "@eshg/lib-portal/api/useHandledMutation";
 import { useSnackbar } from "@eshg/lib-portal/components/snackbar/SnackbarProvider";
-import { useQueryClient } from "@tanstack/react-query";
+import { MutationOptions, useQueryClient } from "@tanstack/react-query";
 
+import { ChildExamination } from "@/api/models/ChildExamination";
 import { getProphylaxisSessionQuery } from "@/api/queries/prophylaxisSessionApi";
 import { useDentalApi } from "@/shared/DentalProvider";
 
@@ -27,6 +28,36 @@ export function useCreateProphylaxisSession() {
   });
 }
 
+export function useDeleteProphylaxisSessionParticipantOptions(
+  prophylaxisSessionId: string,
+  prophylaxisSessionVersion: number,
+  allParticipants: ChildExamination[],
+): MutationOptions<ApiProphylaxisSessionDetails, Error, string> {
+  const { prophylaxisSessionApi } = useDentalApi();
+  const queryClient = useQueryClient();
+  const { queryKey } = getProphylaxisSessionQuery(prophylaxisSessionApi, {
+    prophylaxisSessionId,
+  });
+  const snackbar = useSnackbar();
+  return {
+    meta: { updatesQuery: queryKey },
+    mutationFn: (childExternalId: string) =>
+      prophylaxisSessionApi.updateProphylaxisSessionParticipants(
+        prophylaxisSessionId,
+        {
+          version: prophylaxisSessionVersion,
+          participants: allParticipants
+            .map((childExamination) => childExamination.childId)
+            .filter((id) => id !== childExternalId),
+        },
+      ),
+    onSuccess: (response: ApiProphylaxisSessionDetails) => {
+      snackbar.confirmation("Kind erfolgreich entfernt.");
+      queryClient.setQueryData(queryKey, response);
+    },
+  };
+}
+
 export function useUpdateProphylaxisSessionParticipants(
   prophylaxisSessionId: string,
 ) {
diff --git a/packages/measles-protection-api/build.gradle b/packages/measles-protection-api/build.gradle
index 44e6a899b..e67f2c1de 100644
--- a/packages/measles-protection-api/build.gradle
+++ b/packages/measles-protection-api/build.gradle
@@ -5,5 +5,5 @@ plugins {
 def backendDir = rootProject.layout.projectDirectory.dir('backend')
 
 apiPackage {
-  inputSpec = backendDir.file('measles-protection/openApi.yaml')
+  inputSpec = backendDir.file('measles-protection/openApi.json')
 }
diff --git a/packages/school-entry-api/build.gradle b/packages/school-entry-api/build.gradle
index dd4d45ea2..2ffeb60ca 100644
--- a/packages/school-entry-api/build.gradle
+++ b/packages/school-entry-api/build.gradle
@@ -5,5 +5,5 @@ plugins {
 def backendDir = rootProject.layout.projectDirectory.dir('backend')
 
 apiPackage {
-  inputSpec = backendDir.file('school-entry/openApi.yaml')
+  inputSpec = backendDir.file('school-entry/openApi.json')
 }
diff --git a/packages/service-directory-api/.gitignore b/packages/service-directory-api/.gitignore
new file mode 100644
index 000000000..0edb02e46
--- /dev/null
+++ b/packages/service-directory-api/.gitignore
@@ -0,0 +1,2 @@
+# Generated files
+src
diff --git a/packages/service-directory-api/build.gradle b/packages/service-directory-api/build.gradle
new file mode 100644
index 000000000..b2d1d4bf4
--- /dev/null
+++ b/packages/service-directory-api/build.gradle
@@ -0,0 +1,9 @@
+plugins {
+  id 'api-package'
+}
+
+def backendDir = rootProject.layout.projectDirectory.dir('backend')
+
+apiPackage {
+  inputSpec = backendDir.file('service-directory/openApi.json')
+}
diff --git a/admin-portal-api/buildscript-gradle.lockfile b/packages/service-directory-api/buildscript-gradle.lockfile
similarity index 100%
rename from admin-portal-api/buildscript-gradle.lockfile
rename to packages/service-directory-api/buildscript-gradle.lockfile
diff --git a/packages/service-directory-api/package.json b/packages/service-directory-api/package.json
new file mode 100644
index 000000000..6900809cb
--- /dev/null
+++ b/packages/service-directory-api/package.json
@@ -0,0 +1,10 @@
+{
+  "name": "@eshg/service-directory-api",
+  "version": "0.0.1",
+  "type": "module",
+  "private": true,
+  "exports": {
+    "types": "./build/types/src/index.d.ts",
+    "import": "./build/lib/index.js"
+  }
+}
diff --git a/packages/service-directory-api/tsconfig.json b/packages/service-directory-api/tsconfig.json
new file mode 100644
index 000000000..7fcfda752
--- /dev/null
+++ b/packages/service-directory-api/tsconfig.json
@@ -0,0 +1,3 @@
+{
+  "extends": "../../config/tsconfig.lib.json"
+}
diff --git a/packages/service-directory-api/tsup.config.ts b/packages/service-directory-api/tsup.config.ts
new file mode 100644
index 000000000..5b8cbfe04
--- /dev/null
+++ b/packages/service-directory-api/tsup.config.ts
@@ -0,0 +1,8 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { defineApiConfig } from "../../config/tsup.base";
+
+export default defineApiConfig;
diff --git a/packages/statistics-api/build.gradle b/packages/statistics-api/build.gradle
index aa00df207..4de76c60d 100644
--- a/packages/statistics-api/build.gradle
+++ b/packages/statistics-api/build.gradle
@@ -5,5 +5,5 @@ plugins {
 def backendDir = rootProject.layout.projectDirectory.dir('backend')
 
 apiPackage {
-  inputSpec = backendDir.file('statistics/openApi.yaml')
+  inputSpec = backendDir.file('statistics/openApi.json')
 }
diff --git a/packages/travel-medicine-api/.gitignore b/packages/travel-medicine-api/.gitignore
new file mode 100644
index 000000000..0edb02e46
--- /dev/null
+++ b/packages/travel-medicine-api/.gitignore
@@ -0,0 +1,2 @@
+# Generated files
+src
diff --git a/packages/travel-medicine-api/build.gradle b/packages/travel-medicine-api/build.gradle
new file mode 100644
index 000000000..3f9ee7f6d
--- /dev/null
+++ b/packages/travel-medicine-api/build.gradle
@@ -0,0 +1,9 @@
+plugins {
+  id 'api-package'
+}
+
+def backendDir = rootProject.layout.projectDirectory.dir('backend')
+
+apiPackage {
+  inputSpec = backendDir.file('travel-medicine/openApi.json')
+}
diff --git a/packages/travel-medicine-api/buildscript-gradle.lockfile b/packages/travel-medicine-api/buildscript-gradle.lockfile
new file mode 100644
index 000000000..0d156738b
--- /dev/null
+++ b/packages/travel-medicine-api/buildscript-gradle.lockfile
@@ -0,0 +1,4 @@
+# This is a Gradle generated file for dependency locking.
+# Manual edits can break the build and are not advised.
+# This file is expected to be part of source control.
+empty=classpath
diff --git a/packages/travel-medicine-api/package.json b/packages/travel-medicine-api/package.json
new file mode 100644
index 000000000..cd0ef2938
--- /dev/null
+++ b/packages/travel-medicine-api/package.json
@@ -0,0 +1,10 @@
+{
+  "name": "@eshg/travel-medicine-api",
+  "version": "0.0.1",
+  "type": "module",
+  "private": true,
+  "exports": {
+    "types": "./build/types/src/index.d.ts",
+    "import": "./build/lib/index.js"
+  }
+}
diff --git a/packages/travel-medicine-api/tsconfig.json b/packages/travel-medicine-api/tsconfig.json
new file mode 100644
index 000000000..7fcfda752
--- /dev/null
+++ b/packages/travel-medicine-api/tsconfig.json
@@ -0,0 +1,3 @@
+{
+  "extends": "../../config/tsconfig.lib.json"
+}
diff --git a/packages/travel-medicine-api/tsup.config.ts b/packages/travel-medicine-api/tsup.config.ts
new file mode 100644
index 000000000..5b8cbfe04
--- /dev/null
+++ b/packages/travel-medicine-api/tsup.config.ts
@@ -0,0 +1,8 @@
+/**
+ * Copyright 2025 cronn GmbH
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { defineApiConfig } from "../../config/tsup.base";
+
+export default defineApiConfig;
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 23a1eb850..fc22e853f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -240,7 +240,7 @@ importers:
         version: 4.1.4(@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0)
       next:
         specifier: catalog:next
-        version: 14.2.14(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        version: 14.2.14(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       prettier:
         specifier: catalog:prettier
         version: 3.4.2
@@ -268,12 +268,12 @@ importers:
       '@emotion/styled':
         specifier: catalog:joy
         version: 11.14.0(@emotion/react@11.14.0(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1)
-      '@eshg/admin-portal-api':
-        specifier: workspace:*
-        version: link:../admin-portal-api
       '@eshg/lib-portal':
         specifier: workspace:*
         version: link:../lib-portal
+      '@eshg/service-directory-api':
+        specifier: workspace:*
+        version: link:../packages/service-directory-api
       '@fontsource/poppins':
         specifier: catalog:joy
         version: 5.1.1
@@ -370,7 +370,7 @@ importers:
         version: 9.1.0(eslint@9.18.0)
       eslint-plugin-import:
         specifier: catalog:eslint
-        version: 2.31.0(@typescript-eslint/parser@8.10.0(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0)
+        version: 2.31.0(@typescript-eslint/parser@8.10.0(eslint@9.18.0)(typescript@5.7.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.18.0)
       eslint-plugin-promise:
         specifier: catalog:eslint
         version: 7.2.1(eslint@9.18.0)
@@ -390,8 +390,6 @@ importers:
         specifier: catalog:vitest
         version: 2.1.8(@types/node@22.10.5)(terser@5.36.0)
 
-  admin-portal-api: {}
-
   citizen-portal:
     dependencies:
       '@emotion/react':
@@ -415,6 +413,9 @@ importers:
       '@eshg/school-entry-api':
         specifier: workspace:*
         version: link:../packages/school-entry-api
+      '@eshg/travel-medicine-api':
+        specifier: workspace:*
+        version: link:../packages/travel-medicine-api
       '@fontsource/poppins':
         specifier: catalog:joy
         version: 5.1.1
@@ -465,7 +466,7 @@ importers:
         version: 1.0.0
       next:
         specifier: catalog:next
-        version: 14.2.14(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        version: 14.2.14(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react:
         specifier: catalog:react
         version: 18.3.1
@@ -562,9 +563,6 @@ importers:
       '@axe-core/playwright':
         specifier: 4.10.1
         version: 4.10.1(playwright-core@1.49.1)
-      '@eshg/admin-portal-api':
-        specifier: workspace:*
-        version: link:../admin-portal-api
       '@eshg/base-api':
         specifier: workspace:*
         version: link:../packages/base-api
@@ -586,9 +584,15 @@ importers:
       '@eshg/school-entry-api':
         specifier: workspace:*
         version: link:../packages/school-entry-api
+      '@eshg/service-directory-api':
+        specifier: workspace:*
+        version: link:../packages/service-directory-api
       '@eshg/statistics-api':
         specifier: workspace:*
         version: link:../packages/statistics-api
+      '@eshg/travel-medicine-api':
+        specifier: workspace:*
+        version: link:../packages/travel-medicine-api
       '@eslint/compat':
         specifier: catalog:eslint
         version: 1.2.5(eslint@9.18.0)
@@ -659,7 +663,7 @@ importers:
     dependencies:
       '@ducanh2912/next-pwa':
         specifier: 10.2.9
-        version: 10.2.9(@types/babel__core@7.20.5)(next@14.2.14(@babel/core@7.25.8)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(webpack@5.92.1)
+        version: 10.2.9(@types/babel__core@7.20.5)(next@14.2.14(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(webpack@5.92.1)
       '@emotion/react':
         specifier: catalog:joy
         version: 11.14.0(@types/react@18.3.12)(react@18.3.1)
@@ -693,6 +697,9 @@ importers:
       '@eshg/statistics-api':
         specifier: workspace:*
         version: link:../packages/statistics-api
+      '@eshg/travel-medicine-api':
+        specifier: workspace:*
+        version: link:../packages/travel-medicine-api
       '@fontsource/poppins':
         specifier: catalog:joy
         version: 5.1.1
@@ -767,7 +774,7 @@ importers:
         version: 34.13.0
       next:
         specifier: catalog:next
-        version: 14.2.14(@babel/core@7.25.8)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        version: 14.2.14(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react:
         specifier: catalog:react
         version: 18.3.1
@@ -905,7 +912,7 @@ importers:
         version: 2.4.6(react@18.3.1)
       next:
         specifier: catalog:next
-        version: 14.2.14(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        version: 14.2.14(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react:
         specifier: catalog:react
         version: 18.3.1
@@ -1010,7 +1017,7 @@ importers:
         version: 2.4.6(react@18.3.1)
       next:
         specifier: catalog:next
-        version: 14.2.14(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        version: 14.2.14(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react:
         specifier: catalog:react
         version: 18.3.1
@@ -1112,7 +1119,7 @@ importers:
         version: 2.4.6(react@18.3.1)
       next:
         specifier: catalog:next
-        version: 14.2.14(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        version: 14.2.14(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       react:
         specifier: catalog:react
         version: 18.3.1
@@ -1191,8 +1198,12 @@ importers:
 
   packages/school-entry-api: {}
 
+  packages/service-directory-api: {}
+
   packages/statistics-api: {}
 
+  packages/travel-medicine-api: {}
+
   performance-test:
     dependencies:
       '@eshg/base-api':
@@ -1213,6 +1224,9 @@ importers:
       '@eshg/statistics-api':
         specifier: workspace:*
         version: link:../packages/statistics-api
+      '@eshg/travel-medicine-api':
+        specifier: workspace:*
+        version: link:../packages/travel-medicine-api
       '@faker-js/faker':
         specifier: 9.3.0
         version: 9.3.0
@@ -9993,10 +10007,10 @@ snapshots:
 
   '@drauu/core@0.4.2': {}
 
-  '@ducanh2912/next-pwa@10.2.9(@types/babel__core@7.20.5)(next@14.2.14(@babel/core@7.25.8)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(webpack@5.92.1)':
+  '@ducanh2912/next-pwa@10.2.9(@types/babel__core@7.20.5)(next@14.2.14(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(webpack@5.92.1)':
     dependencies:
       fast-glob: 3.3.2
-      next: 14.2.14(@babel/core@7.25.8)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      next: 14.2.14(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       semver: 7.6.3
       webpack: 5.92.1
       workbox-build: 7.1.1(@types/babel__core@7.20.5)
@@ -13275,7 +13289,7 @@ snapshots:
       is-bun-module: 1.1.0
       is-glob: 4.0.3
     optionalDependencies:
-      eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.10.0(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0)
+      eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.10.0(eslint@9.18.0)(typescript@5.7.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.18.0)
     transitivePeerDependencies:
       - '@typescript-eslint/parser'
       - eslint-import-resolver-node
@@ -13293,16 +13307,6 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  eslint-module-utils@2.12.0(@typescript-eslint/parser@8.10.0(eslint@9.18.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.18.0):
-    dependencies:
-      debug: 3.2.7
-    optionalDependencies:
-      '@typescript-eslint/parser': 8.10.0(eslint@9.18.0)(typescript@5.7.3)
-      eslint: 9.18.0
-      eslint-import-resolver-node: 0.3.9
-    transitivePeerDependencies:
-      - supports-color
-
   eslint-module-utils@2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.18.0):
     dependencies:
       debug: 3.2.7
@@ -13342,35 +13346,6 @@ snapshots:
       - eslint-import-resolver-webpack
       - supports-color
 
-  eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.10.0(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0):
-    dependencies:
-      '@rtsao/scc': 1.1.0
-      array-includes: 3.1.8
-      array.prototype.findlastindex: 1.2.5
-      array.prototype.flat: 1.3.2
-      array.prototype.flatmap: 1.3.2
-      debug: 3.2.7
-      doctrine: 2.1.0
-      eslint: 9.18.0
-      eslint-import-resolver-node: 0.3.9
-      eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.10.0(eslint@9.18.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.18.0)
-      hasown: 2.0.2
-      is-core-module: 2.15.1
-      is-glob: 4.0.3
-      minimatch: 3.1.2
-      object.fromentries: 2.0.8
-      object.groupby: 1.0.3
-      object.values: 1.2.0
-      semver: 6.3.1
-      string.prototype.trimend: 1.0.8
-      tsconfig-paths: 3.15.0
-    optionalDependencies:
-      '@typescript-eslint/parser': 8.10.0(eslint@9.18.0)(typescript@5.7.3)
-    transitivePeerDependencies:
-      - eslint-import-resolver-typescript
-      - eslint-import-resolver-webpack
-      - supports-color
-
   eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0):
     dependencies:
       '@rtsao/scc': 1.1.0
@@ -15153,32 +15128,6 @@ snapshots:
 
   netmask@2.0.2: {}
 
-  next@14.2.14(@babel/core@7.25.8)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
-    dependencies:
-      '@next/env': 14.2.14
-      '@swc/helpers': 0.5.5
-      busboy: 1.6.0
-      caniuse-lite: 1.0.30001668
-      graceful-fs: 4.2.11
-      postcss: 8.4.31
-      react: 18.3.1
-      react-dom: 18.3.1(react@18.3.1)
-      styled-jsx: 5.1.1(@babel/core@7.25.8)(react@18.3.1)
-    optionalDependencies:
-      '@next/swc-darwin-arm64': 14.2.14
-      '@next/swc-darwin-x64': 14.2.14
-      '@next/swc-linux-arm64-gnu': 14.2.14
-      '@next/swc-linux-arm64-musl': 14.2.14
-      '@next/swc-linux-x64-gnu': 14.2.14
-      '@next/swc-linux-x64-musl': 14.2.14
-      '@next/swc-win32-arm64-msvc': 14.2.14
-      '@next/swc-win32-ia32-msvc': 14.2.14
-      '@next/swc-win32-x64-msvc': 14.2.14
-      '@playwright/test': 1.49.1
-    transitivePeerDependencies:
-      - '@babel/core'
-      - babel-plugin-macros
-
   next@14.2.14(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
       '@next/env': 14.2.14
@@ -15205,32 +15154,6 @@ snapshots:
       - '@babel/core'
       - babel-plugin-macros
 
-  next@14.2.14(@playwright/test@1.49.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
-    dependencies:
-      '@next/env': 14.2.14
-      '@swc/helpers': 0.5.5
-      busboy: 1.6.0
-      caniuse-lite: 1.0.30001668
-      graceful-fs: 4.2.11
-      postcss: 8.4.31
-      react: 18.3.1
-      react-dom: 18.3.1(react@18.3.1)
-      styled-jsx: 5.1.1(react@18.3.1)
-    optionalDependencies:
-      '@next/swc-darwin-arm64': 14.2.14
-      '@next/swc-darwin-x64': 14.2.14
-      '@next/swc-linux-arm64-gnu': 14.2.14
-      '@next/swc-linux-arm64-musl': 14.2.14
-      '@next/swc-linux-x64-gnu': 14.2.14
-      '@next/swc-linux-x64-musl': 14.2.14
-      '@next/swc-win32-arm64-msvc': 14.2.14
-      '@next/swc-win32-ia32-msvc': 14.2.14
-      '@next/swc-win32-x64-msvc': 14.2.14
-      '@playwright/test': 1.49.1
-    transitivePeerDependencies:
-      - '@babel/core'
-      - babel-plugin-macros
-
   node-abi@3.65.0:
     dependencies:
       semver: 7.6.3
@@ -16562,13 +16485,6 @@ snapshots:
     dependencies:
       inline-style-parser: 0.2.4
 
-  styled-jsx@5.1.1(@babel/core@7.25.8)(react@18.3.1):
-    dependencies:
-      client-only: 0.0.1
-      react: 18.3.1
-    optionalDependencies:
-      '@babel/core': 7.25.8
-
   styled-jsx@5.1.1(@babel/core@7.26.0)(react@18.3.1):
     dependencies:
       client-only: 0.0.1
@@ -16576,11 +16492,6 @@ snapshots:
     optionalDependencies:
       '@babel/core': 7.26.0
 
-  styled-jsx@5.1.1(react@18.3.1):
-    dependencies:
-      client-only: 0.0.1
-      react: 18.3.1
-
   stylis@4.2.0: {}
 
   sucrase@3.35.0:
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 097be3666..b7f933c5c 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -7,7 +7,6 @@ packages:
   - "citizen-portal"
   - "citizen-portal-api"
   - "admin-portal"
-  - "admin-portal-api"
   - "e2e"
   - "e2e-api"
   - "lib-portal"
diff --git a/reverse-proxy/citizen-portal.conf b/reverse-proxy/citizen-portal.conf
index 2e32986c6..84cf08732 100644
--- a/reverse-proxy/citizen-portal.conf
+++ b/reverse-proxy/citizen-portal.conf
@@ -46,6 +46,11 @@ server {
         proxy_pass http://host.docker.internal:8080/;
     }
 
+    location /api/inspection/gdpr-validation-tasks/ {
+        include auth_api_request.conf;
+        proxy_pass http://host.docker.internal:8081/gdpr-validation-tasks/;
+    }
+
     # No authorization required for public citizen api
     location /api/school-entry/citizen/public/ {
         proxy_pass http://host.docker.internal:8082/citizen/public/;
@@ -56,11 +61,21 @@ server {
         proxy_pass http://host.docker.internal:8082/citizen/auth/;
     }
 
+    location /api/school-entry/gdpr-validation-tasks/ {
+        include auth_api_request.conf;
+        proxy_pass http://host.docker.internal:8082/gdpr-validation-tasks/;
+    }
+
     # No authorization required for the MeaslesProtectionAPI
     location /api/measles-protection/organisations/ {
         proxy_pass http://host.docker.internal:8086/organisations/;
     }
 
+    location /api/measles-protection/gdpr-validation-tasks/ {
+        include auth_api_request.conf;
+        proxy_pass http://host.docker.internal:8086/gdpr-validation-tasks/;
+    }
+
     # No authorization required for the CitizenPublicController
     location /api/travel-medicine/citizen/public/ {
         proxy_pass http://host.docker.internal:8085/citizen/public/;
@@ -71,6 +86,16 @@ server {
         proxy_pass http://host.docker.internal:8085/citizen/auth/;
     }
 
+    location /api/travel-medicine/gdpr-validation-tasks/ {
+        include auth_api_request.conf;
+        proxy_pass http://host.docker.internal:8085/gdpr-validation-tasks/;
+    }
+
+    location /api/sti-protection/gdpr-validation-tasks/ {
+        include auth_api_request.conf;
+        proxy_pass http://host.docker.internal:8095/gdpr-validation-tasks/;
+    }
+
     # No authorization required for public api
     location /api/medical-registry/medical-registry-entries/public {
         proxy_pass http://host.docker.internal:8097/medical-registry-entries/public;
@@ -80,11 +105,21 @@ server {
         proxy_pass http://host.docker.internal:8097/public;
     }
 
+    location /api/medical-registry/gdpr-validation-tasks/ {
+        include auth_api_request.conf;
+        proxy_pass http://host.docker.internal:8097/gdpr-validation-tasks/;
+    }
+
     # No authorization required for public api
     location /api/opendata/citizen/public {
         proxy_pass http://host.docker.internal:8096/citizen/public;
     }
 
+    location /api/dental/gdpr-validation-tasks/ {
+        include auth_api_request.conf;
+        proxy_pass http://host.docker.internal:8098/gdpr-validation-tasks/;
+    }
+
     # No authorization required for the CitizenPublicController
     location /api/official-medical-service/citizen-public/ {
         proxy_pass http://host.docker.internal:8099/citizen-public/;
@@ -95,6 +130,11 @@ server {
         proxy_pass http://host.docker.internal:8099/citizen-auth/;
     }
 
+    location /api/official-medical-service/gdpr-validation-tasks/ {
+        include auth_api_request.conf;
+        proxy_pass http://host.docker.internal:8099/gdpr-validation-tasks/;
+    }
+
     # No authorization required for the base feature toggles endpoint
     location = /api/base/feature-toggles {
         proxy_pass http://host.docker.internal:8080/feature-toggles;
diff --git a/settings.gradle b/settings.gradle
index 9181bb705..750d6046d 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -7,7 +7,6 @@ include 'employee-portal-api'
 include 'citizen-portal'
 include 'citizen-portal-api'
 include 'admin-portal'
-include 'admin-portal-api'
 include 'e2e'
 include 'e2e-api'
 include 'lib-portal'
-- 
GitLab