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