diff --git a/src/Actions/InterfaceAction.php b/src/Actions/InterfaceAction.php
new file mode 100644
index 0000000000000000000000000000000000000000..f4dcce08c19c42c79cb48e9031c5241114ee829d
--- /dev/null
+++ b/src/Actions/InterfaceAction.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace App\Actions;
+
+use App\Entity\InterfaceDataEntity;
+
+interface InterfaceAction
+{
+    /**
+     * абстрактная функция испольняет описаный функционал в контроллере
+     * @param array $array массив тела реквеста
+     */
+    public function act(InterfaceDataEntity $model): mixed;
+}
diff --git a/src/Entity/InterfaceDataEntity.php b/src/Entity/InterfaceDataEntity.php
new file mode 100644
index 0000000000000000000000000000000000000000..9580e66d56ce174d0f4eadc1b849e4de49ee79a9
--- /dev/null
+++ b/src/Entity/InterfaceDataEntity.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace App\Entity;
+
+use Symfony\Component\HttpFoundation\Request;
+
+interface InterfaceDataEntity
+{
+    /**
+     * преобразование реквеста в модель
+     * @param Request $request
+     * @return void
+     */
+    public function serialise(Request $request): void;
+}
diff --git a/src/Service/ValidationService.php b/src/Service/ValidationService.php
new file mode 100644
index 0000000000000000000000000000000000000000..cd9df8c84a27dc264c8bd2bce403b75e2a222ffe
--- /dev/null
+++ b/src/Service/ValidationService.php
@@ -0,0 +1,41 @@
+<?php
+
+namespace App\Service;
+
+use App\Entity\InterfaceDataEntity;
+use Symfony\Component\HttpFoundation\JsonResponse;
+use Symfony\Component\Validator\Validation;
+
+class ValidationService
+{
+    /**
+     * Валидирование содержимого модели согласно атрибутам парамтров
+     * @param InterfaceDataEntity $model
+     * @return void
+     */
+    public function validate(InterfaceDataEntity $model): void
+    {
+        $validator = Validation::createValidator();
+        $errors = $validator->validate($model);
+
+        $messages = [
+            'message' => 'validation_fail',
+            'errors' => [],
+        ];
+
+        foreach ($errors as $error) {
+            $messages['errors'][] = [
+                'property' => $error->getPropertyPath(),
+                'value' => $error->getInvalidValue(),
+                'message' => $error->getMessage(),
+            ];
+        }
+
+        if (count($messages['errors']) > 0) {
+            $response = new JsonResponse($messages, 400);
+            $response->send();
+
+            exit;
+        }
+    }
+}
\ No newline at end of file