diff --git a/src/main/java/com/example/demo/controller/LevelOperationsController.java b/src/main/java/com/example/demo/controller/LevelOperationsController.java
index 078b4cbd6b9a72146540e1d139dee6033e276143..792cd34d94f0ae42c251d0d903ff263f59e649aa 100644
--- a/src/main/java/com/example/demo/controller/LevelOperationsController.java
+++ b/src/main/java/com/example/demo/controller/LevelOperationsController.java
@@ -18,10 +18,10 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
 @RestController
-@RequestMapping("/levels")
+@RequestMapping("/{definitionId}/levels")
 @CrossOrigin(origins = "*", allowCredentials = "true", allowedHeaders = "*",
              methods = {RequestMethod.GET, RequestMethod.POST, RequestMethod.DELETE, RequestMethod.PUT})
-@Api(value = "/levels", tags = {"Level operations"})
+@Api(value = "/{definitionId}/levels", tags = {"Level operations"})
 public class LevelOperationsController {
 
     private final LevelOperationsService levelOperationsService;
@@ -36,10 +36,12 @@ public class LevelOperationsController {
     @ApiResponses(value = {@ApiResponse(code = 200, message = "Level orders changed"),
                            @ApiResponse(code = 500, message = "Unexpected application error")})
     public void createInfoLevel(
+        @ApiParam(value = "Training definition ID", required = true) @PathVariable(name = "definitionId")
+            Long definitionId,
         @ApiParam(value = "Level ID - from", required = true) @PathVariable(name = "levelIdFrom") Long levelIdFrom,
         @ApiParam(value = "Level ID - to", required = true) @PathVariable(name = "levelIdTo") Long levelIdTo) {
 
-        levelOperationsService.swapLevelsOrder(levelIdFrom, levelIdTo);
+        levelOperationsService.swapLevelsOrder(definitionId, levelIdFrom, levelIdTo);
     }
 
     @DeleteMapping(value = "/{levelId}", produces = MediaType.APPLICATION_JSON_VALUE)
@@ -47,7 +49,9 @@ public class LevelOperationsController {
     @ApiResponses(value = {@ApiResponse(code = 200, message = "Level deleted"),
                            @ApiResponse(code = 500, message = "Unexpected application error")})
     public void deleteLevel(
+        @ApiParam(value = "Training definition ID", required = true) @PathVariable(name = "definitionId")
+            Long definitionId,
         @ApiParam(value = "Level ID - from", required = true) @PathVariable(name = "levelId") Long levelId) {
-        levelOperationsService.deleteLevel(levelId);
+        levelOperationsService.deleteLevel(definitionId, levelId);
     }
 }
diff --git a/src/main/java/com/example/demo/service/LevelOperationsService.java b/src/main/java/com/example/demo/service/LevelOperationsService.java
index 6f8547ca326a6fb9b3b5c23465900bd9d19bd9c2..584c67d73307c508220d4a0976f22dc1d0eb00af 100644
--- a/src/main/java/com/example/demo/service/LevelOperationsService.java
+++ b/src/main/java/com/example/demo/service/LevelOperationsService.java
@@ -13,7 +13,7 @@ public class LevelOperationsService {
     @Autowired
     private BaseLevelRepository baseLevelRepository;
 
-    public void swapLevelsOrder(Long levelIdFrom, Long levelIdTo) {
+    public void swapLevelsOrder(Long trainingDefinitionId, Long levelIdFrom, Long levelIdTo) {
         Optional<BaseLevel> levelFrom = baseLevelRepository.findById(levelIdFrom);
         Optional<BaseLevel> levelTo = baseLevelRepository.findById(levelIdTo);
 
@@ -32,7 +32,7 @@ public class LevelOperationsService {
         baseLevelRepository.save(levelTo.get());
     }
 
-    public void deleteLevel(Long levelId) {
+    public void deleteLevel(Long trainingDefinitionId, Long levelId) {
         Optional<BaseLevel> levelEntity = baseLevelRepository.findById(levelId);
 
         if (levelEntity.isEmpty()) {