From 2d03dca35e88287a9c0426671693cc7768688929 Mon Sep 17 00:00:00 2001 From: yunusakin Date: Tue, 24 Feb 2026 01:02:27 +0300 Subject: [PATCH] feat: activate forms submit endpoint and add Postman scenarios --- .gitignore | 11 + .idea/.gitignore | 3 - .idea/compiler.xml | 18 - .idea/easycode.ignore | 13 - .idea/easycode/codebase-v2.xml | 6 - .idea/encodings.xml | 6 - .idea/jarRepositories.xml | 20 - .idea/misc.xml | 12 - .idea/vcs.xml | 6 - postman/dynapi.postman_collection.json | 1029 +++++++++++++++++ .../dynapi.postman_environment.template.json | 49 + .../config/QueryGuardrailProperties.java | 16 + .../rest/FormSubmissionController.java | 20 +- .../repository/FieldGroupRepository.java | 3 + .../dynapi/service/DynamicQueryService.java | 363 +++++- src/main/resources/application.yml | 7 + .../FormControllerIntegrationTest.java | 23 + .../service/DynamicQueryServiceTest.java | 218 ++++ src/test/resources/application-test.yml | 7 + target/classes/application.properties | 2 - target/classes/application.yml | 39 - .../com/dynapi/DynapiApplication.class | Bin 727 -> 0 bytes .../application/port/AuditPublisher.class | Bin 281 -> 0 bytes .../port/FormSubmissionPersistencePort.class | Bin 271 -> 0 bytes .../port/input/SubmitFormUseCase.class | Bin 410 -> 0 bytes .../FormSubmissionPersistencePort.class | Bin 278 -> 0 bytes .../query/DynamicQueryService.class | Bin 499 -> 0 bytes .../service/DynamicValidatorImpl.class | Bin 3429 -> 0 bytes .../FormSubmissionApplicationService.class | Bin 4387 -> 0 bytes .../classes/com/dynapi/audit/AuditEvent.class | Bin 1454 -> 0 bytes .../audit/AuditEventListener$AuditLog.class | Bin 811 -> 0 bytes .../com/dynapi/audit/AuditEventListener.class | Bin 1800 -> 0 bytes .../com/dynapi/audit/AuditPublisher.class | Bin 1312 -> 0 bytes .../com/dynapi/config/OpenApiConfig.class | Bin 1028 -> 0 bytes .../dynapi/controller/FormController.class | Bin 1538 -> 0 bytes .../dynapi/controller/QueryController.class | Bin 1820 -> 0 bytes .../controller/SchemaAdminController.class | Bin 4459 -> 0 bytes .../dynapi/domain/event/AuditPublisher.class | Bin 386 -> 0 bytes .../com/dynapi/domain/event/DomainEvent.class | Bin 5077 -> 0 bytes .../exception/EntityNotFoundException.class | Bin 454 -> 0 bytes .../exception/ValidationException.class | Bin 628 -> 0 bytes .../model/DynamicQuery$QueryFilter.class | Bin 4173 -> 0 bytes .../dynapi/domain/model/DynamicQuery.class | Bin 3915 -> 0 bytes .../FieldDefinition$RequiredIfRule.class | Bin 3060 -> 0 bytes .../dynapi/domain/model/FieldDefinition.class | Bin 7755 -> 0 bytes .../com/dynapi/domain/model/FieldGroup.class | Bin 4116 -> 0 bytes .../dynapi/domain/model/FieldPermission.class | Bin 4749 -> 0 bytes .../com/dynapi/domain/model/FieldType.class | Bin 1361 -> 0 bytes .../dynapi/domain/model/FormSubmission.class | Bin 1231 -> 0 bytes .../dynapi/domain/model/SchemaVersion.class | Bin 7041 -> 0 bytes .../FieldDefinitionRepository.class | Bin 901 -> 0 bytes .../repository/FieldGroupRepository.class | Bin 682 -> 0 bytes .../repository/FormSubmissionRepository.class | Bin 893 -> 0 bytes .../domain/service/DynamicValidator.class | Bin 383 -> 0 bytes .../service/FieldPermissionService.class | Bin 1198 -> 0 bytes .../service/FormSubmissionDomainService.class | Bin 753 -> 0 bytes .../FormSubmissionDomainServiceImpl.class | Bin 2001 -> 0 bytes .../domain/service/SchemaVersionService.class | Bin 1106 -> 0 bytes .../impl/FieldPermissionServiceImpl.class | Bin 6435 -> 0 bytes .../impl/SchemaVersionServiceImpl.class | Bin 5933 -> 0 bytes .../validation/DynamicValidator$1.class | Bin 962 -> 0 bytes .../domain/validation/DynamicValidator.class | Bin 11456 -> 0 bytes .../com/dynapi/dto/ApiResponse$Metadata.class | Bin 2445 -> 0 bytes .../classes/com/dynapi/dto/ApiResponse.class | Bin 6301 -> 0 bytes .../com/dynapi/dto/DynamicQueryRequest.class | Bin 1767 -> 0 bytes .../classes/com/dynapi/dto/FilterRule.class | Bin 3458 -> 0 bytes .../com/dynapi/dto/FormRecordDto.class | Bin 2548 -> 0 bytes .../dynapi/dto/FormSubmissionRequest.class | Bin 2601 -> 0 bytes .../com/dynapi/dto/PaginatedResponse.class | Bin 4249 -> 0 bytes .../exception/GlobalExceptionHandler.class | Bin 6851 -> 0 bytes .../audit/LoggingAuditPublisher.class | Bin 1297 -> 0 bytes .../messaging/EventPublisher.class | Bin 1721 -> 0 bytes .../messaging/KafkaConfig.class | Bin 1351 -> 0 bytes .../MongoDynamicQueryService.class | Bin 7730 -> 0 bytes .../MongoFormSubmissionAdapter.class | Bin 1200 -> 0 bytes .../rest/FormSubmissionController.class | Bin 1913 -> 0 bytes .../rest/dto/FormSubmissionRequest.class | Bin 1143 -> 0 bytes .../FieldDefinitionRepository.class | Bin 383 -> 0 bytes .../repository/FieldGroupRepository.class | Bin 368 -> 0 bytes .../security/JwtAuthenticationFilter.class | Bin 3138 -> 0 bytes .../com/dynapi/security/JwtProperties.class | Bin 848 -> 0 bytes .../com/dynapi/security/JwtTokenService.class | Bin 5065 -> 0 bytes .../com/dynapi/security/SecurityConfig.class | Bin 4930 -> 0 bytes .../dynapi/service/DynamicQueryService.class | Bin 8400 -> 0 bytes .../service/FormSubmissionService.class | Bin 3328 -> 0 bytes .../validation/DynamicValidator$1.class | Bin 948 -> 0 bytes .../dynapi/validation/DynamicValidator.class | Bin 4169 -> 0 bytes target/classes/messages.properties | 12 - target/classes/messages_tr.properties | 12 - .../compile/default-compile/createdFiles.lst | 66 -- .../compile/default-compile/inputFiles.lst | 60 - .../default-testCompile/createdFiles.lst | 8 - .../default-testCompile/inputFiles.lst | 5 - ...TEST-com.dynapi.DynapiApplicationTests.xml | 182 --- ...domain.validation.DynamicValidatorTest.xml | 72 -- ...egration.FormControllerIntegrationTest.xml | 180 --- ...gration.QueryControllerIntegrationTest.xml | 179 --- ...AdminControllerSecurityIntegrationTest.xml | 194 ---- .../com.dynapi.DynapiApplicationTests.txt | 4 - ...domain.validation.DynamicValidatorTest.txt | 4 - ...egration.FormControllerIntegrationTest.txt | 4 - ...gration.QueryControllerIntegrationTest.txt | 4 - ...AdminControllerSecurityIntegrationTest.txt | 4 - target/test-classes/application-test.yml | 23 - .../com/dynapi/DynapiApplicationTests.class | Bin 604 -> 0 bytes .../validation/DynamicValidatorTest.class | Bin 9495 -> 0 bytes ...grationTest$FormControllerTestConfig.class | Bin 1465 -> 0 bytes .../FormControllerIntegrationTest.class | Bin 4835 -> 0 bytes ...rationTest$QueryControllerTestConfig.class | Bin 1467 -> 0 bytes .../QueryControllerIntegrationTest.class | Bin 5615 -> 0 bytes ...Test$SchemaAdminControllerTestConfig.class | Bin 1765 -> 0 bytes ...minControllerSecurityIntegrationTest.class | Bin 9493 -> 0 bytes 112 files changed, 1697 insertions(+), 1187 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/compiler.xml delete mode 100644 .idea/easycode.ignore delete mode 100644 .idea/easycode/codebase-v2.xml delete mode 100644 .idea/encodings.xml delete mode 100644 .idea/jarRepositories.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/vcs.xml create mode 100644 postman/dynapi.postman_collection.json create mode 100644 postman/dynapi.postman_environment.template.json create mode 100644 src/main/java/com/dynapi/config/QueryGuardrailProperties.java create mode 100644 src/test/java/com/dynapi/service/DynamicQueryServiceTest.java delete mode 100644 target/classes/application.properties delete mode 100644 target/classes/application.yml delete mode 100644 target/classes/com/dynapi/DynapiApplication.class delete mode 100644 target/classes/com/dynapi/application/port/AuditPublisher.class delete mode 100644 target/classes/com/dynapi/application/port/FormSubmissionPersistencePort.class delete mode 100644 target/classes/com/dynapi/application/port/input/SubmitFormUseCase.class delete mode 100644 target/classes/com/dynapi/application/port/output/FormSubmissionPersistencePort.class delete mode 100644 target/classes/com/dynapi/application/query/DynamicQueryService.class delete mode 100644 target/classes/com/dynapi/application/service/DynamicValidatorImpl.class delete mode 100644 target/classes/com/dynapi/application/service/FormSubmissionApplicationService.class delete mode 100644 target/classes/com/dynapi/audit/AuditEvent.class delete mode 100644 target/classes/com/dynapi/audit/AuditEventListener$AuditLog.class delete mode 100644 target/classes/com/dynapi/audit/AuditEventListener.class delete mode 100644 target/classes/com/dynapi/audit/AuditPublisher.class delete mode 100644 target/classes/com/dynapi/config/OpenApiConfig.class delete mode 100644 target/classes/com/dynapi/controller/FormController.class delete mode 100644 target/classes/com/dynapi/controller/QueryController.class delete mode 100644 target/classes/com/dynapi/controller/SchemaAdminController.class delete mode 100644 target/classes/com/dynapi/domain/event/AuditPublisher.class delete mode 100644 target/classes/com/dynapi/domain/event/DomainEvent.class delete mode 100644 target/classes/com/dynapi/domain/exception/EntityNotFoundException.class delete mode 100644 target/classes/com/dynapi/domain/exception/ValidationException.class delete mode 100644 target/classes/com/dynapi/domain/model/DynamicQuery$QueryFilter.class delete mode 100644 target/classes/com/dynapi/domain/model/DynamicQuery.class delete mode 100644 target/classes/com/dynapi/domain/model/FieldDefinition$RequiredIfRule.class delete mode 100644 target/classes/com/dynapi/domain/model/FieldDefinition.class delete mode 100644 target/classes/com/dynapi/domain/model/FieldGroup.class delete mode 100644 target/classes/com/dynapi/domain/model/FieldPermission.class delete mode 100644 target/classes/com/dynapi/domain/model/FieldType.class delete mode 100644 target/classes/com/dynapi/domain/model/FormSubmission.class delete mode 100644 target/classes/com/dynapi/domain/model/SchemaVersion.class delete mode 100644 target/classes/com/dynapi/domain/repository/FieldDefinitionRepository.class delete mode 100644 target/classes/com/dynapi/domain/repository/FieldGroupRepository.class delete mode 100644 target/classes/com/dynapi/domain/repository/FormSubmissionRepository.class delete mode 100644 target/classes/com/dynapi/domain/service/DynamicValidator.class delete mode 100644 target/classes/com/dynapi/domain/service/FieldPermissionService.class delete mode 100644 target/classes/com/dynapi/domain/service/FormSubmissionDomainService.class delete mode 100644 target/classes/com/dynapi/domain/service/FormSubmissionDomainServiceImpl.class delete mode 100644 target/classes/com/dynapi/domain/service/SchemaVersionService.class delete mode 100644 target/classes/com/dynapi/domain/service/impl/FieldPermissionServiceImpl.class delete mode 100644 target/classes/com/dynapi/domain/service/impl/SchemaVersionServiceImpl.class delete mode 100644 target/classes/com/dynapi/domain/validation/DynamicValidator$1.class delete mode 100644 target/classes/com/dynapi/domain/validation/DynamicValidator.class delete mode 100644 target/classes/com/dynapi/dto/ApiResponse$Metadata.class delete mode 100644 target/classes/com/dynapi/dto/ApiResponse.class delete mode 100644 target/classes/com/dynapi/dto/DynamicQueryRequest.class delete mode 100644 target/classes/com/dynapi/dto/FilterRule.class delete mode 100644 target/classes/com/dynapi/dto/FormRecordDto.class delete mode 100644 target/classes/com/dynapi/dto/FormSubmissionRequest.class delete mode 100644 target/classes/com/dynapi/dto/PaginatedResponse.class delete mode 100644 target/classes/com/dynapi/exception/GlobalExceptionHandler.class delete mode 100644 target/classes/com/dynapi/infrastructure/audit/LoggingAuditPublisher.class delete mode 100644 target/classes/com/dynapi/infrastructure/messaging/EventPublisher.class delete mode 100644 target/classes/com/dynapi/infrastructure/messaging/KafkaConfig.class delete mode 100644 target/classes/com/dynapi/infrastructure/persistence/MongoDynamicQueryService.class delete mode 100644 target/classes/com/dynapi/infrastructure/persistence/MongoFormSubmissionAdapter.class delete mode 100644 target/classes/com/dynapi/interfaces/rest/FormSubmissionController.class delete mode 100644 target/classes/com/dynapi/interfaces/rest/dto/FormSubmissionRequest.class delete mode 100644 target/classes/com/dynapi/repository/FieldDefinitionRepository.class delete mode 100644 target/classes/com/dynapi/repository/FieldGroupRepository.class delete mode 100644 target/classes/com/dynapi/security/JwtAuthenticationFilter.class delete mode 100644 target/classes/com/dynapi/security/JwtProperties.class delete mode 100644 target/classes/com/dynapi/security/JwtTokenService.class delete mode 100644 target/classes/com/dynapi/security/SecurityConfig.class delete mode 100644 target/classes/com/dynapi/service/DynamicQueryService.class delete mode 100644 target/classes/com/dynapi/service/FormSubmissionService.class delete mode 100644 target/classes/com/dynapi/validation/DynamicValidator$1.class delete mode 100644 target/classes/com/dynapi/validation/DynamicValidator.class delete mode 100644 target/classes/messages.properties delete mode 100644 target/classes/messages_tr.properties delete mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst delete mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst delete mode 100644 target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst delete mode 100644 target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst delete mode 100644 target/surefire-reports/TEST-com.dynapi.DynapiApplicationTests.xml delete mode 100644 target/surefire-reports/TEST-com.dynapi.domain.validation.DynamicValidatorTest.xml delete mode 100644 target/surefire-reports/TEST-com.dynapi.integration.FormControllerIntegrationTest.xml delete mode 100644 target/surefire-reports/TEST-com.dynapi.integration.QueryControllerIntegrationTest.xml delete mode 100644 target/surefire-reports/TEST-com.dynapi.integration.SchemaAdminControllerSecurityIntegrationTest.xml delete mode 100644 target/surefire-reports/com.dynapi.DynapiApplicationTests.txt delete mode 100644 target/surefire-reports/com.dynapi.domain.validation.DynamicValidatorTest.txt delete mode 100644 target/surefire-reports/com.dynapi.integration.FormControllerIntegrationTest.txt delete mode 100644 target/surefire-reports/com.dynapi.integration.QueryControllerIntegrationTest.txt delete mode 100644 target/surefire-reports/com.dynapi.integration.SchemaAdminControllerSecurityIntegrationTest.txt delete mode 100644 target/test-classes/application-test.yml delete mode 100644 target/test-classes/com/dynapi/DynapiApplicationTests.class delete mode 100644 target/test-classes/com/dynapi/domain/validation/DynamicValidatorTest.class delete mode 100644 target/test-classes/com/dynapi/integration/FormControllerIntegrationTest$FormControllerTestConfig.class delete mode 100644 target/test-classes/com/dynapi/integration/FormControllerIntegrationTest.class delete mode 100644 target/test-classes/com/dynapi/integration/QueryControllerIntegrationTest$QueryControllerTestConfig.class delete mode 100644 target/test-classes/com/dynapi/integration/QueryControllerIntegrationTest.class delete mode 100644 target/test-classes/com/dynapi/integration/SchemaAdminControllerSecurityIntegrationTest$SchemaAdminControllerTestConfig.class delete mode 100644 target/test-classes/com/dynapi/integration/SchemaAdminControllerSecurityIntegrationTest.class diff --git a/.gitignore b/.gitignore index 7c03cc9..1d6139b 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,17 @@ coverage/ .tmp/ .cache/ .validate-tmp/ +target/ +*.iml +.vscode/ +.classpath +.project +.settings/ +out/ +hs_err_pid* +replay_pid* +postman/*.postman_environment.json +!postman/*.postman_environment.template.json # Local AI workflow files (not shared via git) sdd/ diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 26d3352..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index 4eda40e..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/easycode.ignore b/.idea/easycode.ignore deleted file mode 100644 index 04b63e2..0000000 --- a/.idea/easycode.ignore +++ /dev/null @@ -1,13 +0,0 @@ -.idea -.vscode -node_modules/ -dist/ -vendor/ -cache/ -.*/ -*.min.* -*.test.* -*.spec.* -*.bundle.* -*.bundle-min.* -*.log diff --git a/.idea/easycode/codebase-v2.xml b/.idea/easycode/codebase-v2.xml deleted file mode 100644 index 67e8afe..0000000 --- a/.idea/easycode/codebase-v2.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index 63e9001..0000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml deleted file mode 100644 index 712ab9d..0000000 --- a/.idea/jarRepositories.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 9dc782b..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/postman/dynapi.postman_collection.json b/postman/dynapi.postman_collection.json new file mode 100644 index 0000000..57a7580 --- /dev/null +++ b/postman/dynapi.postman_collection.json @@ -0,0 +1,1029 @@ +{ + "info": { + "_postman_id": "1f2d43c2-f0c0-4f74-8fef-0adf6073f100", + "name": "Dynapi API", + "description": "Dynapi backend API collection with success and error scenario examples for every active endpoint. Includes app-level error envelopes (400/403/404/500) and endpoint-specific success examples.", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "variable": [ + { + "key": "baseUrl", + "value": "http://localhost:8080/api" + }, + { + "key": "adminToken", + "value": "" + }, + { + "key": "entity", + "value": "tasks" + }, + { + "key": "fieldDefinitionId", + "value": "priority" + }, + { + "key": "fieldGroupId", + "value": "task-form" + }, + { + "key": "groupId", + "value": "task-form" + } + ], + "item": [ + { + "name": "Form API", + "item": [ + { + "name": "POST /form - Submit Form", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"group\": \"task-form\",\n \"data\": {\n \"title\": \"Ship v1\",\n \"priority\": 1\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/form", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "form" + ] + }, + "description": "Submit dynamic payload using a predefined field group." + }, + "response": [ + { + "name": "Success", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": true,\n \"message\": \"Form submitted successfully\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Bad Request - Validation Error", + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Field is required\",\n \"data\": null,\n \"errors\": {\n \"title\": \"Field is required\"\n },\n \"metadata\": null\n}" + }, + { + "name": "Bad Request - Group Not Found", + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Group not found\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Not Found - Entity (If Raised by Service)", + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Entity not found\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Internal Server Error", + "status": "Internal Server Error", + "code": 500, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Internal server error\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + } + ] + }, + { + "name": "POST /forms/:groupId/submit - Submit Form", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept-Language", + "value": "en-US", + "disabled": true + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"title\": \"Ship v1\",\n \"priority\": 1\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/forms/{{groupId}}/submit", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "forms", + "{{groupId}}", + "submit" + ] + }, + "description": "Submit dynamic payload using path-based group id. Public endpoint." + }, + "response": [ + { + "name": "Success", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": true,\n \"message\": \"Form submitted successfully\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Bad Request - Validation Error", + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Field is required\",\n \"data\": null,\n \"errors\": {\n \"title\": \"Field is required\"\n },\n \"metadata\": null\n}" + }, + { + "name": "Bad Request - Group Not Found", + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Group not found\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Not Found - Entity (If Raised by Service)", + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Entity not found\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Internal Server Error", + "status": "Internal Server Error", + "code": 500, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Internal server error\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + } + ] + } + ] + }, + { + "name": "Query API", + "item": [ + { + "name": "POST /query/:entity - Query Records", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"filters\": [\n { \"field\": \"priority\", \"operator\": \"gte\", \"value\": 1 }\n ],\n \"page\": 0,\n \"size\": 10,\n \"sortBy\": \"priority\",\n \"sortDirection\": \"DESC\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/query/{{entity}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "query", + "{{entity}}" + ] + }, + "description": "Query dynamic records with guarded filters, sorting, and pagination." + }, + "response": [ + { + "name": "Success", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": true,\n \"message\": \"Query successful\",\n \"data\": {\n \"page\": 0,\n \"size\": 10,\n \"totalElements\": 1,\n \"content\": [\n {\n \"id\": \"66f0f4c2d31234ab12345678\",\n \"data\": {\n \"title\": \"Ship v1\",\n \"priority\": 2\n }\n }\n ],\n \"sortBy\": \"priority\",\n \"sortDirection\": \"DESC\"\n },\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Bad Request - Size Exceeds Max", + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Size exceeds max page size: 100\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Bad Request - Filter Field Not Allowed", + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Filtering by field is not allowed: unknownField\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Bad Request - Operator Not Allowed", + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Operator 'regex' is not allowed for field 'priority' of type NUMBER\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Bad Request - Filter Depth Exceeded", + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Filter depth exceeds max: 3\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Bad Request - Schema Group Not Found", + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Schema group not found for entity: tasks\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Not Found - Entity (If Raised by Service)", + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Entity not found\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Internal Server Error", + "status": "Internal Server Error", + "code": 500, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Internal server error\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + } + ] + } + ] + }, + { + "name": "Schema Admin - Field Definitions", + "item": [ + { + "name": "POST /admin/schema/field-definitions - Create Field Definition", + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{adminToken}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"fieldName\": \"priority\",\n \"type\": \"NUMBER\",\n \"required\": false,\n \"min\": 1,\n \"max\": 5,\n \"version\": 1\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/schema/field-definitions", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "schema", + "field-definitions" + ] + } + }, + "response": [ + { + "name": "Success", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "body": "{\n \"success\": true,\n \"message\": \"Created\",\n \"data\": {\n \"fieldName\": \"priority\",\n \"type\": \"NUMBER\",\n \"required\": false,\n \"min\": 1.0,\n \"max\": 5.0,\n \"regex\": null,\n \"enumValues\": null,\n \"requiredIf\": null,\n \"subFields\": null,\n \"version\": 1,\n \"permissions\": null\n },\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Bad Request - Illegal Argument", + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Invalid request\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Forbidden - Missing or Non-Admin Token", + "status": "Forbidden", + "code": 403, + "_postman_previewlanguage": "json", + "body": "{\n \"timestamp\": \"2026-02-24T00:00:00.000+00:00\",\n \"status\": 403,\n \"error\": \"Forbidden\",\n \"path\": \"/api/admin/schema/field-definitions\"\n}" + }, + { + "name": "Not Found - Entity (If Raised by Service)", + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Entity not found\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Internal Server Error", + "status": "Internal Server Error", + "code": 500, + "_postman_previewlanguage": "json", + "body": "{\n \"success\": false,\n \"message\": \"Internal server error\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + } + ] + }, + { + "name": "PUT /admin/schema/field-definitions/:id - Update Field Definition", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{adminToken}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"type\": \"NUMBER\",\n \"required\": true,\n \"min\": 1,\n \"max\": 10\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/schema/field-definitions/{{fieldDefinitionId}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "schema", + "field-definitions", + "{{fieldDefinitionId}}" + ] + } + }, + "response": [ + { + "name": "Success", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "body": "{\n \"success\": true,\n \"message\": \"Updated\",\n \"data\": {\n \"fieldName\": \"priority\",\n \"type\": \"NUMBER\",\n \"required\": true\n },\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Bad Request - Illegal Argument", + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Invalid request\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Forbidden - Missing or Non-Admin Token", + "status": "Forbidden", + "code": 403, + "_postman_previewlanguage": "json", + "body": "{\n \"timestamp\": \"2026-02-24T00:00:00.000+00:00\",\n \"status\": 403,\n \"error\": \"Forbidden\",\n \"path\": \"/api/admin/schema/field-definitions/priority\"\n}" + }, + { + "name": "Not Found - Entity (If Raised by Service)", + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Entity not found\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Internal Server Error", + "status": "Internal Server Error", + "code": 500, + "_postman_previewlanguage": "json", + "body": "{\n \"success\": false,\n \"message\": \"Internal server error\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + } + ] + }, + { + "name": "DELETE /admin/schema/field-definitions/:id - Delete Field Definition", + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{adminToken}}" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/schema/field-definitions/{{fieldDefinitionId}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "schema", + "field-definitions", + "{{fieldDefinitionId}}" + ] + } + }, + "response": [ + { + "name": "Success", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "body": "{\n \"success\": true,\n \"message\": \"Deleted\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Bad Request - Illegal Argument", + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Invalid request\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Forbidden - Missing or Non-Admin Token", + "status": "Forbidden", + "code": 403, + "_postman_previewlanguage": "json", + "body": "{\n \"timestamp\": \"2026-02-24T00:00:00.000+00:00\",\n \"status\": 403,\n \"error\": \"Forbidden\",\n \"path\": \"/api/admin/schema/field-definitions/priority\"\n}" + }, + { + "name": "Not Found - Entity (If Raised by Service)", + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Entity not found\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Internal Server Error", + "status": "Internal Server Error", + "code": 500, + "_postman_previewlanguage": "json", + "body": "{\n \"success\": false,\n \"message\": \"Internal server error\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + } + ] + }, + { + "name": "GET /admin/schema/field-definitions - List Field Definitions", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{adminToken}}" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/schema/field-definitions", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "schema", + "field-definitions" + ] + } + }, + "response": [ + { + "name": "Success", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "body": "{\n \"success\": true,\n \"message\": \"Fetched\",\n \"data\": [\n {\n \"fieldName\": \"priority\",\n \"type\": \"NUMBER\"\n }\n ],\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Bad Request - Illegal Argument", + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Invalid request\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Forbidden - Missing or Non-Admin Token", + "status": "Forbidden", + "code": 403, + "_postman_previewlanguage": "json", + "body": "{\n \"timestamp\": \"2026-02-24T00:00:00.000+00:00\",\n \"status\": 403,\n \"error\": \"Forbidden\",\n \"path\": \"/api/admin/schema/field-definitions\"\n}" + }, + { + "name": "Not Found - Entity (If Raised by Service)", + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Entity not found\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Internal Server Error", + "status": "Internal Server Error", + "code": 500, + "_postman_previewlanguage": "json", + "body": "{\n \"success\": false,\n \"message\": \"Internal server error\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + } + ] + } + ] + }, + { + "name": "Schema Admin - Field Groups", + "item": [ + { + "name": "POST /admin/schema/field-groups - Create Field Group", + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{adminToken}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"task-form\",\n \"entity\": \"tasks\",\n \"fieldNames\": [\"title\", \"priority\"],\n \"version\": 1\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/schema/field-groups", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "schema", + "field-groups" + ] + } + }, + "response": [ + { + "name": "Success", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "body": "{\n \"success\": true,\n \"message\": \"Created\",\n \"data\": {\n \"name\": \"task-form\",\n \"entity\": \"tasks\",\n \"fieldNames\": [\"title\", \"priority\"]\n },\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Bad Request - Illegal Argument", + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Invalid request\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Forbidden - Missing or Non-Admin Token", + "status": "Forbidden", + "code": 403, + "_postman_previewlanguage": "json", + "body": "{\n \"timestamp\": \"2026-02-24T00:00:00.000+00:00\",\n \"status\": 403,\n \"error\": \"Forbidden\",\n \"path\": \"/api/admin/schema/field-groups\"\n}" + }, + { + "name": "Not Found - Entity (If Raised by Service)", + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Entity not found\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Internal Server Error", + "status": "Internal Server Error", + "code": 500, + "_postman_previewlanguage": "json", + "body": "{\n \"success\": false,\n \"message\": \"Internal server error\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + } + ] + }, + { + "name": "PUT /admin/schema/field-groups/:id - Update Field Group", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{adminToken}}" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"entity\": \"tasks\",\n \"fieldNames\": [\"title\", \"priority\", \"status\"],\n \"version\": 2\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/schema/field-groups/{{fieldGroupId}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "schema", + "field-groups", + "{{fieldGroupId}}" + ] + } + }, + "response": [ + { + "name": "Success", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "body": "{\n \"success\": true,\n \"message\": \"Updated\",\n \"data\": {\n \"name\": \"task-form\",\n \"entity\": \"tasks\",\n \"fieldNames\": [\"title\", \"priority\", \"status\"]\n },\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Bad Request - Illegal Argument", + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Invalid request\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Forbidden - Missing or Non-Admin Token", + "status": "Forbidden", + "code": 403, + "_postman_previewlanguage": "json", + "body": "{\n \"timestamp\": \"2026-02-24T00:00:00.000+00:00\",\n \"status\": 403,\n \"error\": \"Forbidden\",\n \"path\": \"/api/admin/schema/field-groups/task-form\"\n}" + }, + { + "name": "Not Found - Entity (If Raised by Service)", + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Entity not found\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Internal Server Error", + "status": "Internal Server Error", + "code": 500, + "_postman_previewlanguage": "json", + "body": "{\n \"success\": false,\n \"message\": \"Internal server error\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + } + ] + }, + { + "name": "DELETE /admin/schema/field-groups/:id - Delete Field Group", + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{adminToken}}" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/schema/field-groups/{{fieldGroupId}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "schema", + "field-groups", + "{{fieldGroupId}}" + ] + } + }, + "response": [ + { + "name": "Success", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "body": "{\n \"success\": true,\n \"message\": \"Deleted\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Bad Request - Illegal Argument", + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Invalid request\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Forbidden - Missing or Non-Admin Token", + "status": "Forbidden", + "code": 403, + "_postman_previewlanguage": "json", + "body": "{\n \"timestamp\": \"2026-02-24T00:00:00.000+00:00\",\n \"status\": 403,\n \"error\": \"Forbidden\",\n \"path\": \"/api/admin/schema/field-groups/task-form\"\n}" + }, + { + "name": "Not Found - Entity (If Raised by Service)", + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Entity not found\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Internal Server Error", + "status": "Internal Server Error", + "code": 500, + "_postman_previewlanguage": "json", + "body": "{\n \"success\": false,\n \"message\": \"Internal server error\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + } + ] + }, + { + "name": "GET /admin/schema/field-groups - List Field Groups", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Bearer {{adminToken}}" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/schema/field-groups", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "schema", + "field-groups" + ] + } + }, + "response": [ + { + "name": "Success", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "body": "{\n \"success\": true,\n \"message\": \"Fetched\",\n \"data\": [\n {\n \"name\": \"task-form\",\n \"entity\": \"tasks\",\n \"fieldNames\": [\"title\", \"priority\"]\n }\n ],\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Bad Request - Illegal Argument", + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Invalid request\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Forbidden - Missing or Non-Admin Token", + "status": "Forbidden", + "code": 403, + "_postman_previewlanguage": "json", + "body": "{\n \"timestamp\": \"2026-02-24T00:00:00.000+00:00\",\n \"status\": 403,\n \"error\": \"Forbidden\",\n \"path\": \"/api/admin/schema/field-groups\"\n}" + }, + { + "name": "Not Found - Entity (If Raised by Service)", + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"success\": false,\n \"message\": \"Entity not found\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + }, + { + "name": "Internal Server Error", + "status": "Internal Server Error", + "code": 500, + "_postman_previewlanguage": "json", + "body": "{\n \"success\": false,\n \"message\": \"Internal server error\",\n \"data\": null,\n \"errors\": null,\n \"metadata\": null\n}" + } + ] + } + ] + } + ] +} diff --git a/postman/dynapi.postman_environment.template.json b/postman/dynapi.postman_environment.template.json new file mode 100644 index 0000000..91d78e1 --- /dev/null +++ b/postman/dynapi.postman_environment.template.json @@ -0,0 +1,49 @@ +{ + "id": "00000000-0000-0000-0000-000000000000", + "name": "Dynapi Local (Template)", + "values": [ + { + "key": "baseUrl", + "value": "http://localhost:8080/api", + "enabled": true + }, + { + "key": "adminToken", + "value": "", + "enabled": true + }, + { + "key": "entity", + "value": "tasks", + "enabled": true + }, + { + "key": "fieldDefinitionId", + "value": "priority", + "enabled": true + }, + { + "key": "fieldGroupId", + "value": "task-form", + "enabled": true + }, + { + "key": "nonAdminToken", + "value": "", + "enabled": true + }, + { + "key": "invalidToken", + "value": "invalid.jwt.token", + "enabled": true + }, + { + "key": "groupId", + "value": "task-form", + "enabled": true + } + ], + "_postman_variable_scope": "environment", + "_postman_exported_at": "2026-02-23T00:00:00.000Z", + "_postman_exported_using": "Codex GPT-5" +} diff --git a/src/main/java/com/dynapi/config/QueryGuardrailProperties.java b/src/main/java/com/dynapi/config/QueryGuardrailProperties.java new file mode 100644 index 0000000..ba72d1c --- /dev/null +++ b/src/main/java/com/dynapi/config/QueryGuardrailProperties.java @@ -0,0 +1,16 @@ +package com.dynapi.config; + +import lombok.Getter; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Getter +@Setter +@Component +@ConfigurationProperties(prefix = "dynapi.query.guardrails") +public class QueryGuardrailProperties { + private int maxPageSize = 100; + private int maxFilterDepth = 3; + private int maxRuleCount = 20; +} diff --git a/src/main/java/com/dynapi/interfaces/rest/FormSubmissionController.java b/src/main/java/com/dynapi/interfaces/rest/FormSubmissionController.java index 2728376..7b609a2 100644 --- a/src/main/java/com/dynapi/interfaces/rest/FormSubmissionController.java +++ b/src/main/java/com/dynapi/interfaces/rest/FormSubmissionController.java @@ -1,25 +1,31 @@ package com.dynapi.interfaces.rest; -import com.dynapi.application.port.input.SubmitFormUseCase; import com.dynapi.dto.ApiResponse; +import com.dynapi.dto.FormSubmissionRequest; +import com.dynapi.service.FormSubmissionService; +import lombok.RequiredArgsConstructor; +import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.web.bind.annotation.*; import java.util.Locale; import java.util.Map; +@RestController @RequestMapping("/forms") +@RequiredArgsConstructor public class FormSubmissionController { - private final SubmitFormUseCase submitFormUseCase; - - public FormSubmissionController(SubmitFormUseCase submitFormUseCase) { - this.submitFormUseCase = submitFormUseCase; - } + private final FormSubmissionService formSubmissionService; @PostMapping("/{groupId}/submit") public ApiResponse submitForm( @PathVariable String groupId, @RequestBody Map formData, @RequestHeader(name = "Accept-Language", required = false) Locale locale) { - submitFormUseCase.submitForm(groupId, formData, locale); + FormSubmissionRequest request = new FormSubmissionRequest(); + request.setGroup(groupId); + request.setData(formData); + + Locale effectiveLocale = locale == null ? LocaleContextHolder.getLocale() : locale; + formSubmissionService.submitForm(request, effectiveLocale); return ApiResponse.success(null, "Form submitted successfully"); } } diff --git a/src/main/java/com/dynapi/repository/FieldGroupRepository.java b/src/main/java/com/dynapi/repository/FieldGroupRepository.java index 9cb0891..534eacf 100644 --- a/src/main/java/com/dynapi/repository/FieldGroupRepository.java +++ b/src/main/java/com/dynapi/repository/FieldGroupRepository.java @@ -3,5 +3,8 @@ import com.dynapi.domain.model.FieldGroup; import org.springframework.data.mongodb.repository.MongoRepository; +import java.util.Optional; + public interface FieldGroupRepository extends MongoRepository { + Optional findByEntity(String entity); } diff --git a/src/main/java/com/dynapi/service/DynamicQueryService.java b/src/main/java/com/dynapi/service/DynamicQueryService.java index ac513ce..738dbc1 100644 --- a/src/main/java/com/dynapi/service/DynamicQueryService.java +++ b/src/main/java/com/dynapi/service/DynamicQueryService.java @@ -1,8 +1,15 @@ package com.dynapi.service; +import com.dynapi.config.QueryGuardrailProperties; +import com.dynapi.domain.model.FieldDefinition; +import com.dynapi.domain.model.FieldGroup; +import com.dynapi.domain.model.FieldType; import com.dynapi.dto.DynamicQueryRequest; +import com.dynapi.dto.FilterRule; import com.dynapi.dto.FormRecordDto; import com.dynapi.dto.PaginatedResponse; +import com.dynapi.repository.FieldDefinitionRepository; +import com.dynapi.repository.FieldGroupRepository; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; @@ -11,88 +18,360 @@ import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; +import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; +import java.util.stream.StreamSupport; @Service @RequiredArgsConstructor public class DynamicQueryService { + private static final int DEFAULT_PAGE = 0; + private static final int DEFAULT_SIZE = 10; + + private static final Set COMBINATOR_OPERATORS = Set.of("and", "or", "not"); + private static final Set NUMBER_OPERATORS = Set.of("eq", "ne", "gt", "lt", "gte", "lte", "in"); + private static final Set DATE_OPERATORS = Set.of("eq", "ne", "gt", "lt", "gte", "lte", "in"); + private static final Set STRING_OPERATORS = Set.of("eq", "ne", "in", "regex"); + private static final Set BOOLEAN_OPERATORS = Set.of("eq", "ne", "in"); + private static final Set OBJECT_ARRAY_OPERATORS = Set.of("eq", "ne"); + private final MongoTemplate mongoTemplate; + private final FieldGroupRepository fieldGroupRepository; + private final FieldDefinitionRepository fieldDefinitionRepository; + private final QueryGuardrailProperties guardrailProperties; public PaginatedResponse query(String entity, DynamicQueryRequest request) { + DynamicQueryRequest safeRequest = request == null ? new DynamicQueryRequest() : request; + int page = resolvePage(safeRequest.getPage()); + int size = resolveSize(safeRequest.getSize()); + Map allowedFieldTypes = loadFieldTypesByEntity(entity); + + validateSort(safeRequest.getSortBy(), safeRequest.getSortDirection(), allowedFieldTypes); + validateFilters(safeRequest.getFilters(), allowedFieldTypes); + Query query = new Query(); - // Build advanced filters - if (request.getFilters() != null && !request.getFilters().isEmpty()) { - query.addCriteria(buildCriteria(request.getFilters())); + if (safeRequest.getFilters() != null && !safeRequest.getFilters().isEmpty()) { + query.addCriteria(buildCriteria(safeRequest.getFilters())); } - // Pagination and sorting - int page = request.getPage() != null ? request.getPage() : 0; - int size = request.getSize() != null ? request.getSize() : 10; - if (request.getSortBy() != null && request.getSortDirection() != null) { - Sort.Direction dir = request.getSortDirection().equalsIgnoreCase("DESC") ? Sort.Direction.DESC : Sort.Direction.ASC; - query.with(Sort.by(dir, request.getSortBy())); + + if (safeRequest.getSortBy() != null && !safeRequest.getSortBy().isBlank()) { + Sort.Direction dir = resolveSortDirection(safeRequest.getSortDirection()); + query.with(Sort.by(dir, safeRequest.getSortBy().trim())); } + query.with(PageRequest.of(page, size)); - // Query MongoDB + List results = mongoTemplate.find(query, Map.class, entity); - // Map to FormRecordDto (strip _id, _class) - List content = results.stream().map(map -> { + List content = results.stream().map(result -> { FormRecordDto dto = new FormRecordDto(); - dto.setId(map.get("_id") != null ? map.get("_id").toString() : null); - map.remove("_id"); - map.remove("_class"); - dto.setData(map); + dto.setId(result.get("_id") != null ? result.get("_id").toString() : null); + @SuppressWarnings("unchecked") + Map data = new HashMap<>((Map) result); + data.remove("_id"); + data.remove("_class"); + dto.setData(data); return dto; }).collect(Collectors.toList()); - // Total count + long total = mongoTemplate.count(query.skip(-1).limit(-1), entity); - // Paginated response + PaginatedResponse response = new PaginatedResponse<>(); response.setPage(page); response.setSize(size); response.setTotalElements(total); response.setContent(content); - response.setSortBy(request.getSortBy()); - response.setSortDirection(request.getSortDirection()); + response.setSortBy(safeRequest.getSortBy()); + response.setSortDirection(safeRequest.getSortDirection()); return response; } - // Recursively build Criteria from FilterRule list - private Criteria buildCriteria(List rules) { - if (rules == null || rules.isEmpty()) return new Criteria(); + private int resolvePage(Integer page) { + if (page == null) { + return DEFAULT_PAGE; + } + if (page < 0) { + throw new IllegalArgumentException("Page must be >= 0"); + } + return page; + } + + private int resolveSize(Integer size) { + if (size == null) { + return DEFAULT_SIZE; + } + if (size <= 0) { + throw new IllegalArgumentException("Size must be > 0"); + } + if (size > guardrailProperties.getMaxPageSize()) { + throw new IllegalArgumentException("Size exceeds max page size: " + guardrailProperties.getMaxPageSize()); + } + return size; + } + + private Sort.Direction resolveSortDirection(String sortDirection) { + if (sortDirection == null || sortDirection.isBlank()) { + return Sort.Direction.ASC; + } + + if ("DESC".equalsIgnoreCase(sortDirection)) { + return Sort.Direction.DESC; + } + if ("ASC".equalsIgnoreCase(sortDirection)) { + return Sort.Direction.ASC; + } + throw new IllegalArgumentException("Unsupported sort direction: " + sortDirection); + } + + private Map loadFieldTypesByEntity(String entity) { + FieldGroup fieldGroup = fieldGroupRepository.findByEntity(entity) + .orElseThrow(() -> new IllegalArgumentException("Schema group not found for entity: " + entity)); + + List fieldNames = fieldGroup.getFieldNames(); + if (fieldNames == null || fieldNames.isEmpty()) { + throw new IllegalArgumentException("Field group has no fields for entity: " + entity); + } + + List definitions = StreamSupport + .stream(fieldDefinitionRepository.findAllById(fieldNames).spliterator(), false) + .collect(Collectors.toList()); + + if (definitions.isEmpty()) { + throw new IllegalArgumentException("No field definitions found for entity: " + entity); + } + + Map fieldTypeByPath = new HashMap<>(); + for (FieldDefinition definition : definitions) { + registerFieldPaths(definition, "", fieldTypeByPath); + } + return fieldTypeByPath; + } + + private void registerFieldPaths(FieldDefinition definition, String parentPath, Map fieldTypeByPath) { + String path = parentPath.isEmpty() + ? definition.getFieldName() + : parentPath + "." + definition.getFieldName(); + + fieldTypeByPath.put(path, definition.getType()); + if ((definition.getType() == FieldType.OBJECT || definition.getType() == FieldType.ARRAY) + && definition.getSubFields() != null && !definition.getSubFields().isEmpty()) { + for (FieldDefinition subField : definition.getSubFields()) { + registerFieldPaths(subField, path, fieldTypeByPath); + } + } + } + + private void validateSort(String sortBy, String sortDirection, Map fieldTypes) { + if (sortBy == null || sortBy.isBlank()) { + if (sortDirection != null && !sortDirection.isBlank()) { + throw new IllegalArgumentException("sortDirection requires sortBy"); + } + return; + } + + String normalizedSortBy = sortBy.trim(); + if (!fieldTypes.containsKey(normalizedSortBy)) { + throw new IllegalArgumentException("Sorting by field is not allowed: " + normalizedSortBy); + } + + if (sortDirection != null && !sortDirection.isBlank()) { + resolveSortDirection(sortDirection); + } + } + + private void validateFilters(List filters, Map fieldTypes) { + if (filters == null || filters.isEmpty()) { + return; + } + + AtomicInteger ruleCount = new AtomicInteger(); + for (FilterRule filter : filters) { + validateRule(filter, 1, ruleCount, fieldTypes); + } + } + + private void validateRule( + FilterRule rule, + int depth, + AtomicInteger ruleCount, + Map fieldTypes + ) { + if (rule == null) { + throw new IllegalArgumentException("Filter rule cannot be null"); + } + if (depth > guardrailProperties.getMaxFilterDepth()) { + throw new IllegalArgumentException("Filter depth exceeds max: " + guardrailProperties.getMaxFilterDepth()); + } + if (ruleCount.incrementAndGet() > guardrailProperties.getMaxRuleCount()) { + throw new IllegalArgumentException("Filter rule count exceeds max: " + guardrailProperties.getMaxRuleCount()); + } + + String operator = normalizeOperator(rule.getOperator()); + if (COMBINATOR_OPERATORS.contains(operator)) { + List nestedRules = rule.getRules(); + if (nestedRules == null || nestedRules.isEmpty()) { + throw new IllegalArgumentException("Combinator operator requires nested rules: " + operator); + } + if ("not".equals(operator) && nestedRules.size() != 1) { + throw new IllegalArgumentException("NOT operator requires exactly one nested rule"); + } + for (FilterRule nestedRule : nestedRules) { + validateRule(nestedRule, depth + 1, ruleCount, fieldTypes); + } + return; + } + + if (rule.getRules() != null && !rule.getRules().isEmpty()) { + throw new IllegalArgumentException("Leaf filter operators cannot include nested rules"); + } + + String field = normalizeField(rule.getField()); + if (field == null) { + throw new IllegalArgumentException("Filter field is required"); + } + + FieldType fieldType = fieldTypes.get(field); + if (fieldType == null) { + throw new IllegalArgumentException("Filtering by field is not allowed: " + field); + } + + validateOperatorForType(field, operator, fieldType); + validateOperatorValue(field, operator, fieldType, rule.getValue()); + } + + private void validateOperatorForType(String field, String operator, FieldType fieldType) { + Set allowedOperators = allowedOperatorsFor(fieldType); + if (!allowedOperators.contains(operator)) { + throw new IllegalArgumentException( + "Operator '" + operator + "' is not allowed for field '" + field + "' of type " + fieldType + ); + } + } + + private Set allowedOperatorsFor(FieldType fieldType) { + return switch (fieldType) { + case STRING -> STRING_OPERATORS; + case NUMBER -> NUMBER_OPERATORS; + case BOOLEAN -> BOOLEAN_OPERATORS; + case DATE -> DATE_OPERATORS; + case OBJECT, ARRAY -> OBJECT_ARRAY_OPERATORS; + }; + } + + private void validateOperatorValue(String field, String operator, FieldType fieldType, Object value) { + if ("in".equals(operator)) { + if (!(value instanceof Collection collection)) { + throw new IllegalArgumentException("IN operator requires a list for field: " + field); + } + validateCollectionValues(field, fieldType, collection); + return; + } + + if ("regex".equals(operator)) { + if (!(value instanceof String)) { + throw new IllegalArgumentException("Regex operator requires string value for field: " + field); + } + return; + } + + if (fieldType == FieldType.NUMBER && ("gt".equals(operator) || "lt".equals(operator) || "gte".equals(operator) || "lte".equals(operator))) { + if (!(value instanceof Number)) { + throw new IllegalArgumentException("Operator '" + operator + "' requires numeric value for field: " + field); + } + } + + if (fieldType == FieldType.DATE && ("gt".equals(operator) || "lt".equals(operator) || "gte".equals(operator) || "lte".equals(operator))) { + if (!(value instanceof String)) { + throw new IllegalArgumentException("Operator '" + operator + "' requires date-string value for field: " + field); + } + } + } + + private void validateCollectionValues(String field, FieldType fieldType, Collection collection) { + for (Object item : collection) { + switch (fieldType) { + case NUMBER -> { + if (!(item instanceof Number)) { + throw new IllegalArgumentException("IN operator requires numeric list for field: " + field); + } + } + case BOOLEAN -> { + if (!(item instanceof Boolean)) { + throw new IllegalArgumentException("IN operator requires boolean list for field: " + field); + } + } + case DATE, STRING -> { + if (!(item instanceof String)) { + throw new IllegalArgumentException("IN operator requires string list for field: " + field); + } + } + case OBJECT, ARRAY -> throw new IllegalArgumentException("IN operator is not allowed for field: " + field); + } + } + } + + private String normalizeOperator(String operator) { + if (operator == null || operator.isBlank()) { + return "eq"; + } + return operator.trim().toLowerCase(); + } + + private String normalizeField(String field) { + if (field == null || field.isBlank()) { + return null; + } + return field.trim(); + } + + private Criteria buildCriteria(List rules) { + if (rules == null || rules.isEmpty()) { + return new Criteria(); + } List criteriaList = rules.stream().map(this::buildCriteria).collect(Collectors.toList()); - // Default to AND + if (criteriaList.size() == 1) { + return criteriaList.get(0); + } return new Criteria().andOperator(criteriaList.toArray(new Criteria[0])); } - private Criteria buildCriteria(com.dynapi.dto.FilterRule rule) { - if (rule.getOperator() == null || rule.getOperator().equalsIgnoreCase("eq")) { - return Criteria.where(rule.getField()).is(rule.getValue()); + private Criteria buildCriteria(FilterRule rule) { + String operator = normalizeOperator(rule.getOperator()); + if (COMBINATOR_OPERATORS.contains(operator)) { + List nested = rule.getRules().stream().map(this::buildCriteria).collect(Collectors.toList()); + return switch (operator) { + case "and" -> new Criteria().andOperator(nested.toArray(new Criteria[0])); + case "or" -> new Criteria().orOperator(nested.toArray(new Criteria[0])); + case "not" -> new Criteria().norOperator(nested.get(0)); + default -> new Criteria(); + }; } - switch (rule.getOperator().toLowerCase()) { + + String field = normalizeField(rule.getField()); + Object value = rule.getValue(); + switch (operator) { + case "eq": + return Criteria.where(field).is(value); case "ne": - return Criteria.where(rule.getField()).ne(rule.getValue()); + return Criteria.where(field).ne(value); case "gt": - return Criteria.where(rule.getField()).gt(rule.getValue()); + return Criteria.where(field).gt(value); case "lt": - return Criteria.where(rule.getField()).lt(rule.getValue()); + return Criteria.where(field).lt(value); case "gte": - return Criteria.where(rule.getField()).gte(rule.getValue()); + return Criteria.where(field).gte(value); case "lte": - return Criteria.where(rule.getField()).lte(rule.getValue()); + return Criteria.where(field).lte(value); case "in": - return Criteria.where(rule.getField()).in((List) rule.getValue()); + return Criteria.where(field).in((Collection) value); case "regex": - return Criteria.where(rule.getField()).regex(rule.getValue().toString()); - case "and": - return new Criteria().andOperator(rule.getRules().stream().map(this::buildCriteria).toArray(Criteria[]::new)); - case "or": - return new Criteria().orOperator(rule.getRules().stream().map(this::buildCriteria).toArray(Criteria[]::new)); - case "not": - return new Criteria().not().elemMatch(buildCriteria(rule.getRules().get(0))); + return Criteria.where(field).regex((String) value); default: - return Criteria.where(rule.getField()).is(rule.getValue()); + return Criteria.where(field).is(value); } } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 92e59c2..79edbcf 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -25,6 +25,13 @@ security: jwt: secret: ZHluYXBpLWRldi1zZWNyZXQta2V5LWNoYW5nZS1tZS0xMjM0NTY3ODkw +dynapi: + query: + guardrails: + max-page-size: 100 + max-filter-depth: 3 + max-rule-count: 20 + springdoc: api-docs: path: /api-docs diff --git a/src/test/java/com/dynapi/integration/FormControllerIntegrationTest.java b/src/test/java/com/dynapi/integration/FormControllerIntegrationTest.java index 952a815..d704479 100644 --- a/src/test/java/com/dynapi/integration/FormControllerIntegrationTest.java +++ b/src/test/java/com/dynapi/integration/FormControllerIntegrationTest.java @@ -22,6 +22,7 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.verify; +import static org.assertj.core.api.Assertions.assertThat; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -87,6 +88,28 @@ void submitForm_returnsBadRequestWhenServiceThrowsIllegalArgument() throws Excep .andExpect(jsonPath("$.message").value("Group not found")); } + @Test + void submitFormByGroup_returnsSuccessEnvelope() throws Exception { + String requestBody = """ + { + "name": "Alice" + } + """; + + mockMvc.perform(post("/api/forms/profile/submit") + .contextPath("/api") + .contentType(MediaType.APPLICATION_JSON) + .content(requestBody)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.success").value(true)) + .andExpect(jsonPath("$.message").value("Form submitted successfully")); + + var requestCaptor = org.mockito.ArgumentCaptor.forClass(FormSubmissionRequest.class); + verify(formSubmissionService).submitForm(requestCaptor.capture(), any(Locale.class)); + assertThat(requestCaptor.getValue().getGroup()).isEqualTo("profile"); + assertThat(requestCaptor.getValue().getData()).containsEntry("name", "Alice"); + } + @TestConfiguration static class FormControllerTestConfig { @Bean diff --git a/src/test/java/com/dynapi/service/DynamicQueryServiceTest.java b/src/test/java/com/dynapi/service/DynamicQueryServiceTest.java new file mode 100644 index 0000000..b8808a2 --- /dev/null +++ b/src/test/java/com/dynapi/service/DynamicQueryServiceTest.java @@ -0,0 +1,218 @@ +package com.dynapi.service; + +import com.dynapi.config.QueryGuardrailProperties; +import com.dynapi.domain.model.FieldDefinition; +import com.dynapi.domain.model.FieldGroup; +import com.dynapi.domain.model.FieldType; +import com.dynapi.dto.DynamicQueryRequest; +import com.dynapi.dto.FilterRule; +import com.dynapi.dto.FormRecordDto; +import com.dynapi.dto.PaginatedResponse; +import com.dynapi.repository.FieldDefinitionRepository; +import com.dynapi.repository.FieldGroupRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.data.mongodb.core.MongoTemplate; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.lenient; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class DynamicQueryServiceTest { + + @Mock + private MongoTemplate mongoTemplate; + + @Mock + private FieldGroupRepository fieldGroupRepository; + + @Mock + private FieldDefinitionRepository fieldDefinitionRepository; + + private DynamicQueryService dynamicQueryService; + + @BeforeEach + void setUp() { + QueryGuardrailProperties guardrails = new QueryGuardrailProperties(); + guardrails.setMaxPageSize(100); + guardrails.setMaxFilterDepth(3); + guardrails.setMaxRuleCount(20); + + dynamicQueryService = new DynamicQueryService( + mongoTemplate, + fieldGroupRepository, + fieldDefinitionRepository, + guardrails + ); + + FieldGroup group = new FieldGroup(); + group.setName("task-group"); + group.setEntity("tasks"); + group.setFieldNames(List.of("title", "priority", "profile")); + lenient().when(fieldGroupRepository.findByEntity("tasks")).thenReturn(Optional.of(group)); + + FieldDefinition title = field("title", FieldType.STRING); + FieldDefinition priority = field("priority", FieldType.NUMBER); + FieldDefinition profile = field("profile", FieldType.OBJECT); + FieldDefinition age = field("age", FieldType.NUMBER); + profile.setSubFields(List.of(age)); + lenient().when(fieldDefinitionRepository.findAllById(group.getFieldNames())) + .thenReturn(List.of(title, priority, profile)); + } + + @Test + void query_rejectsSizeAboveMax() { + DynamicQueryRequest request = new DynamicQueryRequest(); + request.setSize(101); + + IllegalArgumentException ex = assertThrows( + IllegalArgumentException.class, + () -> dynamicQueryService.query("tasks", request) + ); + + assertTrue(ex.getMessage().contains("max page size")); + } + + @Test + void query_rejectsUnknownSortField() { + DynamicQueryRequest request = new DynamicQueryRequest(); + request.setSortBy("unknownField"); + request.setSortDirection("ASC"); + + IllegalArgumentException ex = assertThrows( + IllegalArgumentException.class, + () -> dynamicQueryService.query("tasks", request) + ); + + assertTrue(ex.getMessage().contains("Sorting by field is not allowed")); + } + + @Test + void query_rejectsUnknownFilterField() { + DynamicQueryRequest request = new DynamicQueryRequest(); + request.setFilters(List.of(filter("unknown", "eq", "x"))); + + IllegalArgumentException ex = assertThrows( + IllegalArgumentException.class, + () -> dynamicQueryService.query("tasks", request) + ); + + assertTrue(ex.getMessage().contains("Filtering by field is not allowed")); + } + + @Test + void query_rejectsUnsupportedOperatorForFieldType() { + DynamicQueryRequest request = new DynamicQueryRequest(); + request.setFilters(List.of(filter("priority", "regex", "^1$"))); + + IllegalArgumentException ex = assertThrows( + IllegalArgumentException.class, + () -> dynamicQueryService.query("tasks", request) + ); + + assertTrue(ex.getMessage().contains("not allowed")); + } + + @Test + void query_rejectsFilterDepthExceeded() { + DynamicQueryRequest request = new DynamicQueryRequest(); + request.setFilters(List.of(nestedAnd(4, filter("title", "eq", "A")))); + + IllegalArgumentException ex = assertThrows( + IllegalArgumentException.class, + () -> dynamicQueryService.query("tasks", request) + ); + + assertTrue(ex.getMessage().contains("Filter depth exceeds max")); + } + + @Test + void query_rejectsFilterRuleCountExceeded() { + List tooManyRules = new ArrayList<>(); + for (int i = 0; i < 21; i++) { + tooManyRules.add(filter("title", "eq", "task-" + i)); + } + + DynamicQueryRequest request = new DynamicQueryRequest(); + request.setFilters(tooManyRules); + + IllegalArgumentException ex = assertThrows( + IllegalArgumentException.class, + () -> dynamicQueryService.query("tasks", request) + ); + + assertTrue(ex.getMessage().contains("Filter rule count exceeds max")); + } + + @Test + void query_allowsValidGuardedQuery() { + DynamicQueryRequest request = new DynamicQueryRequest(); + request.setPage(0); + request.setSize(10); + request.setSortBy("priority"); + request.setSortDirection("DESC"); + request.setFilters(List.of( + filter("priority", "gte", 1), + filter("profile.age", "lt", 65) + )); + + when(mongoTemplate.find(any(), eq(Map.class), eq("tasks"))) + .thenReturn(List.of(Map.of( + "_id", "id-1", + "title", "Task", + "priority", 2 + ))); + when(mongoTemplate.count(any(), eq("tasks"))).thenReturn(1L); + + PaginatedResponse response = dynamicQueryService.query("tasks", request); + + assertEquals(0, response.getPage()); + assertEquals(10, response.getSize()); + assertEquals(1L, response.getTotalElements()); + assertEquals(1, response.getContent().size()); + assertEquals("id-1", response.getContent().get(0).getId()); + assertEquals(2, response.getContent().get(0).getData().get("priority")); + + verify(mongoTemplate).find(any(), eq(Map.class), eq("tasks")); + verify(mongoTemplate).count(any(), eq("tasks")); + } + + private FieldDefinition field(String name, FieldType type) { + FieldDefinition definition = new FieldDefinition(); + definition.setFieldName(name); + definition.setType(type); + return definition; + } + + private FilterRule filter(String field, String operator, Object value) { + FilterRule rule = new FilterRule(); + rule.setField(field); + rule.setOperator(operator); + rule.setValue(value); + return rule; + } + + private FilterRule nestedAnd(int depth, FilterRule leaf) { + if (depth <= 1) { + return leaf; + } + FilterRule parent = new FilterRule(); + parent.setOperator("and"); + parent.setRules(List.of(nestedAnd(depth - 1, leaf))); + return parent; + } +} diff --git a/src/test/resources/application-test.yml b/src/test/resources/application-test.yml index 3eb2fa2..1e7ae5c 100644 --- a/src/test/resources/application-test.yml +++ b/src/test/resources/application-test.yml @@ -21,3 +21,10 @@ server: security: jwt: secret: ZHluYXBpLWRldi1zZWNyZXQta2V5LWNoYW5nZS1tZS0xMjM0NTY3ODkw + +dynapi: + query: + guardrails: + max-page-size: 100 + max-filter-depth: 3 + max-rule-count: 20 diff --git a/target/classes/application.properties b/target/classes/application.properties deleted file mode 100644 index 41f9679..0000000 --- a/target/classes/application.properties +++ /dev/null @@ -1,2 +0,0 @@ -# MongoDB connection example -# spring.data.mongodb.uri=mongodb://localhost:27017/dynapi diff --git a/target/classes/application.yml b/target/classes/application.yml deleted file mode 100644 index 92e59c2..0000000 --- a/target/classes/application.yml +++ /dev/null @@ -1,39 +0,0 @@ -spring: - data: - mongodb: - host: localhost - port: 27017 - database: dynapi - - kafka: - bootstrap-servers: localhost:9092 - producer: - key-serializer: org.apache.kafka.common.serialization.StringSerializer - value-serializer: org.springframework.kafka.support.serializer.JsonSerializer - - messages: - basename: messages - encoding: UTF-8 - fallback-to-system-locale: false - -server: - port: 8080 - servlet: - context-path: /api - -security: - jwt: - secret: ZHluYXBpLWRldi1zZWNyZXQta2V5LWNoYW5nZS1tZS0xMjM0NTY3ODkw - -springdoc: - api-docs: - path: /api-docs - swagger-ui: - path: /swagger-ui.html - operationsSorter: method - -logging: - level: - com.dynapi: DEBUG - org.springframework.data.mongodb: INFO - org.springframework.kafka: INFO diff --git a/target/classes/com/dynapi/DynapiApplication.class b/target/classes/com/dynapi/DynapiApplication.class deleted file mode 100644 index f1b0b39630615a9df631ecc9c87adc8f65dbd84f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 727 zcmaJvj!=V8ez#Zny)vrZ|3>s@d>~&b{eQ)EJxz7GDK%HSbHW?rN)ncsp*HRsi$Ek{iQ${z?z+!-A6Cbd|&^0#U`PeF*Tv?IH z-^SkZ$QZ{5rE{v1I@m%pM4fOlML!jJ-upS_88{Et+Ye_U$3{E($ML?=S1Kv2h*CM# zg4{mbW2pAcNHQ#kO3QCW7D;>Ia~WEpiA6dTR(bo)S#{ScXV?wjd$~u=grXO;JF^BJ zQe4=Ca8_r8iTg9@uFdF&@H{zbDX}pyg^lH@@{_gyo}p!O!3vj9s;@$|5d>JjgVX>i<4%gYu$UWyE42&(uYAM zA4xV}6VSpcSqoUhI)V7&FC`dIZw1{4EL=|N{W<#FfUanQQAZn}$iG2K|G2_p%Hd$ZetAmOvpwE{O1%c4FPXV&rHz*93hQ@u|+8A1mE+p=(_i+CMCRR*) diff --git a/target/classes/com/dynapi/application/port/FormSubmissionPersistencePort.class b/target/classes/com/dynapi/application/port/FormSubmissionPersistencePort.class deleted file mode 100644 index 04b1b974a160b701b6d057df9af8a9a8017a0411..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 271 zcmaKn&1wQc5QMA!TcejegQtk#oI_5zc#32}@ZQcgIsn{IxEM?qQ!%TU{N}XtE@$;>N!jHh!Ah;) z3IoFPk4}zD7AWEUoq7d}tWtyyUOR~Fcb_M^M2Y-M+N?a>w zL5hdReDG%G&3pfNeFJcb{R|1=v@)HjUo=}K*xFWA?3K~N8s~-5Hh58nMW_74xbCi( zSKP}CTZDrpKeK3AH{xcol$9ss{ST9Hb~O8Cl-?=b6yKfTRV(If*UOoyxRu56eOx@3 z{>jw0?6{L&x}K0V&ICKH3B$)IMm;e9( diff --git a/target/classes/com/dynapi/application/port/output/FormSubmissionPersistencePort.class b/target/classes/com/dynapi/application/port/output/FormSubmissionPersistencePort.class deleted file mode 100644 index cccb40532a709ce72dc049bf5383ed80210714be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmaKnF-`+P3`M^~l7-N41}Y*X<^VL%qyn*0BzkAof{AvHAy%KYxC`e*n10d50O{&TDkTTjCrX=R5|_EogFCOLIE4JTpF diff --git a/target/classes/com/dynapi/application/query/DynamicQueryService.class b/target/classes/com/dynapi/application/query/DynamicQueryService.class deleted file mode 100644 index a540a479c6b7b5d1c73cfa4f1c48576829ba95bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 499 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 diff --git a/target/classes/com/dynapi/audit/AuditEvent.class b/target/classes/com/dynapi/audit/AuditEvent.class deleted file mode 100644 index 2bf8f0202268df7345e2c735efc8989b02ef93fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1454 zcmb_b+invv5Is&d2?^Wg(hH;|K)E*C%W^5=AyuUcia<&Msa4*c&62t#yQ_`U(huQ3 zKq3P1zz6VAh_QFmrfG!wz>7T|&pC5uJpTRX=Pv-;*vKJ)WCn(b6w(ZxcY^+a2z;?RU*X*O9eq zBa17@W{@*+6(+-?<9F@WiN^zB^L|SZqgsbt+)>O7r4gz@?(opaxdz|9B+Qm+txf z(9t9p9-LwRJo8B~WH0Qx^1yGs=W3{=8&W3kzf^k3#;Sf~+pgS>XKZ%(+@miNh3x3@ zV#rbW%i&xVhw-N!W_UjCyQCHxAEJ)uZ~ttla(lY9uY`J|{Mpx7SB=IJ&3l6WtU)7B zzlp4p`VV@iPXLCSWG8To{4}p*r^uJWZ6pZ`e5Sh;?Gpo@D+MHRht>t8X`Ld-G;)+Ej{<$AB2kxcmu@y9GTg&`IuR`%;2|YcmXfEWR5Eujl0aRUxYq2PF1*^2G3T)a{f|T_QnJ;7{w9>S8&S_N< zcPduJur?7qH4ZLM1g}%Z#D&a-ad2efgc5Ph3CaU4vWra)=Mh$fzUWf*o0-aNNF5|H@qxi${ zRHas+`AQpYUklW?wg&-P2z<0d+(Ia@ljf5+yD;)h$8wr!8}B>&=3E(@=+Y{qip?sN zErh zZjz^RJdlNU-`7FUo@oBWZt_2!qv+0iWl!?#qb%e^Syd3DeVk8=RK3-XY~^O-cU_MK zT1RZhyS%hMHUu{Qfma|rG@RVQSeB(CQ|spl(dS5N+#HXV8^BY|jjZyVQ{_1Zdcn7W z`@CP}*Cl;}z88Ilh@Q{jM>{jzj$X{riB`QC?p#&1J(q(f?IUtLMu0Ue;0clY#97A! z-n^V6;URO})2oz->g2RIeLc4|s8=Va$6*0W9#cWV;5E1}V9FY8jTHULuVa(GP4O+# HJw@;XnxeJO diff --git a/target/classes/com/dynapi/audit/AuditEventListener.class b/target/classes/com/dynapi/audit/AuditEventListener.class deleted file mode 100644 index f0be8cb6cff817e274e6747a3c7ed34cd0d17842..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1800 zcmb7E>2e!I5dOxJywZ9@Y{dsj2sk7LNeLN35=f8}5I(@Laso1@RQ#Yu(pX-zno;eJ z99+OV@G2aYa1=ZM4@J?lE7@}5a>0+C?w;-G{`&m;pWpuiP{XG#CXjKE^^n6P!}Olm z7d#ZI%OAG(WZN)IE(a%Q0PiiOFS^lmdgH7tPK+ds#~?z<~=M} zQ&xE`fnaaXd$@p$3@+WSreGLmMm7c}2zg!f69bn#yo^^E&XMYdBB07_jSw@;jo#QO z`0#&q3YYP!gDW1cVu`BoY?>Idf!fgwrPA}LzZ|Y}^>tCf8@91- zF!(0`AHzK?z}U?&lJw?SvdY_eyh)`<8tyCVt=Pp|xaHushdX$i;Z~Bq{}&!*I2QYq zoV(*dkAX<0VhD7+d4@_Z?&6+FLJ`N+^7BK& zaQ?Fa^DH4j<5j8vQtkWT#3oujmfNeAW+? z+#K{;GTIVkKAF_E2)9KPSb2DvHM;@%Tk`)y6Oi%gU78CFES64tOKr=LlXiJ9 zTsl>gtkiC$>eMN*rCzT_*q*Vl@IAoEk3w5saTW|jbY8;TZUQf5hFel#dF{dwBM zpznfRtO-Y>3x@l|PZE7VG((iOG@b8}#ECMZxyndjNAx1cNWfvt z8^q`F@nOW5lW-`wV*XdW^D`Xlk&Q*|B1?X3Cj3Jqb&@yf%aUdV4~cUVE{{hj{0oV5 B;3WV6 diff --git a/target/classes/com/dynapi/audit/AuditPublisher.class b/target/classes/com/dynapi/audit/AuditPublisher.class deleted file mode 100644 index 3108d474fa61e5923a3d128737a46fc80e8e72c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1312 zcmbVMZBG+H5Pr5TJ$n>efue|t;9I!@7eAnhB~2Ql@k3E!O%oHpY_Drsyxv}}dniB4 zL_^fXAK;HN&R#2}S`*+yZ)a!c<(YYA`t#Sf9{}pu%prxeg-jk($TBQ@s^@l&0v<}2 z#~rENy7}(KZD02HMZ}N`NAlx_in?w;jAYP#7xA9>prZG#rvfcLl4ltD(&JjH;OU_V zMnS3;E-@@kPL-J2uwdsgjXXnkTLx0s7@n6K2mFw`J`cL?%l3irboG>`sSS+(YGN&Y zcbA9NwbnE)qhO(!#}&*nY+a}bhWxM-31Wta<#Tm|aM+kf$-;su^eRK~@9G%R<+T=r zHB7|t=yVItUNA#uM|A{4p&c&zRe=_2hhWFlwf8wwo%BJn>8#Zsx{!Z__lG zVewT=P3?)6>`S7o9t27!OGafn6GyO5JrGJ$W8EFq3spd@RIx&vKTm%GM4j1vl2RmJ z!y?kSPPaboV1~|;^BL?rtT#?&ed8Fpub4^U6FsD{L|>cSfC7ao;s#01zzH{Ti*DqO zW!$E~Mp_}sSeLMhJLG?tKE^Q4P}&!L!6TtNe7m_X z!<1qCxzZ|q!H}yi@8(fp2$bQ;q3Cp^<^3nzh=j+cC8LCIccor`x9K78Kqna%|5>VZ z+we^a9z5g>cj~fm(-tVL!;Y@X6WY8RU27Gv>P-ghGIi$`L-7~rTrjCJ43l)LJ{o>t6VSK0lxrqv<8g; diff --git a/target/classes/com/dynapi/controller/FormController.class b/target/classes/com/dynapi/controller/FormController.class deleted file mode 100644 index ed0d383f4a2608a1ff421cf07afd284d8138432d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1538 zcmb_cZBG+H5Pr6_96hT*%Zt4D0wT6WI8iVpB_xO;ekekyX`+6*_Lj1Ey{&h9Apc4e z6{Cqiz#nCty^?Z(7&Lyk&dzjZo_S_x=f}^l-vO-RaT*D98AxW3LN~)yT{bP}(6d{@ zs!LD#(sj9StxLbT)=?P-cgRo)YfTXZLV6YM?~6KTD3)XKLE9PypYtu5=t0_mnZXrg z7#5`8u!5E^yvB}iH~E3|-$WJgcghm;OP*Dhb=&2-3Nk&DuETwXbc3t*9}ENeLV3^L zx2;eK_t>3auA$dJUk3fiGUP8?AA=caeo9kkDCOhK93{`N+U9RV9;nj!0t!_F0}P`v zU>&~N65BjzNiX0%7-AUHIJeu7iaT_w*Le`^gsyvNB8Tf4j9`?Zds%owtq_y^t2UTx zdkw3ibmxxYBgD#O!DQY@V9M2t#_A-N_U znuOl6@c8qvS>yf-yXKN58{JdY_J!7ujY+jD0*2{$&I{*`vKxN8(Pu&~z7Qh3!PTyG zwro9Ciu(kYu84+btI(&is{euZa_lCmQaGg*Ds^N#^pt4wst5!TUiCbwY(=ky3Ro=v zZrl%e&8i8{vFwhowIu_!VYgcPb{Qs5=j?F$$K=OT`$Rg2lzjG7C;t3;^}v`F8Txg; zF7)l@POpeLJ!K3_m*z>2L7i+Es^)J(qqld`rPRLdhE!9^(rXG6wBp8T+tCQ>B}b7|6tM%?_>^(dyu)&__WJqR{yWIZOIO(jQThh1XyK7JmV|b+|_W diff --git a/target/classes/com/dynapi/controller/QueryController.class b/target/classes/com/dynapi/controller/QueryController.class deleted file mode 100644 index a787b3e43529e3efe30749e57c29e4b302164910..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1820 zcmcIk+iuf95Iviw2{9>@6aticxurME9i*U2g^H&DrA3v1C&yXRg~S`y>!JwpAAAN# zKqZj)06q$F?9en#Km-XM?A;lkvwLR7GvB^{{t93bH*-i~B#U$&qsR!H^>x#&wF9rE zTwe#)=te^t_hBSW`%c#un20e=3-0%S66{&Wo<=T1=xjgf$=2nlVRlhG7O(Z4F_W=1$J4vbwy$(8ljcyRK`?p7EN}O2fS5R#lyU zRAiXHxBsDD1F8n19zgW#j+Gx?iCC4UTvMT9Z5M+;ThA)CfWWniHgz{_#clO0j_j2- zFWgtM>Q+@ybGs$XL zZya9f&k1l_*V^RG4n3*jwsTf>WPEv7#XYe@Y2rbJs&9yl50b+LU6SDWeVC-?auy=kF``+=( z2#)gYkOv&#TEsE#W;!e!#|c{G<0S7A$!-d#iFT038Js2m9KCsd>v+!7Q=%uAA_bV@ zGtDQ(BWJnpA#je*{8NY!7vR!27Hhu9jliYkJ%P(4#QGPw#>$+TO&pk+{Rr`%Rw~h) oA)e$!Z?S{w>UENAa1s+S${!Tt1YAj|R}&ot+Sh1b?`pa61B#gtyZ`_I diff --git a/target/classes/com/dynapi/controller/SchemaAdminController.class b/target/classes/com/dynapi/controller/SchemaAdminController.class deleted file mode 100644 index cfdb658798e564c435b845ce45dbac0373568a3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4459 zcmcInZC4XV7`+p~Kny0Nf=I1uWDW(1NB_+RBn0!fLV`cQ<-yPrvmC zwdd4&Y|rWG=l-akJ~O*)CNG9y^+U3|lX>R3&%Jk^o&59fAAbRu$FnFR3?l`*tQotO zUNJSpv$gq(xyId!ZMnP`-3-x1hwC0U`fv!*D0<`QLyTcU2`ku^=h&qZceM4w4lnET zM%lC$!%>Fg+a@m=xA?YcnVxA|YrJB+re{053>S0CQcn1Tw)Ccu>|w;wAH|V45=b&= z2aIRvcJ=3+;aocRM1QVpCEY4&cekGKf|t!S4@Hq;IIkoz?6PiJTG=*usS#!j3`gS_ z#1O-wSyApBLpuFPS$5rXOskkxM)q>&V;I129LF)j5O=vJIat-p1a?pb8!VB@_u>Re z^q^u0i3Bev|gzrt4*eDaPZNz$8^IHC}e?YDJZIvYosQvq{-$p{&L*uJGMxiiW5t zE;5WM^PBaN5iwlAr8s5;xltll@G26X6kq3JxQ6Rd+z{Gj8Iq08VCYI`^2B99?uQ0< zGAyUnLYpDf%ugOu!Pf6NO5MFk#$rh1OpC8p%Uj&JuWyxTB$cxZdMU3vrg#npyS*LL zWtdXe+;2ltk}iX9Gt?t#V{5_43iozwjxn8OYwl!(!DIzN9TD0g`eZr88x6Hi8pH;c*E!f5`Wge``ecWWNhb^{# z$28ST++?gpR!{rUG=5^Z()ohAx3jm~ggkyr zZIb6g3!?U6ec^y1vx-1@+cdJm{8u|J#P9Jniw_mKM=iaf60-M6YVmD*(?;6~0nG6I za1fuBn1a@u~4xTh#yW(;RLS&L!kf9KqXFCVlZsy}eI z1W39imChk&G2Cxqu}C(zf0%JMQIZX zEjH_9Z#=8iUi-B}QC8KVF+eV@%oS&j*t%VH3Vg{Fr+|@`XY6TlUSYV_aZjK_zE?Y< zQym8hm2a(DKk3(WapKopdHTm`Iu%}{zZemu#GeJaONk>QUHj;CJd01!gE@N2(Yy#< zhyMh7*q!Pc{|!A8uW>knzcKI%AN)eUMR1e84^bR&44={WkRL;TU>4|!qOpiu^!w*@ z-^1tuSfWn^%lLw>N9d>9^!aiF%*7o_3Pc$Vtk4a^D((ho9#fVs8XKLQ_#MZ5NFNGF zlPw{|B#aXjJSt(G@`FQIqqv8!C;=@f0Y)Uiz6cFN0l5}}Tn|CsmmvEiH1I%z^r7bQ zbpUmhu7bFsfU(gCe7vVw9c@0wF_PenLfue^aVWqTP$!W2)O{18df0$UQs<+3gbk`$ z2suZ1M5RZ46lVmi*Z7#B4vjBjS|W-2^8+M)(r?40--Su<(B1cV9Ms*yFc~t;lrYSN z7P+RCs)xg>hp`Er)(xuO46EJ>0n`jrXf%ug9-yf+%qKO&WXLcrAo*fkqTm?`tDRv4 zz&gX!KyHU1YlbPdHq1^-!wAMMw>8XlGRzHyy0 zHNzB0*g-rc_JlE4=qmPfV*C}Zj!(Qq&-mm^WPYU~wXq}=K@y=)60&&-UngYy3I*vy Xk_M8rL`g1GmN-)MY|*nFnz!;FoLH*A diff --git a/target/classes/com/dynapi/domain/event/AuditPublisher.class b/target/classes/com/dynapi/domain/event/AuditPublisher.class deleted file mode 100644 index b11520d04e687cd48c1be4d769d074678929f031..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmbVIyH3ME5S(>_O#%TV{sBS5bu>muX{d-2$r2UK#y&Y0*>~1u9Vx#?!3XeBh$R$2 zk%nTlPwmXk`^W1WfGN&1B!sInw5Hm5?wqMY%g!6SwO-7$ubeFUW#cw08#4?E7i-?K zY1r3hzFgZ<2wC^NLAbkq`WY7zov-slonBmHX58gB&w6!cWfiIgM{cdyxFMumiVI#7 zRpMkv7*;Gy7!|JeEPb?umwyo6A5!$|sr+FtYg~jrmiEy#%60kIjoYtJQvzY2Rsy8v b93e%5OsmNN#~Mb8vEoFL;8d3<`|Ru!Z18Pt diff --git a/target/classes/com/dynapi/domain/event/DomainEvent.class b/target/classes/com/dynapi/domain/event/DomainEvent.class deleted file mode 100644 index 7bb69402ccc0445a6133e3acaa85ed44a9e1a0de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5077 zcmb_g-*X#R75-M<)vlzKt+;j4ZITiiHIe1G3MHjx?S!^Y(wfRis9hJ*0^LYkTd{t) z(#l|dwNPlG{3txpVR&JfNnSDo%+SDe7zSR-439i9!xK;Z6Dj4pd#|LGypvI97)!h7 zp7Y)B+!>ct*{;uB)O6SAI1tDulg}U{<9bdzA zdEj9!XxEyXi-L2~#*`pTvqLS|yW}-|p*~<^TBwuVj^AFX3e~+fW^j7 z!I7jwQ!2MAUj4im`0H$i-1pgVaK8p~$J?v7yz1~E z&t*)QM7Kw6d5se-8@9(i$Nib-K zW-g1`Stq4^peT%$Qbmza*|or{Y;!+W*=SsOc4d`Yh{m!{w*5}G&Qm8HjX)+pI9Rx^ z&clbr0Z7%8 ztya(p+TIS+gh|`6@Er~75n!Rerf0QN#|GmUEjfN6^~Wz7YWza%jsL7RJC($D)A%0V zF!83?9KWw2KRAVJ&E3|vUy@Ul`{hNi613WT8s3TSlnN+^`?S}r*8NVt+-hxicNQZN zQ1uwm40ROeUkv<(2)S~`4MQJBkcyBSF~lm!-Oo(y$drwa}G*`${dkZB6YP$4kc+5IrMpc4IWm=(foyY zC)shGh`P9olc~_j)p#elah-^wyNi?Q(8&vUF)m#9jO#>H^j)0HgigMQFR{!-25m&w z_w>W=&-;Vu`j7z`n z?w}GL2{ZT)s@%mB$m5^zshdC%|G>+XbUcN3u}R5bF8u~ul#;09r>Idf(Z*Z2PRYX0 zu+6{wk;2c(QKyu~ZCpfyQU-s*<7iT{@h=`)ElOGZ8;7w&X)>&QnPqoW<;yX>!ZEcu zmojEd>kcMOSRde^i3C5E_5tpbV(KG_y}Ye3fpqaxStd@H(qii}M8=2+Mh_`@=E*S{ z{RkS2n>bYWpMI(~s$nVe*CjzL#l%(mN|E|TZgELJ8>Zlq+~O7!(8|r-ggJj3OD_q1 z(ba{)(Urv#X(>(ft`VA;kzpsxF?y!cZZb3_`zGe8>~+R9LlaX}^)h>=1=k8qR^P?XIrX)`}j)i#I>O9K=(lAkv=JB361&cf&Tao0M!;?9cKfc<=}K zqr{0HD2Nvmn9Mu8Jd>H1*QaLy=h%$Vz*2;ug(gCVom+7ycp-GouWRj8DF^qdoI7PS zLwKgNa(#xa{p8y>c2?=UcQA>t%y5#Ll4lDo=89*g6iRdXMc@M>y2Z%2p{aHDgB)C# zOfs|+rRAtDr_$btX+f24Vp35|gjHUD76Ug^6~k%rk6t~7sFYPD@^|{LF&H|R(#=eE zC9Ei=la@NgV^iBy4we7X?jKVedlvQ((MJ7YbZMugR!H^f_4V-Z=n?FJvIb&`e*Yk! ecdk;l{oz6jYoy4Jb+n1pp}fgRc<=_r2D)zm!gHbk diff --git a/target/classes/com/dynapi/domain/exception/ValidationException.class b/target/classes/com/dynapi/domain/exception/ValidationException.class deleted file mode 100644 index 28ddacbbec6724cc448cc91cf087452b538ce8e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 628 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 U6?oirQ(~DkpJiOdLu?@XFU|uRmjD0& diff --git a/target/classes/com/dynapi/domain/model/FieldDefinition$RequiredIfRule.class b/target/classes/com/dynapi/domain/model/FieldDefinition$RequiredIfRule.class deleted file mode 100644 index cd6931bbd984ef2900355c64f04a0b61824ee89b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3060 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 diff --git a/target/classes/com/dynapi/domain/model/FieldGroup.class b/target/classes/com/dynapi/domain/model/FieldGroup.class deleted file mode 100644 index 7e7ea67cde265d41d8d05f5eda7659186e42d9a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4116 zcma)9ZF3vd6@IS0t6fR!mpHMBLJBDeW6Loj^bO=B5S#=IauVX;w9ppT(#GCc+7-L2 zP`3q!8HQonFYu|I{s8hN%)kJFVHgJZ05kjnen9&(p!B(WSJKMfLT0?$bI*Csx##WP zv;OA4pL_=36kaJ{1fvEt3p#QFlUMC)cC}@Do7M9hSDi*AkUQ>rZgf&$bZ&k<4-y7_6roQNGs>49nv$U-i_Q=weE&dtUPUD2Db?q*PI}9eNSM2 zYL^u+ayFeHMwTobk~WJSCuqB&1cwFgb=bnsaEE}|u)Q-cbnTYF^jyk@%EHq8GZK8n z!q0IR9ouxG_1=!tbMq;DZ%>)mvW0u3?VKYG$J^a&VGi?jm=ylP7F1K@=Ye&ZgrjWR|ICWGL=e363rA_?O_X#;FQ2^ZF}2U_PvH3 zU3Mex>xGf+MJ%wNHkN4awe_Q%Uh?;X(j`i4GqY>%re{apfT5R_PCt9c_u4qQ#9mg3 zny9;;bFSOoaDq$rMl0@azhSr5?ZB1mgsDYaE+Z?~fBKlv_UxV#{vRidu-808t(wF& zzs{G*RG2 z{ev=-E^x0@5;aa#syPLOKYU#zhfqNGqb(;8uw-J({X;(%vj^*ZELPV}LCMsj7z@-* zLn}(uTTaBnp*u$bhFCEub%_YY={*ji*awpZ;=(h2&7iz};V7}*N1gTM*9E#9o= zz+=6v95l*3Z;IvgwpMw_yczkb+D!49-whhhSyy)9L|oPQ-n~!WwgRP#UEUpSXWb25 zHs&eM^CLTwx1Yd+bwAjwh8=kqUy+^iq91Hmn|5UL7WX#&=0>&Q2TrwZcRGYrPy3B- zoBpv^Cm;3wD2xKTqdF}#!LpnlY(FRCIU$Z7QSnG>5RY6X#gk+zv=d@}B8RAeF0L7P zQC=E<;sF{=4%fTpZ#z{Ly}C!v+KtE$b_D*JZmcyVY8ABZv92Ry@xMmRoihI-!BT2;8$LrYu(tyd-ePk3-o} zDlQHulVb-QQrM-cDD z@H70CV!*&z{#puv$M85;LQXgS4l92E<6R0zFiHONkBp0jMCdY2oq->$S$%)wHIh@C6oa}nq%SmZ+G*xHSBzwJ7-FSg$ z)j&CZ@huNFnc^lYB~Oug5o_E;R(2>Q2X57W+3J1&XJY>^W&3~dR{d9}Chh;BwEu^O z{O3oY@?U(;_ZZ{&cA@e%bnV8%7cl4ePIawT12a$jNUI>t(RDVG9OY6d}-nprX=$V@;+$xMM3Yk7he zYlTu?f(i*JUn-SZ6_|@g*+v+Te#W z-p6mr8$|{0;CG}nqTj?bq;$6L-|#G{99r1M?@1X5;NTCWOuWU@^hZ*8`~#2RIZ_4O z@oFmAy79y10;_-BgmaZr)@pC)?;>uDBPlm9s+jrkDc zk!Mwx6_sg7Uv}w3p!d_DGkBSXv4{>mUWAi&T>BhmlVf7 z&*@cCMqI3aqwoV6ngLS?76?N8Kof)Yh-6Gd?*V!kZJ3q7aw*sVxtp7SjbZQrpCL$8 z%snatt!x<;nWpXj%zJ{#kc0JzEGnN0pT&>yAYXU#IY#mm<_){&NqP_;Ny?z{tjH#8 d!{b{HY@hEAACq**=LPI=RUq|e{1q>w^gopmFpmHL diff --git a/target/classes/com/dynapi/domain/model/FieldPermission.class b/target/classes/com/dynapi/domain/model/FieldPermission.class deleted file mode 100644 index d880be176b19324e5122605c4b5925715653dfa3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4749 zcmbVQ-E$jP75}ZQ)vlzKtT=H}H6f%_Y5kE@DS?!(qtMpGt-+3s9TIR0bR%u-jpbce zS|^zAQa;vN9XZY|rLEvMUcJXb-+X(MkQMQx_Di(wrtTJFfb+NmEW#qqOs)y|5d)86f?%h+7)58z0@IX%X`E7^uG{`R zXFW7AnTQhALiXY@19h1&XUl9|3H!K#4~nlr-=MBi3Nd`hz=y?9qTyn%NMd=yz(??8 z=(5tU(}8%_UZn&)W8l1iCCt@cvBYx0z(-|*GA)u(uP_-rZQvQqGS>~OyD`f>5BM=( zz(veyc-Fvkm>-~1n4<#irq$lDm#!;#B(0Ept1?ESe!{>478M-XvNr8m&uv=%RmbPN zZr8V5pA>jG87!*j-dO*iW^J!q%I=YptIoP>`8ypJCutw;jmA_(43&&ShPQJL1rZC;lV6-x8qD>YQ*T&RZ9e! zwa-~@0mt##%TBBbq#UUt^76!cgEvuhhIu$Wf5YyOqEhFYTv&Rb3B+=s?A=hjbV6HF z6F~ac70VW4lBzIH^70BXNlg%^e{c2T45$K7;<{3BAdEDiE3Nugb92$!jyR+)ugouA zWD$5ea~-?8)8-XF5@cAYC2}d&l8Y|X63Z*rlIt*P1M}&=7oYUPs<+c=+H;N&`cOcX zen)srIsp@V#`FBH-?6qsf^~Jgte`ano^V3hRc7>a$D?3 zwFS@H+}WPld*~CI0msYaehU2g1U_yx2~`wg)@rv`+2nZMjd|C#JF{)8+qJtIUgZt2 zC#STfYIt42@%M(3FkxPJh`k}hYgywr-vcORq=N@f_Uz!vCJhCb0(pscHsgUYyKrD* z+vW2hZF~XY_cBLyJ{3OIskfl~I)HtW-(r^U6@D8b0IRsnks{rd--FJ-f%YpJGw3_( zsm^S#DbA%~=X|O&TX2eVW!Slp>dY?9^$jok;IMNs#W^hPr#LsecS?{W!$FMq48k{; zlr$c^GgQD*N)Scf5>lLx53it{>U;%Pqve}?3a@fg(|4hzZ~Wm95pBHCK^Umu)AUpM z0*49*pGgl{+HXi9b1&p*5OOU&WM#i0=&Y$%H38`nNUQ1z&^a?t&^fbE%?qdyf%4Tt0%V#+f=tt>76oKP zAW8{P!z>ZhFw51FfXWf5R4vD#tQ`Bj6nrBrQhfH5Jep{+s^j=4Y+l3}JdVHNI&~v> z0)NFir7ZP#u|Y}28h#0fQVzTLA#PC8@HM=OO-ed`!e^UO9zSQaElLIa5p!@U74c_0 z1&@+}zq9{rQ!3#fIEt4jmC@mP7janA|An#!-FSyGGW^q(ckn+XZ zMudKn`N|!o3P*--$K**><1#UEn~Us`&ko4PUr$u=h-7XtUY-%}S7y#<8^3WzK5p*{TVYWhH5sl=)%6xbk_tEdbkcne+l%vmKLb|__V96!cQ zmPXj}3T{!#vO{d(3zSqcV39l#wtSaAfWJsd!_RO8U!tVTjw=n6-zE9@{|jB=8-wyL zqep{`j1D3jnB+Z0#v_Sw02qfF17b{eP!+*)30NOFtc}3hAh?fDF+?u<9+$pXx-D|# zKVz6X!9#yRzFGNSO}d%xEY_EMeS3w)l^!x7T;t~qKWF(l_gj374>Nq6q}aHRj|0Q4 mJ^5BP(cAK`Fk%K@ROu;w!`8u}~JlYDrhu83ZRR058PJ$Z% diff --git a/target/classes/com/dynapi/domain/model/FieldType.class b/target/classes/com/dynapi/domain/model/FieldType.class deleted file mode 100644 index b84983fa69c1303f213eaf9dbfc0eab69c08ddce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1361 zcma)6T~E_s6n?sPYgap%Lr^|MJ|=8KnFxqD#C@o_F8AfBFg_g{%yZfa$7RkJnBepuEYF^<qZ)2wlK85&>zKqJiRKQC6C-XL&VIbGcW73d2^CYAmNBDY7Gdi1 zcR0tR!IW9D1+ zJ+o0V_H6R3{iU5~A36&N<=m=amyL$Sn7VY5W7LT?bX6Sz!5y=C;MQIl4T@=+4H`sh z9#~}5ut|D_JGp@la2qwtF>C>T-P(7IW~)KGVkBCoz1yhTT{TyG3Ng($`e=PKK^1kk z)u@_V7Smwh*Kt^6E0A0w(WmGb$;nZ6G61r)=-kqFb4we|EiE#)w7o!ZjO{FCdMSPd z%fz!vXof8NscnpW#MmXq-xCt>i0(fAPNeu*tii+MSIDvqH6+9?aOV;Ni}(By|Cl^l zCkpF$LMTC(SHSvP7D_t@k&`Wv73q~6TbMY<-4FEmFD4lqYzofg_uy#|*re+jPe}$< zwuV%ajg*E&cOVw@eSuIB+Yt4N)P}5Aylqmq;%g(ISL8N=dPQktNWVI=LjP0AF5kN@ z-|lB(3q{3q#Lggcupn_Db8yegfy%*s9|r*r7G(~C9K;n4hA!~n3?ppjj@pxu=~+U6 bzR(!WI!|~7tPwx*B$KB*Y#JGg^Wgap5ZV+E diff --git a/target/classes/com/dynapi/domain/model/FormSubmission.class b/target/classes/com/dynapi/domain/model/FormSubmission.class deleted file mode 100644 index c2ae556263618b2f011960bba40e843d05b40e99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1231 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 diff --git a/target/classes/com/dynapi/domain/repository/FormSubmissionRepository.class b/target/classes/com/dynapi/domain/repository/FormSubmissionRepository.class deleted file mode 100644 index 1a71ee9e63ee8b80e1706439825f362677986b07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 893 zcmb7CO;5r=5S^_+1rZU&&v^4tFZSdKVuA;Z35ubK2X6~qaLKmYY_~-Ing@S?Kgu|z z%7>sShds>9doyp|&d2B5I{-A`)C7aTRZn`hJN9Y7ZC84f`?g|%47rwSY&WIyoT%&Z zFyzwjObaGt2$Y9(L~TL+f!*#7Sx*zlgmlCRbgb5LTTi-7{OVY{NDIVq_e{S?_mL{< zG0jv+pwwT`M_{whefMU3=Mu22)=ZzH754`?ZIX&K7j`?)xDpjL0tQEX-r)nE>PRK} zQ*rBQ)nDTjGuGA+fbd5 z1)ekNTVJuiz_b=-ONiUF;TIy3?%On?H? zrrK%C#jK>-VQd3qHY3c%5p$4G#z3zAV>uC(KaZIg#s5RCSK7!GX``0Z7v+$LpcyF)UO3vW&@=y zJWsfeF@8=!ltHG;2VA$f)7I~vy4X?-vK{U6WS7XA=(aCeMz934aBdO-Bm`0 za+KYJ6bfhcpp<#9XAMVXs&ns!vSUyUR7dI5d2fw;$C}d*45B7ioWc77RfxGcyW>8T zD=P&+bE?8(y-6BB|lfoQUc_p+_akZnuaE{PA~%W&`kd?;gg zA%YOmgNLRw{bs)TrZev!i#Gtcg|iR>0@sO_l)or8L&~*esHhcYj)|ZHZDgE}C0dJG z^-C~bVj)xsw5M#&XvS1ZAI4LWI0BtH%aAiC)_DXjE{A1g?l7YxHj6ggAzBx8pFG(} zxQXVE%rGgOFqS~o6EOmHn@oiCMkB^lF_#-bz;1E&mYk)S*cnvms>+7E=w`ceZ@AmN z)LdkAfFk34@r(+cZ{DYtA`>IFn$s&GyOr1N?k#d>bUur^KP&k*g@{0y78&=PK&`Y0 zy#A`;uix{(N}I9HO(F)E`H7wHS*NRFKk5VsRQzfJ1b(|}P=^3Q?==EAC@z1R1qg>8 ZK7!T?ZdKseKNlerN9v6#k|yl$Kg*xhP%%QG0_`u_!JfAtHvPsIjJrKd0@`4t95&-7SU(@jWzA ziJJHTK9upyZYfI z6*ZS(cvYIxU1JDmvXvM{5Q`$7z$g+7D>ci|>iZ^dORa7hT$-9A>^)f%+NNb2mBkt?NV$XbQBWSzT~%}^+vZf~PcS|3FcV^O3MxQH}EZg5qGkv-q3 zV3^C4yqG(#Y-!uPtp~`GbX+}KiDH7`&Pn@*RTr(kK;xLgr6?{ZFpVo@{ZuU}TJ`6) z)oC-t8p3^My3*Zen8;*(0A3Bst}V@m9>+MYsR~_ZSnlEt@&k~MA_xko7;Z8YPof#1 zTnt*~JcY?t7$Q$8HwJAOVkjG}2Kiy() z3d!1sGw~0a+W#A6yli#sn%IeA%Ay1Tx5yJ<>-Gd6F*Bw+}(_7J9rz;wcER z5M6_W0gavz?vcoSJRrj=+9pLFp)>gd<8SkYg|C=Az}1g*;{zJ@3{HDsa=v5_OcG0Y v=<$;tECoG@B9=*4!AkUa3tcc2>k=^(pdvj!phv`fOjHOfctWRgsRMri>bEA< diff --git a/target/classes/com/dynapi/domain/service/SchemaVersionService.class b/target/classes/com/dynapi/domain/service/SchemaVersionService.class deleted file mode 100644 index 348dc42a735ce5971a7e3301e31e9653d0c195ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1106 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 diff --git a/target/classes/com/dynapi/domain/validation/DynamicValidator$1.class b/target/classes/com/dynapi/domain/validation/DynamicValidator$1.class deleted file mode 100644 index ef31edb9d01be89064728f0be2d77079ee157b9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 962 zcmb7D?M@Rx6g@*rx2=m*1VQ`)S)nMfg5n>INr6SH?bful#_-2scLIak9kRQ{@I?Mr z6Jw0w0el7D#dv2+QllnnvNLDS$=rL-%-sF@{qqTc3f7AlLdHPW#4vIUv!3eO{&C0; zrR}ROm!aKNz6k7XDFVNJd?*-lM?C0>m|?!WxKsOU!2JU9C>SW3I0KWx{yl;cN}nfE zh4vQJ?n-^B7V5{%X>ie@&f7Va_hIXn2I@MVdqbQNxR=Zhs zA2H1RgI9eWV>da&VaPx50vXEWVd}9%DL3i07)EO{6mGA(E21{v4M-WQDUSyo9!bql z#gSIRz1MWDr@Yuwy~q>WQb$bu`V=d=KIL{oFHo@z_v#|qSH6KYhUNcyR5I?0IC-pM zI)hmaLlJETJdQ_yl(HrT78Hd;N`k#JOza zEwWEjI!SbRK&Of32J{M1V?bw!<_C0+XsN&Z9damO9Fv&96z0g-1QxJ{b;5h}_iPb5 zc!m~X8?WFIW^jw_)MIjYIQJM-BOV!X8#d5{=UZ3doalJmSZ!cc;`noDusQ=pg%;Y2;u-@;x z-*=nNoPG9V?X}nAUu&H+UwGlz6987L@dyGavJkXUjF3Y4HO_TTQ^HB^YTB^l8n-X2 z5LyvW#(hg*fyqNxW&?$G-VXXA;cPG_jqciR!qWGCIH`kaL8^=L+Wvgvqo zS8MI&Qj}wcg$f%pF^k(w&=evH;ds_fJ6U0&YH_V^k9M!WwG>r2$HHtIQOr@On4plG zqF@a;nJ#xP=}{nCWyM?@=iz*XU{ZI_%F*_TvDHFMVbPg_8cg-OiKg{&H_^Y=-6@i$ z%p$19d|JhF6Y6pXU4_YPctWb6*6VFF zpi$wRL1(wSCY9`SvRB8m18iloPBNQOSnlb=FJ2=qe~%|Ye^)7*aG`~ZY%Img6sAqc zk6NX`$f3eQKXqdQt$tcwmmKY48_gntNIcW+UOOC5yZvH&%WYhW7M>uUA=mv{W=QYvcn1y{bdT3g?Qa+;c|thGdFPe_PIma=sjzvF4yJy!gM#x z&x}6EF7-4aRsiV)^pC(J2FJAZ~R9O?l;mG+w0{v zu9Cf`<@V|xPPiFSP^XP9Y@j_-vxb2MwEi?vBpxZ)^jb3b0xZv-uAP#M4 zd-=LGy$bWsg1+!}wT)L|i}8z|;T>A?H13L=dup`N@FKu5Us&31<5j{>@#^mG)mxyWG99<_;V0oaD3XcoZ?!J8irh@1c#;jXLAWso=dfHN1l{PiDT?#{2R! zoxNhT_t+Q}qYZU!>TFxrEgQYx#=ZCeO+TAzi|<PB_^@vZI)G7`Wz=Ps2`=@}vcdi2dQh_2o zD2Mx~jfeE%dV0ItyRMMPc+kej#FRn_H@Pc25W&ZB$ikyG4&xJ(tjCa7DDBtsBPI_U z7hWrCK4oKE$b{p`tRAXB5J!Z~qi6W2=fxF-=_3^g$(MyAqK_wRd{%;Qn40T0dalNk zHvUP%7Nc|ahg{)<=LY#G{Wl%oV4)IHvR=) zV62;nrD@rxX`_>6+Cp2gDDl1lm(JYi*RRL357XBSIO!gS9XHwMGR}qZC4~k0=&}Bk zn~5b;*_fu44^FWmvx$YTP<1cDLC;7s>+JQ#xu+H8wI?-;#k%`5Vu?$%qbVPJt zxACun&(kP6aRkjtMv(HGHok>#Q^Q0B*CFzqI|;K*Zxav5!PW|d@f{ogj_(qsv#un1 zPN5*E`6--|`m@Q&35f>Qox{mK9o087|A;ePa+xT8A3w10A2xo7A5BuuB<5%rPI9DE z^ur+M2kQbfMI%2^sLp{@D(S{jJ7Y|2QhR70E=3gMA%;!l{h5uQ;}=GHxxA-+r$Wo$ zi@y_TX3fMp3F!3sXYfl4|7GJ>V$#ho8I)g?jPV5>0R)PEW8=T^TRLId&7>07xinkK z;$punBrN&NlzP?qyss;t5sd^b}Nwtg)HUWDa2&-nok>Nka<(b%^m$K3EX|_b+ps1ADT1PzT znjqWjFno(WiG6K$(s8->I)mAPI2Sb)NNOpO7b~J$=>Xm^2`?+`O~w=p*Uz<^$taT` z2Ea0(nTsn5?rM;xZ}^6Erp&Q~=Ok5=Ps6mxJJH3yMWnalOcU|-cm}(YyZS3J*=$7t zk@)I}2>@!9)#aUTb|BTi(MhxVWniRCOM2qFl1_FwO%c6$iipmVE8kK6QI`Bm%`*#; zd1*?g^_xvD65$hxLCUDx*+YfOje$oGdHi`i)g|M3RPuX=WEzGLAuY~NJ4&{GIB}Cw1;2xnDAC=+5*VSkzuuCu;HcY6XG7lCk_y#2%uQG#EQ(GB!SjU8%zO2ULFhRf*dBEj>|5%fw5f!OFun*W`Q_lDX!S& z*TC5`P{0;^T^?pp`&2i-`%(aG6ZrrB_(&$8djRjh?7~7VHeZJA!>+NNF=R_|gpoXf0NUKZonyL~+?bkALaSGuUoM|CsxeP<4s756arUoDRdV)A@w z%Bp>Z2W4eBE-NcmACRo>K3ly>&E(w&NFCZNxvjG^cc9Wi|J|4V z?~nJAXP-1^BM#rRGlWz~otFBf!uc;f zl{jN`j|*6r1^6ZathEWEe4wG!CA@3m9bfODxb88iN7)Fd<^1L_zbn+G{I<;m)uLK? zr_>5{8C^{lr%5QtYoxBep|QdmM~P4<(iF^gvshwOYASVRrbmTq)Jk=^rW{eL)N0LK zM71e#<29sG<@KyoYxA?#k-POAn^vS&l9N^ZwDEHVy8`M;F5tT?wD>4F!KiAN*0~DDF|Q>Q4UXf2QItkQ<5)O`vS?7Zj-d`{vFi2BQ7j3dB`ob_ z`!KC88mb@1C8Mx{V+a;CmsFOFVs>3LJdV~;ls%4>TcTFQs>jgw*=YDALSv_I<&tPP zO8KnIx7vkV$6;*Tk49;3K7j@LdK8R=`!G8iK8~iANL@6dyBlSBiMMFme!Rh3wAa6A zw=61ei4--LR+dI1NAYUKXL*~VR%Pii?BI#)Xr!|AC|sUrT6EfzXc`5tve9%NUbAjj z3<&FW(dkip9M`mz)kVuZ4tQU3OQ{+={ovROpAbz4wWgCem+jd&A5kpC94z7e3cem| zXU`5k^cg}7ufu%Yj2hg6MYx0SuI{0LkMOzMXVHi+<3juz7vYass*3myX*!mvC@xm@ zXr`52O512r8#uO!wel;mQd`qO%;4JT%z7`UB`v1XU(VKau3fFJQXQ~Kp;>jRE=(hh z+1}`C&e*_tW%x5ivr)YQrQFp~-Q0sOfLIClaIJ-QWvgDU4U_*rs7-1!t@wO(iMpEm zhs3CIR?L=X#cX+2%$BxdJ#P!?1+_h2NxFvPwRw)Wk{`pJvN3-Fv)9wK5A~);n=R>-??cq|yh-Mm=9{HC0ZuC^WMDN7Zw~?gQF*1Z@v!gDTQ0iy(aA z4E-;X1F@?qr(S+~I5i;e+l*jwjVIVD!PRlxYA&~%%RA&42BqckHOQ=mT?D=XRPu$A zAhuzxD$iO~p0%nxYgHa=9-dBSg|9gbD}i2aAtt|(3Vzo~l=5=dNdzAieILf%`!P`0 za2zA!*w+%2DJM`{Cs*kxCYlzHe$M6wAl);<3yvcX@C*L$@Ji zaRXkD8~JxLZo?aCmv6#;0_)>=3!cWU_!(bP{hY6(ev5bT3FsZnJKw1m;7-+ocN0e6 zs|{p30c{!Ps#mMmFitvby;is8W1Di=3XwC?mOv$~ zoh^Y+W9@TMQg#ZfEZpDl9B_)@TC1-s)pLA$SJ3GA2FwL-1~E$MSUh3Jc7^f%XNQIy2lt1i_NsJ8WiAL6Z-rW3_L~ybpo^u zNi+CTt%5#YjSq0fhxmho2RLs(XMTj(@F3+drlluPK96g62)J{kRQ0KT$`O2PWs)Rm zdGcY)lMh>3KBT?atkt+M1J(>sR)pi~sx}K>whN1guMs`*9OACB+X~9%YbQ`97o9eU zfXvM|SY9<8!@mJX@x1_=gO$O&RDNuvkh8xz8mAxP4`?37EIfjGz9_p8htP_{`n1c; zUip))$e(OQ{$wk>lhtE}av3gz`eb1g&7|rVs=^22?>Q($28Tc+U;R-9DoW;m+SPah zvxs{CNyW=WE55ksV4XlA?|$79WaD=&#r*!`NrWr@ObttW9M2xcsc{uxS{G`u0?m?g zsnEle6#ogv7BQJU$ZHK#NC`~qcqK+)856cYk1OVJi;J4WW2lZ=GnK77&IwA#4C$Dz zJ3__H;mYtsTm_=8`6o~>InY9WF0Iq3r^?6Bk!$YLx#DF-W4JV0{G^&S%3QDbxSG{c z5-mBZs;H}I@R&NsQ$~>KN2DneBN>d3%+-G>3a+c^fR>8Q&z!)^%}3s z>xtK$)WfqZx7a5xP*zV5=xjKu_-0S0u@+$$nxtzUyNV`^exc_5`!u^B5UhSkkp2;k z|0ndfpVAP2PNV+?R?(~^_Yt__`(d?5OK2f1wU;Iy;2cYhP|o73ZF!ltX$Vt!(>3!4 z^YgcQrW-;qG_#^Y3!qp@(#8S4nez_)Z5~+=xwrlVtcH^)sc$%R#HsV?6=10p#&4J{{FdJM zJ7x!ezx(KWU9T|hmCj6L?~SRJQ^*G z@c%0HES)T;@N1~--JBng-|i!XWMZF&7swM6l!8A}zq8cp?%YBpHBiv#N-LKm&{>Wg)#KmFbM zE}vhT(Dnk$ozqyr^IoI^tSyUK8HV!0I*-2_eZ7V>V0oU!zf($_(SiPY|^Ve411899nrLTI!ADKR}XvsCWj+2CC)^l8?LyNy${?(3ZMINK!j**37&` z-O8&xGrEmucq`jM&P%D=*;>zX_5qH(O@F^bf4@_I->JXfqrcy)zwg%Hqv`-f^?r3P iKc;m*TOTK_IXq;FSCohOihrIuL=${eeL{T-(Z2yzj2Ddn diff --git a/target/classes/com/dynapi/dto/ApiResponse$Metadata.class b/target/classes/com/dynapi/dto/ApiResponse$Metadata.class deleted file mode 100644 index b745eccdba2b9eaf05802151969a7c4587ab120b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2445 zcma)7OK%%h6#lL~&P>cWar1DSv^0;V!FECo~*^=W)OD-EZ#v_0O~40o=vM zaYPW+p_z!GPaye7K9;$kQ=Av3ns=eE?`upz5LmstP6~$OTFOpnNK+Ql8Kjb zSwP=a9#`;NDY9qM#8lf;COo`$#l#G*5)~A^eHs!mu*M;;m`HP4q8;Mn8X`usCgw0N zaQ;B#H*X1cJJy{2XF=82MmQzLMLCCgSDhX*^Vxh;3< zv@%q3su$SwEnUo1s6RTOJ*T!QoAN+;s!6pthG`%t z&3c;G(rcWSXnXvgNgj&n=kszH=nF?65Ocge)uha_C#(DGve9b5*pn_X!!5@)w~Fh_ zRII7o!#as>V5Ub6hUWx435=ve*^8H*!)8^jSj%5x!$VddOB7G#{Zi& z%3g9D&-I$J5pd)hcweBt)MRBrUUO+p1ZpOV?E-1f$K3jt@znFSHkiTE_!{%l{ur z@(5a_Z`Pn|3()9I_Yln@e5v>&-6j4=w+4*~khsuC?^nsn(I{w)Wq*VC#SgniZ*~Lc z$PG&J1MnJNCrj|fLGRPaC(w_{8Nu`9;m~BdTSAf(y~!h?$#e;Ik|Q)@*e6In>DhTS zG?}iaPI9~F6O8okoC;08jyI?|?)estOmtuN;#271jHQBz7GumNABn)5j98G7B;&2{ zl8LjHN>OgoGEnnmuw&hh`DlevJAbCT;|lP@p$! z{SHCluPntFn0MZrp4n%}06&wb`-AVkEmEz$G`#0WEn~$W@1aPeK~+oitYM3+A*y2F O9?Iy)HY)fCWB&r+L%sX} diff --git a/target/classes/com/dynapi/dto/ApiResponse.class b/target/classes/com/dynapi/dto/ApiResponse.class deleted file mode 100644 index 80aea299a46731324b8940900d0c6e5bd9f2ca6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6301 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 diff --git a/target/classes/com/dynapi/dto/FilterRule.class b/target/classes/com/dynapi/dto/FilterRule.class deleted file mode 100644 index f6c61e8a8e08c656b97e708e1d17ec8187b39896..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3458 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 diff --git a/target/classes/com/dynapi/dto/PaginatedResponse.class b/target/classes/com/dynapi/dto/PaginatedResponse.class deleted file mode 100644 index cf0127534d1380cb936816d029286a0f205469ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4249 zcma)9T~iz96@Ff^t6lKQU~I6JxQt z{{i3{J{dp`eFiiOI`Rrb5A28bbj|iQr|;Z<;8a6}{H*J_;Z=pc(!^RnO!ONVuy6#H z!r7|7Grh6r*}LxaM(9u9wKrYQ4xNpAPO$5Hfuo@9+M9f-1vz@u!l0bf0{1;f2*)f8 z&1~x*sHofEqVMSm?3(w(sS{nHE z@cN#@aEyxFSPAQ{w;AESW#NqA3W9sZt)q?{FcD6~ln7jcP}6TRB*B#$i$WZJ@a@Lh!g zLgrIXhf5QkzDlmXXW{!|Y2Fbt13CT!3qQn<6#995C5ga^^mH}`0-mu@5wMse;7k~D zn6q$I>^HaUU~AsrpaVa~H3Qcz%;S}|>WIV2AUw2d4d>1~3g^28EEB^d5yPyzn-+e8 zTM8$4>}`i0SMBgsH>5@{2<<5U%cX^d#e;`?p(J6;I?mXvxSK4@MxEIj>4@v>>T2a` zg+(bID-15Vo^!jgbKj}2+V^Xu3@`aryS8T6UD+o@E!=Whs4p%(s|6@|v|Yg7ZYt!$ zGf$_+olFzjEd7*Y1Zf#+rG<$#W@*_8xBQK}cHQ1_LZ?nE1tSGXCRZJ0sFfDw*Z?`r z>N}n!v#G5jkW-!1*al(si-x55+FB<`dt_LGY1SP3+;8vJq|p>~KiqQa3YLURy^{R8zl`0)QaQRNj zUCESR_x&&k>-KJ37=ek03a=f2m*l3NQy0(5uDS3iZ zonoz?#44HKUBsR46j$g`+zM6`r7p(Q?%5`S~Fae z`#907lDLDV)movHa7idfu}A}wz>QK}Ttjb=_$J@dt}N}qh5BafP_sSu@ix{OlM#FYo0n{k zCtTbotq=E5<=;A`__&D;u5>i`mD}Mek54%d-r>r?XN>A5S7y{?anAuUupEdd%?U<-SIOgIy;+ngY8(MTDaV-kI7Er~im zQ-88iTSjKGRSKw3Q7O5{xpqL$<+Mq?0#yR53LNVv zG$XC2s!)v;3RbG9!771jhuw^Aq!R;LRv=GKlDj8*!_OP1r0@e!$2WcAG$3(A2zBm%**mOzEvnV{zPu3I$sPb_e~j z5J9e`gQneM&SX+PiezjWWnh{Fb_Nyke7>ZUrQf!y*e0D;IXE3A8k$)@qY_0FtyQ=a`xM-zVn131wuNa_idbMpJ}0{+jtP_6 zd}cbh?Kg5ZCAC!j+#Yi=m3TbgZJMD5$quV6sMAcm+_ zL0?a$PLt71aw+YN*``x39`V5Bn7vq)KrSzDa)D048naLfI{1DJD;QBRih}|-EK=C@ zp@5QfH7{V_QFjr;U~%;_RF=!Pt9S<ew$J;j&*|2zZq++$WGOOLWMwH@+c!AcJv`Xne{`gK zc&vN)X!r2&&~O|Uatdr&erM>Xf=oA}PViVwPvE42ITi1c+h(Y@3cgJ^+pm-A+)|nP zUHXK^vg7Zx?`A~%G7dpKe`j>bzf7QR$_ez&H!P|lI~@yJ zRPGxBEBlR%J~%Tyu3Mwpc$y=%PN>E-%aGsRVAP&6nAO{ZDqRi56cW)-3bX`?mebOZ zu-u6zC9Vu$hy{gH6_(#6Y$)Pf+(U5Xx?)S_vUzLv7BfAt7?g`g+Q@Ln67qsf#!MsC zDhaCDB_xkiZ^w-ao-6{Knj>9I*PEppFM*+8buYE-n!MK#$exl61s;841z(46)|V{5 z#4_5L*1S(G+Q)$I0!+%B)!hitqs7xz*FF{H(c0t_+dwQ z)IvKyo+^0?PHWTSDXpP&sx<5p*cY^|sQU{-DWv;jBa+r9c-o0s#^e;A%aGUN+zW)| z5_b^qek9P6g*BbL2`OYisrEXY+p<*LNday<-or~39+tuz{T(tjdGud8*#p}qkF$0s zyM9X^SgiKctdZ2Yb=Gv4rp@DumUXLAt_D99*b)qicU}pGz#Cdwj-SPOSb0gs^SDrh z3mo{R9Qc)rAIpK47sS`23&4Cy=D(4=eyid~I9G#nWd3R#zsDaG{87c9@aLlY0V6YO z9@i874(4c!HlfJ_C6829Y>f(EuLe!?h+NZqosK%!&~KW@XR=-@2SFH6yNGa<{b6wV z@+V!9OVbAZ?s4wa(&-Vymhn^jG8x_KOl!HE&cn&ycqA{JONtaJHc!Dn1U4?clv{!8 z3*5>$SiCP_nU`l$zE$%5y?7K+oZ{EN`Hb?}we=#z6)55?*2`D^DOXTY8$Sz0zF&em zuyAbKCDabSfEyp!eje+eNBueSiQ;|yUB`P(pbiSwql(9~&Del_xEYUewAq!1_u~Wn zqGWs!AEHj1sq2UF5nfU3gNl#hag^a>oL|QgckZ-5cZPEx=UgMotA-Rj@n3#N6dYE# zg3l-Tze7RwYf$;y$uE3@t7C$qfKT!-f=}Voe6FD2&+zZFhar-V8lS`Gso*KjP4QXA z=Nj7Ga0#~$NK?0+N3&;YnPaNFX$8-f6;x81SMSpJ=B=U3rzoMqGb-X3rTQahNWVzA zFN7#3nS2pn3Q=x*K)HMzg32{gcvDH`zU-^=I8~7zzlw5S2~kcm`6|BVDku8nwKf?Y zqvv+c;|_s&91ysS4)CW({@e>(!dvHYUj#3qdT{$ZxbHlLwapiBsP3`bpTA@sHo;NUf66bZiVBc;@t^X!LSw^}|_!hoRzDIcdBjFkI;pwhA%~kH)8O}*~ zwj=r)x(LB`2ctEJIT&qGaF&A-mcp4JG#5^|D6V#(Q5kV?`!qSa*!^xu1f<^I!!sT{ z&Qk-Kf-Q`|sE;jotc6$QsB6yZY%6}1@=bIo8?w=lyUOpw7RyAM5tgNPwu$szu$@$Cpy#Wq!ZFKUu7P h$G@N8Mf}`*`-S)RYh1xA_zPFXN%2?w9sfk#{{Wl!)^7j+ diff --git a/target/classes/com/dynapi/infrastructure/audit/LoggingAuditPublisher.class b/target/classes/com/dynapi/infrastructure/audit/LoggingAuditPublisher.class deleted file mode 100644 index 3ec81903b5dee4d56910b2a449c7818efacabd93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1297 zcmbVMT~8B16g|@|Y+H(8MGz`dRIn`{>ld0>LPAJ*DoU(rLiANu9hZA; z=SAa4G&RHMru3xVVz7#(dKxLDZDg_-LzZEqsk%<9@9~~=q<84^K>J}+hrV!l*pk|* zs&-p??QL_|4;!uwI>IMRm;A=aRh8d%0{8IoQ4}luN(xsP=A(>fg?H}@$}{VU)SW_$ zYi@jFn8Z~Zxh$?>ii$pu!H}eC6hpCC{Y$8(eJZ8$I_4U1td!~*Ok>8zjVxv{$1rmq zahEr>^7{W&N;o>pVc>$)FfQeG|v!=f=&?_rq2@V_x_OEI2*co5kBS_c5;h2P3{TZ zQLTOM^RCdsCxOy6+4i`(mke+IgXkr{ZRAL8Hr?UCWNIq(n_^d*{>}Y!6xNLz46`po zlBp}|GLY2WZO>Dh8&#?H^59DK%;lvC>xvWQzjXp4CX^<%oE_EeDUWonV3Ec%0fsz1 zb7n+o$StyIwrQQGlS4bBeWd&u>;oAI+@jUI1~OQnH9H7Ef#5*)ZQLOclia7cB<=Z+ zuyf<1-;p@5R%!>y)!MUYI1#N&;ag;3dwGh?}EGkpmY@h;Za^ZI3&4C$m^HJx2K~Bo>JS zAHYW;s>jB5q(s<)i@WQ&s$RXSn*RCg`wsvI*v%q_cnS#vNz5?h&UufUHh0_RyXLvD z6vND(bfwy7i02E94ARJ?kTq}%2E(r9IcDq9DpWghV7c?x6PpIlQX4o#7ED+Fe4|^@+j4tasNsRa}4yy z--)BRs^^}`b{aW`xxnfOhnKAm=@UT~i&#ow*}w``8MdaWf*}zIx5aRjuZ>z(S6V}5 z4CyzqQs_gWk~UTDTA}Y#Pt2-EJrIgFZSgwPU8|(A#xURFikExbmUNMxo5mdmgNH4t z%0f3YV93;E+vPfj;bf`??v0gqW5N3shMoLWc`Jnmb*1XHsG|9rbj4BVG=+bn)iEsA zJd4{6?n`YCz=Y~Z((9kDPBdvI; z+u!VZv|H6^wHWgGaZN4H;nFpu*_nrt5vhq zZC_)!d<+W%{6H^YR5wGm?uEW3UQ0dOr3f5;;oJIyU|4@2x=K2tAp=PxKX6@7Me9uC zxPBS|%}RKR25HuX-;cbnZ=(0`>j zXuR+T_@j(xw&f#{fSRT|duHdn&zyJ8{QUL(2Y>>$6Nq3ahNyvIj4&jR`6)MT?sUw9 z*0Hb@!^lhNNcDZ_Sw|!;`~(b)#V~GQ0!fCP>vc@O=TRouVpHRt1az%bF~isw$b zE$M~!7so>eg9mM?a^h5{F-+Bpd!@I9W^u1jeN(D6>j&@3MTYdB9x;s3(fEoxs=@7m zoSfb*)C6kT1bhH z%H)?z%^krV0!(UK$%28a141(NwG`Sqm`c>#z_Y|_smn}WYwk_mfDAAG7TmuQffw#L zk7dN@1_DFKV2L7z6^bGlrFivPyg>1zYw;qYw3hBHJs(qsNh70ic>OEbmr&vfJ@sdh z*i(8M{RPNkjUtA1%o9i_@6)K)rP8C{a4&j}6#b{qG5eV&BhW%K!~&8em_h<+jM0Tj z((g(*H4xsQbsGDOMmmriAPcucW+^>GkU4_P6JqvG$mR`@#oHlE1X(7?3PDy0vUCR| OLJn&$p5vmvE#NnAdN-v2 diff --git a/target/classes/com/dynapi/infrastructure/persistence/MongoDynamicQueryService.class b/target/classes/com/dynapi/infrastructure/persistence/MongoDynamicQueryService.class deleted file mode 100644 index 57839957533df999fc4c00646ab48e47d3c44ad0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7730 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 w$#e>JPS<3!vig1#g%?OPi>~NgYVu zHF{t+jg7X`ex#B_8ND8g*h$MU8D$@LWE2mDlMIhK#twKATcrm?7|D;ue&C^Sg6GJv z&jUmJIp^`Vb`?{Y_Auk4hFONyg09d+LTTC@${{~1g25X|_ky??YV}4ZKYZ%ckatC# zbI$v?gaw8Q;a+N|+yTSuZb#dx`E5p`ltF{P~3pj`VcB4l}*q}NyOm~!) zuhXb6?T+XVX=S!!0x|3ftFm~sSa!QAVR+st^y^$cYLj)l((RgXOJt@YYY}g&UL^j9 z5pwC(^+e^vq`0kuG!=k7JqUn-p!*T%x(!{0i1=eS!BW$E?se zg)tg^lrf14MYkwgI6~t#?odSga#n`B^ghlg0MRdDbwvM)C^Gt5^E15GAtvdWJH+L8 or&+SU3rO7z<_Z~VCmCv3L!C%R8P*6~LL(oWXwf`DAMXLb03Iky|#Z_RXSr>H~aU&zkSF~xa#kHo2 zBBg_69ay7%UmAw7$dRpMcoNBF5lM#mN(xGZp|9$~k{l1Uv4kDQmM3UwvGOhqVixOMq^LrvpA1k^pd|95U4q!LKLFduY7MhhF z?dlYbXg&7*%>pK|H;;Wq?8gCy11WDktNBu>R%I0Gz{Mip7G$`Uwx*Skw)!MRZTn`@ zvHK0J%y4x&ecx+b$SH>0vi8WJk%|iB{kU0^=CP>xL>W&!uL`5wxlPR34Hf;C%3iC2 z>>Rx(?S}Rq3L~15YKfp8rTywq0yEzYw764miqcN=O^V3inrZ~X#)cyP?w_IP5jJH@+w#BF zPa3qUl~;Cl?O%-ptD3T^B1P$63Ic7DZcVbUO@l|F>zs9$$=BMv;ICzk*Hqwf(c$F} zb!4fZLf2vpeXoQclb>V!O*=tvd8?Hej(6+pR7jWNg-Xwgh27XHUD70-8LTw>3Hc8R z&lLTK;fx+aj&_3>!C^X0wzzQwN9jaz2`VE!Kp&%nb8-yFNri)dNy0f=CrTfYpFKPG z6+=0&@rf_k^Pb3AI6dyga>zyOO>~r6A{`wQIDwM{OE5Tv(+T$k&S0A4XNX$t+?D9g zSu&I*5fC$o4Va}bgR_{Ub(omX(Z`>GML3TOM4QSI;UaD5!Abs?iG4o80h459=^cGEufrL6u?cgn#DFnENB={qRJ% zilMqEeW|((rB-`T!zI*A)Gb_w#qh)pCXRRN^Qm;CuS9snT@g8dJJ|iZ`fC%^hX`tV%0(eYYb(NE6&hJvtlL3&HLVlrM5F?SslxW z;aTs0My77{kx*}DV{f$D1y0%EloJ(lHe2UY+5`GT2SObO-XRb9M3Ce}$|UU9iBjt` z;DT1q7kw92$Rs`~uAPzj3#*wl=XE-r&a`^5kbS|18nfOH;?NcQQh$i;rTg<(uMFUcxEW?QyJ diff --git a/target/classes/com/dynapi/repository/FieldDefinitionRepository.class b/target/classes/com/dynapi/repository/FieldDefinitionRepository.class deleted file mode 100644 index 3c2799a835598e5601e8924d939f399f1c1c4bbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 383 zcmbtQOG*Pl5Pcn^lf;cD@CeocIs^pCYD92O(3$QumCSSvosJ=Q@I)>=fQJ%$vd|&m zDvPRuSMYvc-yfd<9&uY>q(HT_WRJmgOwo0+<0SD&OLmQYa%&EpSi{qvmXxBexd*X diff --git a/target/classes/com/dynapi/repository/FieldGroupRepository.class b/target/classes/com/dynapi/repository/FieldGroupRepository.class deleted file mode 100644 index eaf2bee58588ffbae5eb4fb559af2a83414d4663..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmbu5F-`+95JkTOVUy6L3!Ez~cl1oU zq3HGFX6Ncu;6lN$czx(3M86ek-3!ZJTS}x`j-Ksi?ENrEKeh_mL7pL%A{thtZ zKg?ICNb@kUnZicFvUg0dyG=CMCpg8Rr I=BK;(0>un?p8x;= diff --git a/target/classes/com/dynapi/security/JwtAuthenticationFilter.class b/target/classes/com/dynapi/security/JwtAuthenticationFilter.class deleted file mode 100644 index 0326249dfeb387ea4e05abc27eec13965cfaf313..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3138 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 LH~a(tLhb(mC8w{B diff --git a/target/classes/com/dynapi/security/SecurityConfig.class b/target/classes/com/dynapi/security/SecurityConfig.class deleted file mode 100644 index 0bc5283a72680cb7213bef0246f4f97cea24a870..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4930 zcmcgw`*#yX6#k~9-6kwHq`V5s%K~jGEH4oaAZaL;ngTX`$U|_NOxtZYyJ2_JQp6WN z5y1z(_2|E#9q~0 zx0joIRAhzeMiB6)w5V7wr>y3Acg(WM3{ney;!<8Xt`o%LctXKO6`Qb`VQbpTYME)1 z=k$_IiW*CJwqaO1KIO(q8115`JuM&C4OiF89=;VOZAIKB!>-yh$lnI%Ojc5DPV)$?B#SjfQX#&nkFMMGS`+ zu2;oX@ZJT?_eb-#^gwB?yGZC0OHODlzV~S5v)L|iwU@i;F+oqGy5ri@WLeuMap8r- zu%qo;cPA7s;I31xs(Y?-bG2EkS7)%=*QY}V3kumP^2u63{`N)7?zKCDaH$P4A*Ld zyFg17%Yel~yv#rqLM=fGB&-ZMZc|b>#mRhjSlIo1Sh{i~X{EU_$ZcId7X}0Fm`)L@ zwPJ=WZs40r%9fgD=&6ZYH64?@w(D|QCDdXdk2`Y4GfDhPRe6 zpmh(!tq0;jIpd1CW?n($o8UfkQB2|taLR2AH!5nxSy14XX+|>ae}Yw6dAk`dE?Ifi z+*N8rDMT8E^Gj7owXKNODJyTM1(iYMdd>4aX_urp!-0wjDv-2jd@tA&Tf?1}y%WaYY?LTl;ipK?AG7WsVZ=4QqaPHWP#Ci1!R>q((PEUOvkE$pApiSp^Szx21P zzP7xgE=W#r!$|3_Ag57Jn5MA3`;(wd^993&rTRhjO9Ml+7|ItfWEoZzCwqmtf^QhM z-DR{&`d9EB!^Y}U>5AnW3tNaNyXZ3r)dTWwO}zm1U&a|~&(hNkd55Pq)-g-tm_hw4 zmdjS1MU!m9vuKv>s#&a+?Yii1*bvz=gC~bNX0YQ9I)0|*bvQ@=ThU1W&2+_FMV}E? z(?@|d*htH^V;wYXz&-+Vo@T7^x5O*BKu@$eF5*?%o>O1K8%BnD^^_o}5%g=I!4Ya1 zT`5Otu|$4^T8TUq{R2Cr9lvA4FZARCk@JBSWt)ZOHVb)rV8tyqAsh}#N1`QCY#-{q z#hasnKe6x3vdGh^89Z|bha=C=AU=aG>dv5hsI=K*q(aEA8)%_3ulF`peHj?X1VHl1 za|`nK5kv_t82uH=8T6G2@=>oX6A*+6izWwuJ`6# o@9jeG9lT%YeSnYfIjvkzs}ABezQjtpJ>AAv1nX;ji|^6$AKYz5r2qf` diff --git a/target/classes/com/dynapi/service/DynamicQueryService.class b/target/classes/com/dynapi/service/DynamicQueryService.class deleted file mode 100644 index 25c020ec97fa32f6b040f9821863b020fd54ad0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8400 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 RbunUQw>63*XXG3je+uCrdDQ>_ diff --git a/target/classes/com/dynapi/service/FormSubmissionService.class b/target/classes/com/dynapi/service/FormSubmissionService.class deleted file mode 100644 index 0a4bcf48ca88389c3325a61bbff0ad0020cbf365..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3328 zcmbVOX>$`t5Pc)dS|1At2MFQ_M~JZHV?#JXED~aTfP*hAW3D7*Ev@B+)vnlG8Jzo0 zKI9MNXQV1NMN*aIbAD4Ql{c%kH8uiM`LZ)R(=*-u`gQmG{qJvo02soL?MR?SLsCa8 zQUcvYuVR!|T(fE$f#omTMavlT{7Rv=P_cu+_S`~!RbbDeZ8@dOzE`WxT2(KwL(g9k z=$lZk@HaM$u_n^_4z!_NLx+w|=mIB{qovT>qIuSOP_u$ipsj3$kzN|n-7|5|Ts95I zbjwB|^li7C@5D~*(va4%8(ji9<<@Ns;@yk3Te`F|ULqFV%GJ{g_pD-=kG0i8+cBoA zA@MLBda(z4HSE*zGWH8}MFwpW5zy>lv{DTTP)m2uZ4CzmjyDV+cO0v1IzxWBRH4rI`+qX#*G)CJqM!*>MsHc`+sFQM<#(T@QFOMA95A`Y8|*NL~n zgOXPW}U=!Ta6!l0pz{ptMp|yAa5HrRos!2xj#H;{Rt0Z7w0v`+0ewTO zbpKtQW#N)QT2_IIU7R-^yJRxAX@%-_jNo#8oA?+bTMk6oJ)&b2W8^=59x+2xVD~0( zC(SD5u3%ildpfRSLZDx9c6%*M+1Li=#F^O7$R&BT$~TFt`XBR;95OJaV_H_AcA7cr zhIY6jvACvV76qAlo?G_jtV-1}L#jF3H1&v*Nk&n!w7`J*mNBUwqnp<;ui=J{o46%# zx>>4ibB91OFqdh;c{QLh$(3x26Hu*7fxu3)RN&s zVEJ=0fta~b5t}!CTmHw3$#BVLR_9cW&+VmoqT;VNx2$^X*@m(*IuU`T5siiu7ggCK zWtnG-VntN;H+q&pYb3#@yGdd5x=0ICL2=2dFn`m^brUkDNTj0223C|+QkJw0lhmRv zux~S1E7f(t29+Dv4ZQFoR=q>rn?go&wmI0SmU(%4Md>bz>}*76)ZR2sb_|G!E{(?iW${qt;TIIkL{r0n+PmI=tzs=qHuOY-Y%i%XfzeSStIN4xA$r%KJ;9Cyrux_L($Coc zJ2JPpaj@%%=zD@=Nj%2MKe^ZY7mUFqcTQ!JYdHG^ZzV9;%KwYJVmQ;~{EarMwaXZ(y zN_6{IF_X(AS8*_xX|0v`K z()LxC%h2vBUj+816oKD4IuH!GLmu=*%rIA3*sh-$@T7n|3I>WMF2H1{oQj}K(&vd( zp}j#xyVBe0D=M;<85XVfN11qg4Srxzl+`z8^^IAnG3%7Eq3v3Me&?czQIyDMyVI(< z&lzUVVN##Nn2F06XE0Rc%a8{QnaV=Vz!iq+eSXO8fQP%btJ*zpFD>gtk&1N5DHB)I zlJ1+vn$yzKH51phWUMutb*JiT?WT!aTFY)!JB}7+Ox#Z6nrkne^^TS-6L+*UTy3?g z?+nZ{lm^9{JNv>*81hfOK!!4TmU`TxlVfm!COLLRoV-vm znKx@;D5CX%$FYb@WonN(YDQL?(hZ_lq*Sm#c$e63WM~D5?_kG2i(g@U(cj27T*@{- zA^R$&lSGFHbed>xKyMH=2DD5xKcKTjOa0xSkwXFFn8XC8FiXZJFpm|i5r?$ap4d~48-#(ySPYsg|L-EZRoVHV3YKTMTnJR&So J);u9f`M*98)r0^5 diff --git a/target/classes/com/dynapi/validation/DynamicValidator.class b/target/classes/com/dynapi/validation/DynamicValidator.class deleted file mode 100644 index 1635f05be0e373f3d6bfb10ae37ab853fff1516e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4169 zcmb7H`*Rc575=U*X=Qn_g~0?tfCMW{ZPJLi0h+ceX>Bi-w90A) zxX<*FzTZjHlD^Z2+ca%RnwS`p0R17I>9qX=I#d3ScKZ76-Lv3MDH`S3%!%AtGw%vShOM&Y9u{a#^-i}TiZ%@~ z9qrHs_T=qSrm#>pDpuy4QM3w%YuV+@5$=?%{Is`YI|3U@X0>X}npwN%? zR4a~Eo}F=wl6l^C<}-P_?3x$c%w+KLP&+!%sUfaoBf11Sl!`UiDrP3EDiw@cuIU)A z6tgAOJ5fI#_xH(RGrBcw(QzBL3UoDJ5zyw0>J)`5J5NiBZ92B&c7ae?ZEs%T9q`VO zhMfX;2fR?QONLd>lq@^+ z?IiBfut&$;NYRINwI_`V^&|_1Amv#c)XH~4a7)Tg>*$mA$E@lj<`Xr`F$)^@3hY*l z)$Q?O(VR7kBhGBCWR~5d7xHFBsvbp#;4mG>b_VK!ZpS^?ui-s94&b0b@49139jLq? zW`W~D8+_x>G@BI&?S!2-isn$zP@gV_e!Nej`H(>OJMitDmaZ7oF@#}8oobw1s4xO| zF}$~oqr5g0BmNKTct7qJXt%0zPoZ4kP*9eaJ45SW*n3*4^MH;~9Pv<*t>qLjss!o^ zX+nL>YB7`vOL7f-lcJrsZMRRv3TG_o{M0Gvfdvnh%4eV66zc;=}lehL7qnkQ2DA zNgK~xIyvvDC9p53OB2H&6#ei^uoQHdm|#qBX32oU`!G!P0P6 z$2^JxsQ^^#`Pfu=llKVpC$r}*H$O*7Nm3=fa-H-FRZdOGj@q_4TRs;dR3V;D1Wt<#8AaKnW5(e(!s2u%VpUMB>u@c z$3Ac5WTsDRAkqT;$-AxL;|;r0wNlP>G<=fyuPg9?Z5K_W+>TGS)QRuqxG**ajPUKTLM=q$}WN zAFn)|ksXVbJSe|8=Jl3Fh9Ne6gKn$l=gbl(@wIT~Sy91wRj60aJZQ6NH#&kP)py3G z04D}$IGsLBc?Z|*2JC1CkZ+l!Ye*}m+3>n;l++utu92Uo7QSw6S!=dzxHX5ad}>WX z53f(9fE_aJ-;F*&(v=FqNVuw#_1xMpnXoiyW6>z(3P#dLmzmthu&*)1ONn>tvI2sJ zcL(%X%^>oQdC$BtOX9qH?Q3vALXz!s%B=DUAk&qYjWb2vs_PgP56{&&Qk@a}R@TrL zb^Hv^$MJk;8(xw*d`ZX4GJ&H^RR#1o{;)3XeK?TuYcVY0vWC}nEaOVU8^|i3v**ps zgz^uyF=hvznZ+?fKeDeOK?RW`s5ns@Me3v;IR* zWUzKN(*|3Ve>!Rui&?&(88m&oTsEE2qEW4y3`kg&Lk(~7X;d$y4NM!&)Noy3=dG`@ z6nH-2BRI+e3qB0G} zjxTey#k-BK;HzAbPH`3Z8s}j~jvpaAF-gf@T%!0W_ipwtV}rn8C=pu5CV`9io17&C zu4BhwxGxc2!mefXv|unI=e-w^N<{vIo~!6Tm3|dk*Ffk^w47>H7qfepu`h(nc<;4D zmVWjk+<=XWHqvkqXN(2zC`2(k{59>5xI`!pq5T(%Qz;8*$IIw zcm({J242Spm+^QDl};+^y-Ub1{%=6KETmjEpggb%JNbW2AG&b}TlgH?ipQ~y4~p${ z+D^QLUHCh8;~(fzEv6kCZj$n8+P8B52fY77?ruf+--v41{2!dqutP)3{(oZXUp$q8 z+|WuQ;2Dl*Iex^^f**76Jzccn`dR zcuW>T+954Hz^|l@rI+z3!D{xoOI&#w5>Y3+lvLfjg`eXWJP+ZQ>ejEYs8)jS%3pIP p^XFCS_Zz%`-}$rO;}u-x**5Oa@r!tr#W#sJB5imR*Kh-g{{vXze$@Z~ diff --git a/target/classes/messages.properties b/target/classes/messages.properties deleted file mode 100644 index 3139606..0000000 --- a/target/classes/messages.properties +++ /dev/null @@ -1,12 +0,0 @@ -# messages.properties -error.internal=Internal server error -error.validation=Validation failed -error.notfound=Resource not found -error.group.notfound=Field group not found -error.field.notfound=Field definition not found -success.created=Created successfully -success.updated=Updated successfully -success.deleted=Deleted successfully -success.fetched=Fetched successfully -success.submitted=Form submitted successfully -success.query=Query successful diff --git a/target/classes/messages_tr.properties b/target/classes/messages_tr.properties deleted file mode 100644 index 7eb23c3..0000000 --- a/target/classes/messages_tr.properties +++ /dev/null @@ -1,12 +0,0 @@ -# messages_tr.properties -error.internal=Sunucu hatası -error.validation=Doğrulama başarısız -error.notfound=Kaynak bulunamadı -error.group.notfound=Alan grubu bulunamadı -error.field.notfound=Alan tanımı bulunamadı -success.created=Başarıyla oluşturuldu -success.updated=Başarıyla güncellendi -success.deleted=Başarıyla silindi -success.fetched=Başarıyla getirildi -success.submitted=Form başarıyla gönderildi -success.query=Sorgu başarılı diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst deleted file mode 100644 index 855846a..0000000 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ /dev/null @@ -1,66 +0,0 @@ -com/dynapi/security/SecurityConfig.class -com/dynapi/DynapiApplication.class -com/dynapi/domain/exception/EntityNotFoundException.class -com/dynapi/domain/model/FieldGroup.class -com/dynapi/infrastructure/messaging/KafkaConfig.class -com/dynapi/infrastructure/persistence/MongoDynamicQueryService.class -com/dynapi/domain/model/SchemaVersion.class -com/dynapi/domain/model/FieldType.class -com/dynapi/config/OpenApiConfig.class -com/dynapi/domain/exception/ValidationException.class -com/dynapi/security/JwtTokenService.class -com/dynapi/dto/ApiResponse.class -com/dynapi/infrastructure/persistence/MongoFormSubmissionAdapter.class -com/dynapi/domain/event/AuditPublisher.class -com/dynapi/domain/repository/FieldDefinitionRepository.class -com/dynapi/application/service/FormSubmissionApplicationService.class -com/dynapi/application/port/AuditPublisher.class -com/dynapi/repository/FieldDefinitionRepository.class -com/dynapi/application/port/input/SubmitFormUseCase.class -com/dynapi/validation/DynamicValidator$1.class -com/dynapi/domain/repository/FieldGroupRepository.class -com/dynapi/domain/model/FieldPermission.class -com/dynapi/audit/AuditEventListener$AuditLog.class -com/dynapi/domain/repository/FormSubmissionRepository.class -com/dynapi/domain/model/FieldDefinition.class -com/dynapi/dto/FilterRule.class -com/dynapi/controller/QueryController.class -com/dynapi/service/DynamicQueryService.class -com/dynapi/interfaces/rest/dto/FormSubmissionRequest.class -com/dynapi/dto/FormRecordDto.class -com/dynapi/domain/model/FormSubmission.class -com/dynapi/dto/PaginatedResponse.class -com/dynapi/domain/service/FieldPermissionService.class -com/dynapi/controller/SchemaAdminController.class -com/dynapi/domain/service/impl/SchemaVersionServiceImpl.class -com/dynapi/audit/AuditEvent.class -com/dynapi/dto/FormSubmissionRequest.class -com/dynapi/application/service/DynamicValidatorImpl.class -com/dynapi/domain/service/impl/FieldPermissionServiceImpl.class -com/dynapi/dto/DynamicQueryRequest.class -com/dynapi/infrastructure/messaging/EventPublisher.class -com/dynapi/domain/service/SchemaVersionService.class -com/dynapi/infrastructure/audit/LoggingAuditPublisher.class -com/dynapi/security/JwtProperties.class -com/dynapi/controller/FormController.class -com/dynapi/audit/AuditPublisher.class -com/dynapi/application/port/output/FormSubmissionPersistencePort.class -com/dynapi/domain/event/DomainEvent.class -com/dynapi/service/FormSubmissionService.class -com/dynapi/domain/validation/DynamicValidator.class -com/dynapi/dto/ApiResponse$Metadata.class -com/dynapi/domain/model/FieldDefinition$RequiredIfRule.class -com/dynapi/interfaces/rest/FormSubmissionController.class -com/dynapi/domain/service/FormSubmissionDomainServiceImpl.class -com/dynapi/domain/model/DynamicQuery.class -com/dynapi/application/port/FormSubmissionPersistencePort.class -com/dynapi/exception/GlobalExceptionHandler.class -com/dynapi/repository/FieldGroupRepository.class -com/dynapi/domain/service/DynamicValidator.class -com/dynapi/domain/model/DynamicQuery$QueryFilter.class -com/dynapi/domain/service/FormSubmissionDomainService.class -com/dynapi/security/JwtAuthenticationFilter.class -com/dynapi/audit/AuditEventListener.class -com/dynapi/validation/DynamicValidator.class -com/dynapi/domain/validation/DynamicValidator$1.class -com/dynapi/application/query/DynamicQueryService.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst deleted file mode 100644 index 15d90a1..0000000 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ /dev/null @@ -1,60 +0,0 @@ -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/DynapiApplication.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/application/port/AuditPublisher.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/application/port/FormSubmissionPersistencePort.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/application/port/input/SubmitFormUseCase.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/application/port/output/FormSubmissionPersistencePort.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/application/query/DynamicQueryService.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/application/service/DynamicValidatorImpl.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/application/service/FormSubmissionApplicationService.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/audit/AuditEvent.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/audit/AuditEventListener.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/audit/AuditPublisher.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/config/OpenApiConfig.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/controller/FormController.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/controller/QueryController.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/controller/SchemaAdminController.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/event/AuditPublisher.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/event/DomainEvent.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/exception/EntityNotFoundException.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/exception/ValidationException.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/model/DynamicQuery.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/model/FieldDefinition.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/model/FieldGroup.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/model/FieldPermission.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/model/FieldType.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/model/FormSubmission.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/model/SchemaVersion.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/repository/FieldDefinitionRepository.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/repository/FieldGroupRepository.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/repository/FormSubmissionRepository.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/service/DynamicValidator.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/service/FieldPermissionService.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/service/FormSubmissionDomainService.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/service/FormSubmissionDomainServiceImpl.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/service/SchemaVersionService.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/service/impl/FieldPermissionServiceImpl.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/service/impl/SchemaVersionServiceImpl.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/domain/validation/DynamicValidator.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/dto/ApiResponse.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/dto/DynamicQueryRequest.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/dto/FilterRule.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/dto/FormRecordDto.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/dto/FormSubmissionRequest.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/dto/PaginatedResponse.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/exception/GlobalExceptionHandler.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/infrastructure/audit/LoggingAuditPublisher.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/infrastructure/messaging/EventPublisher.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/infrastructure/messaging/KafkaConfig.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/infrastructure/persistence/MongoDynamicQueryService.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/infrastructure/persistence/MongoFormSubmissionAdapter.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/interfaces/rest/FormSubmissionController.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/interfaces/rest/dto/FormSubmissionRequest.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/repository/FieldDefinitionRepository.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/repository/FieldGroupRepository.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/security/JwtAuthenticationFilter.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/security/JwtProperties.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/security/JwtTokenService.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/security/SecurityConfig.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/service/DynamicQueryService.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/service/FormSubmissionService.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/main/java/com/dynapi/validation/DynamicValidator.java diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst deleted file mode 100644 index 09864b3..0000000 --- a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst +++ /dev/null @@ -1,8 +0,0 @@ -com/dynapi/domain/validation/DynamicValidatorTest.class -com/dynapi/integration/FormControllerIntegrationTest$FormControllerTestConfig.class -com/dynapi/integration/QueryControllerIntegrationTest$QueryControllerTestConfig.class -com/dynapi/integration/QueryControllerIntegrationTest.class -com/dynapi/DynapiApplicationTests.class -com/dynapi/integration/SchemaAdminControllerSecurityIntegrationTest.class -com/dynapi/integration/FormControllerIntegrationTest.class -com/dynapi/integration/SchemaAdminControllerSecurityIntegrationTest$SchemaAdminControllerTestConfig.class diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst deleted file mode 100644 index 06dd48a..0000000 --- a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +++ /dev/null @@ -1,5 +0,0 @@ -/Users/yunus.akin/Documents/projects/Java/dynapi/src/test/java/com/dynapi/DynapiApplicationTests.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/test/java/com/dynapi/domain/validation/DynamicValidatorTest.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/test/java/com/dynapi/integration/FormControllerIntegrationTest.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/test/java/com/dynapi/integration/QueryControllerIntegrationTest.java -/Users/yunus.akin/Documents/projects/Java/dynapi/src/test/java/com/dynapi/integration/SchemaAdminControllerSecurityIntegrationTest.java diff --git a/target/surefire-reports/TEST-com.dynapi.DynapiApplicationTests.xml b/target/surefire-reports/TEST-com.dynapi.DynapiApplicationTests.xml deleted file mode 100644 index 592354c..0000000 --- a/target/surefire-reports/TEST-com.dynapi.DynapiApplicationTests.xml +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/target/surefire-reports/TEST-com.dynapi.domain.validation.DynamicValidatorTest.xml b/target/surefire-reports/TEST-com.dynapi.domain.validation.DynamicValidatorTest.xml deleted file mode 100644 index 4c161b6..0000000 --- a/target/surefire-reports/TEST-com.dynapi.domain.validation.DynamicValidatorTest.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/target/surefire-reports/TEST-com.dynapi.integration.FormControllerIntegrationTest.xml b/target/surefire-reports/TEST-com.dynapi.integration.FormControllerIntegrationTest.xml deleted file mode 100644 index f1e79c5..0000000 --- a/target/surefire-reports/TEST-com.dynapi.integration.FormControllerIntegrationTest.xml +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/target/surefire-reports/TEST-com.dynapi.integration.QueryControllerIntegrationTest.xml b/target/surefire-reports/TEST-com.dynapi.integration.QueryControllerIntegrationTest.xml deleted file mode 100644 index b6a1d3a..0000000 --- a/target/surefire-reports/TEST-com.dynapi.integration.QueryControllerIntegrationTest.xml +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/target/surefire-reports/TEST-com.dynapi.integration.SchemaAdminControllerSecurityIntegrationTest.xml b/target/surefire-reports/TEST-com.dynapi.integration.SchemaAdminControllerSecurityIntegrationTest.xml deleted file mode 100644 index f2f8c87..0000000 --- a/target/surefire-reports/TEST-com.dynapi.integration.SchemaAdminControllerSecurityIntegrationTest.xml +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/target/surefire-reports/com.dynapi.DynapiApplicationTests.txt b/target/surefire-reports/com.dynapi.DynapiApplicationTests.txt deleted file mode 100644 index de08e77..0000000 --- a/target/surefire-reports/com.dynapi.DynapiApplicationTests.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: com.dynapi.DynapiApplicationTests -------------------------------------------------------------------------------- -Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.082 s -- in com.dynapi.DynapiApplicationTests diff --git a/target/surefire-reports/com.dynapi.domain.validation.DynamicValidatorTest.txt b/target/surefire-reports/com.dynapi.domain.validation.DynamicValidatorTest.txt deleted file mode 100644 index 27113a0..0000000 --- a/target/surefire-reports/com.dynapi.domain.validation.DynamicValidatorTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: com.dynapi.domain.validation.DynamicValidatorTest -------------------------------------------------------------------------------- -Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.077 s -- in com.dynapi.domain.validation.DynamicValidatorTest diff --git a/target/surefire-reports/com.dynapi.integration.FormControllerIntegrationTest.txt b/target/surefire-reports/com.dynapi.integration.FormControllerIntegrationTest.txt deleted file mode 100644 index b1308f0..0000000 --- a/target/surefire-reports/com.dynapi.integration.FormControllerIntegrationTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: com.dynapi.integration.FormControllerIntegrationTest -------------------------------------------------------------------------------- -Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.224 s -- in com.dynapi.integration.FormControllerIntegrationTest diff --git a/target/surefire-reports/com.dynapi.integration.QueryControllerIntegrationTest.txt b/target/surefire-reports/com.dynapi.integration.QueryControllerIntegrationTest.txt deleted file mode 100644 index fcb6d29..0000000 --- a/target/surefire-reports/com.dynapi.integration.QueryControllerIntegrationTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: com.dynapi.integration.QueryControllerIntegrationTest -------------------------------------------------------------------------------- -Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.599 s -- in com.dynapi.integration.QueryControllerIntegrationTest diff --git a/target/surefire-reports/com.dynapi.integration.SchemaAdminControllerSecurityIntegrationTest.txt b/target/surefire-reports/com.dynapi.integration.SchemaAdminControllerSecurityIntegrationTest.txt deleted file mode 100644 index 98d52e4..0000000 --- a/target/surefire-reports/com.dynapi.integration.SchemaAdminControllerSecurityIntegrationTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: com.dynapi.integration.SchemaAdminControllerSecurityIntegrationTest -------------------------------------------------------------------------------- -Tests run: 16, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.137 s -- in com.dynapi.integration.SchemaAdminControllerSecurityIntegrationTest diff --git a/target/test-classes/application-test.yml b/target/test-classes/application-test.yml deleted file mode 100644 index 3eb2fa2..0000000 --- a/target/test-classes/application-test.yml +++ /dev/null @@ -1,23 +0,0 @@ -spring: - data: - mongodb: - host: localhost - port: 27017 - database: dynapi-test - - kafka: - bootstrap-servers: localhost:9092 - producer: - key-serializer: org.apache.kafka.common.serialization.StringSerializer - value-serializer: org.springframework.kafka.support.serializer.JsonSerializer - - messages: - basename: messages - encoding: UTF-8 - -server: - port: 0 # Random port for testing - -security: - jwt: - secret: ZHluYXBpLWRldi1zZWNyZXQta2V5LWNoYW5nZS1tZS0xMjM0NTY3ODkw diff --git a/target/test-classes/com/dynapi/DynapiApplicationTests.class b/target/test-classes/com/dynapi/DynapiApplicationTests.class deleted file mode 100644 index f7fb091b24f8f869a72d60c1cbed1ec59cce088e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 604 zcmah`Jx{|h5IwhP3#GKBdO{zQW@t2XB&aiBN`WY z0gRb2TvO}Xnna~~R~0(qm%7gV+GK}X~~iIv9h>7#O4nozO^H^5NKuFm`kwWVh3!ugY_cjC7dqb I0m)(I3t2{z+5i9m diff --git a/target/test-classes/com/dynapi/domain/validation/DynamicValidatorTest.class b/target/test-classes/com/dynapi/domain/validation/DynamicValidatorTest.class deleted file mode 100644 index 711b8d760ff57dac6790245867a27829e3cb66af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9495 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 LxHu_(3gI6D>)U?7 diff --git a/target/test-classes/com/dynapi/integration/FormControllerIntegrationTest$FormControllerTestConfig.class b/target/test-classes/com/dynapi/integration/FormControllerIntegrationTest$FormControllerTestConfig.class deleted file mode 100644 index 290d20d81e4bda599118236a97df423cdfa8d5fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1465 zcmbtUZBJ7%6n+YW!5ps&f^P^;8C&3f@ryxCkcf~BFpMlw6O-<)T#EO$q_;!-SNe%W z6Muj|%6NLG+Z}HPy-9C-PEVibwC8Dm{QUYIzzWJa^q@D3OdfscXBa);N8Ag!3cT(5 zf$%Lu|5K@?ea_HZT&QI+z)P zEX=_=3kJ@}l(iF$m+Z1uk15wpY%bO8tn1ijQDk`hFBgI#zoC>ct09kL zK~i_@% diff --git a/target/test-classes/com/dynapi/integration/FormControllerIntegrationTest.class b/target/test-classes/com/dynapi/integration/FormControllerIntegrationTest.class deleted file mode 100644 index 535670c69dcd361b1a825ccc164a831b0ab337f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4835 zcmb_g>3bW+8UKxCvW~J%K$MV_6dYry98xa?64EGy$VZ5cFD%z4xHPO*BYExBu9%(m zL7H;39O39e?-P2Tlv|kgfrroiKl-u%LZ7~~yS7$|3<~6fwL7yj@9}$Y|NDRc{18AM z^)xz=($J~nDr{r8deK}q4aamV#$<7kTasbhaoe@!35Ha*Z?+3v3@6T|ySsZT!V79W z$GUrJ!YkVj?>VS;OQtkwQ=OodYgV~Bl6P#2_t4(?^!fC5q_IPTuH$pq$#9qDRgKb` zYu0STb|tR}Q`(+uobp6<&~v5m9EXdM#+MoHlUQ2SvzEq}Er$LvPgD%QCTzD-7Q}JI z6HA7qQ^pD}8a@}x4wuGwbUxRGs~NT%id~slq>;h38a}V%I_zc`Y>SrQj|Pfta(aCKRedIvmlj#x%tFa1aYpfJq40XPfJ-VM2a;tC-wFaf2Cd;U%(9- z_UZT{Ze$p}Y|XZ0!mz_4%kWh>Wy%GHM_TB4MU~o)ZtU04qvK}uGW4`kWq}|u#(Bv$ zXVz+*Tsc2AH8wJspBb5)I6GRHoM7l}33T(toPzCE9bZCrLrqsk6h*e3`&U$PCCmXG zw6?g1Z^=ZOJS`5{)2J1jkKjErc<)&6lPODA{Hg*E#b~95GU&=tk#JjiO4=juOzB2uNI!Yna8ZJByH64#aFzibTn-`U!%H2dtN|`Q+d`nW~LC5rcilY`1 zQ-ct-TYlw1tCY!cxu<;_Km5)^ZNvl<>FoEs9%EC_GK zEIMR`Z%{F9d>Ellt71AEiVd$?yr%MZ7rx1`>ps=+b-SMIE_;DnO5+@!P;KLrev3xnPr=N0MIEcK1!(_BWjKtl%;bu3v}} z%dor59Zz*&J4D(^bA!qcJS> zP`WXhJkYk~dz;}=Y7tmvyFwHvK0z0goScxM!-3#UqnUF5hzxy+XDT9iM@xcXf4YIN z>UEa+R5XG53JCR?TyKIN<6K1nIo3ZI#uM58vujHga>RAH2(!C_d(T$5Xn1Rjq4Ja5 zWsZZ>^OnWK%qkj<4?hokA zpeIv12i^mFlU_RTL;6*pK@-}K=vR*p;K%q0t$?4>*Hn1{)KaAGUwmJW8U69Ktk4QJ^+@hE@-#Ru~+!cnouR4i6>(xex<#n9h70Af0%XICbDRAxv3< z|F^XI9mntS2mEm!9Txs%;m`OBo%$=mIWrID<8Syotrfhl;dOe;(4E)Fsoy{s-o)E@ I_vGIH14o@;Zr$4=d@FrL zqKO~C4`rOaYI~f3NWA23Z)RubH@EZO`~Kt0Hvo&6%OiuH9I^%UqK{#ChwpMPA@9R3;;K&IJPH_cpkapj zQbn7M~%IQ0itmpVP6Xk-_LaLDrrv{PgR)pQw^_Sc=%nC!hG4`sZtZay?j3jNp|Gr!Fy)X(k#Ids zmE8s7Hb&^jDL325xsddGUu5+0Q*cY8C;~Nn+D$E5pD2ZGA zh(?!m;45;k=MFINiHu}|cX5JZJE)Uj09SF1l3u6iUPcCRgKo#XNh5HJ%Kd{-aD?+| pf;fgSjyqk#IOR+dvX~%G29q7{6xnxU-!x`u%+ul#Ok)=PKLPjlqH_QM diff --git a/target/test-classes/com/dynapi/integration/QueryControllerIntegrationTest.class b/target/test-classes/com/dynapi/integration/QueryControllerIntegrationTest.class deleted file mode 100644 index 2b91bead6e9b3b9ebd13649ccd4a3339861c76dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5615 zcmb_giGLJV9sj;0Fw162(}h;C6_;&_2`m|)EmtVAIgrp?Bxw*L!en=nOxVmUGqZsd zv0l}B)%&Q{`@ULR>k^8s)Z2Prwchtpt>+)$$M2h+B(upz7Uh%AXEyKme)si$?>+kO z2OkEI!oQ-ZLbZY#6-%&Gpl)2B)U~W`jcPr^<3`#OSh~}+OmCM!bwlHzf{4I1X?sG; zOj&x))H0r}?XjJSJ|k^AnKsXkLP2!|wE_{xhi%v-L6@mmj>`p>xQ5q}5xBCUb52yh z=a|-LbK_tHR|wQt`h*d|3L>YnX4GGbL)w=YYK$SfraATNV zQS;`IfB@211kKPkOU15MaSfg>pir?k-O~kP0k2s!Y4$S&;`7Yz)kjTB_l!)R;pS}1 zHKJIJYWYd1xEA$Ap2RX}Q$t7Npxj!k;+ZpB{pPJcO{0o+SWo9ug#p{sv+Y@9!mvD7 z((NnKZBWr9{kM!b{kG$^OhvGfF-i5eO17I-TramJ3%T89()pfgTeY|mTNG@S&f6xi ze9n2DrpxHomvLO!O%jWKT8$klnz2(LN(rsD1!OfnM$8ahMl+#*zKTZq{l zK^vWw&byvHVK{CSd+=-pdsTE`A2Zl?Mzsk$eavL~rkv5dba$8TrN@ZNlroMBtXoy1R2uqD( z0JkU@RB-^$p{^lG|HUh;C`xrGR^_37Ydp*kS zGrYWGMZkQz`&2X@Pvlsmi5>BcNx5)Ym0WBJR(`Etj7!@ zY>2Gl@l)}{h-qXqbM*0qoikVhwj*K2@kBD7nAEd*DKg==yF~mnX%9zFM`b0Asu+XG zRwA>tYceg+)G1AMbFyWQI8^F{?HtoQCX;r;7}jL?vxcWhR}-Iwa75@@6*UmrhO2meuQq0~_SmP`QSD(L(onUQV_H+E^-_ zmdb`HEsY|NNd+fVoCK47-=z~GP@9&`@1)nOdt(Ae%h=giS%AWxT->N-IECjcIIZFZ zxQ#8PoGD{;iPmLgOnqP~$E2=H_4amlw5A3+db*G7>+fMJsxPZkDIqI2j~A(UFCy{(}_ zl>&bKK3!428Fp0gO?b0{x2Sk4-X^g7ViYXLkTqz!J#0E#D%Gw;AvX56;~fg_R`E`} zOJH+F`V?6NKIg%&TbcHgIe&f~uQ=EtFY}8!m^AJMlgh@5cu? z43E3ERqPqez6GQ2|I-_#+S7?P9BkYE&`tp`%P8frxYYu0Plx0zxoT=Fnwv|oWVFudOM)Wktjwwx_CD2lN&pyGc zLZ+F6dU;aY_KL%W96)AgW;tE7kSpnGTI~!Eoy$8-%jnKe3>(gXPPKTC>a^2(c2IXr zxekCe-k3=}w}$7)%C7|!x7MFxjyV1d=PnpO+pS3>%MpwIDqcSYR)=NDnYHA;N|wZw zHN?|(KIQ`U#I6kv?iM@4V8j;IGIOTXavsWo^(_|^uyZ~}sj|DMK(zg2+Q|6McKhHtZFuH5R93{{03s|GG$mkm)=N+SDMwjJRWW$}Afn8uz zS%&^}GUH=;(oGt@j?Ei~;YwG?Z6;?of4U4=g|31>3-pBUYnQ@a0ky-j49CBjN|&!% z)HMqJw#cnwc($p`*i)J_^CGR_9|AX&J9aL_hz}m6NrO1=R8@TXs^T9nRuK3KS4;W( zRUgVXixBKKOxAX4X`96W<%o$F)K0@U@fx>#%)D+_qqIjrVJyenB2r_p{MH^;iB(Q_VM1@uqjVDc=ERN+7@(@mU_*m(6rsG3GL z<`m%Fk6R0P;f4ZUTENSv@tOkOcouh6A@=Sf)_ZHF@xcNA4)y#DOWGAk`TPthHUl~!jhn_7&tssBi3gC_YOh0_#^%laC-uO;eRpGJV7g;q)+~ezvG{~SN#WJx%b2X diff --git a/target/test-classes/com/dynapi/integration/SchemaAdminControllerSecurityIntegrationTest$SchemaAdminControllerTestConfig.class b/target/test-classes/com/dynapi/integration/SchemaAdminControllerSecurityIntegrationTest$SchemaAdminControllerTestConfig.class deleted file mode 100644 index 57d614056118863bc37689f8d8d2fcc8044d5bff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1765 zcmcIkT~8B16g>mQ(zVEkfZ`XZsD%O>9t~=ORX&n}1_%j0Io(dn;C7~&ohtkX|AQ~S z_@+-JlK2DsQN}x4EDI^1iEOevJ9q9q=iZrn=I5{PKLE^Q+Cv9A(@15}g-Z;5JN!NO zL$0d+tJ01LEW@QIQc3%ap))tJnMOB5KF~G4yr+0w`hix~=r9z9bUTCKHK=FSROG`dkw_`2+Rj%O!!15tO7 z{$i+0Jbd|QzQk3Ta`uo#ugk8FVJ279rs_v^BUQCxcujoJ=3QK%*tPzOh$3DU>$+hA zG3U4j7=lDSQdvN< ziS<`)$uJn>ooGRZsk5L?cvDt=E5dH;@@wwe%?d;3HnP@GR@TI(j3gcEyi(f6O+{Z~m#*lQo^EC}QoYC8a`wJTvR#x?=E}3R{q_!DriQ;}jvy zxVwwtaa+2Q*4DQqs+ORS6xL{}mQwFtC66T?*)%2@3jaaf4B2I+geinPiUghEXxoyG zlEE1I=}vY}C%tqlgW)Ru`7|*3tmDh zhVu@P-pWtyBlDH4NrcZa!dTO*h2Y@^ZpNq{Zs9gX+@ZKk2bnB>PV#+;`G%WLExruyW1Qd|OBbWbafTEgkfj3;TfC2Go{Mc0$kXUi Ka6cw6h3?;m?-Jnv diff --git a/target/test-classes/com/dynapi/integration/SchemaAdminControllerSecurityIntegrationTest.class b/target/test-classes/com/dynapi/integration/SchemaAdminControllerSecurityIntegrationTest.class deleted file mode 100644 index 0b854f674ec6e8dc58db5f6b3e1c26550adfdd0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9493 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