diff --git a/AsbCloudApp/Services/IWellService.cs b/AsbCloudApp/Services/IWellService.cs
index a1df94f3..edea98ae 100644
--- a/AsbCloudApp/Services/IWellService.cs
+++ b/AsbCloudApp/Services/IWellService.cs
@@ -97,13 +97,6 @@ namespace AsbCloudApp.Services
         /// <returns></returns>
         DatesRangeDto GetDatesRange(int idWell);
 
-        /// <summary>
-        /// Проверить задан ли у скважины часовой пояс и задать его если он не задан
-        /// </summary>
-        /// <param name="token"></param>
-        /// <returns></returns>
-        Task EnshureTimezonesIsSetAsync(CancellationToken token);
-
         /// <summary>
         /// ВРЕМЕННЫЙ метод
         /// </summary>
diff --git a/AsbCloudInfrastructure/Services/WellService.cs b/AsbCloudInfrastructure/Services/WellService.cs
index 4cf88d82..c47dd204 100644
--- a/AsbCloudInfrastructure/Services/WellService.cs
+++ b/AsbCloudInfrastructure/Services/WellService.cs
@@ -300,26 +300,6 @@ namespace AsbCloudInfrastructure.Services
             return dto;
         }
 
-        public async Task EnshureTimezonesIsSetAsync(CancellationToken token)
-        {
-            var cache = await GetCacheAsync(token);
-            if (!cache.Any(w => w.Timezone is null))
-                return;
-
-            var defaultTimeZone = new SimpleTimezone
-            {
-                Hours = 5,
-                IsOverride = false,
-                TimezoneId = "Assumed",
-            };
-
-            await dbSet.Where(w => w.Timezone == null)
-                .ForEachAsync(w => w.Timezone = defaultTimeZone, token);
-
-            await dbContext.SaveChangesAsync(token);
-            DropCache();
-        }
-
         public SimpleTimezoneDto GetTimezone(int idWell)
         {
             var well = GetOrDefault(idWell);
diff --git a/AsbCloudInfrastructure/Startup.cs b/AsbCloudInfrastructure/Startup.cs
index 207270c2..5cd670fd 100644
--- a/AsbCloudInfrastructure/Startup.cs
+++ b/AsbCloudInfrastructure/Startup.cs
@@ -27,9 +27,7 @@ namespace AsbCloudInfrastructure
             context.Database.SetCommandTimeout(TimeSpan.FromSeconds(2 * 60));
             context.Database.Migrate();
 
-            var wellService = provider.GetRequiredService<IWellService>();
-            wellService.EnshureTimezonesIsSetAsync(CancellationToken.None).Wait();// TODO: make this background work
-
+            // TODO: Сделать инициализацию кеша телеметрии более явной.
             _ = provider.GetRequiredService<TelemetryDataCache<TelemetryDataSaubDto>>();
             _ = provider.GetRequiredService<TelemetryDataCache<TelemetryDataSpinDto>>();
 
diff --git a/AsbCloudWebApi/Controllers/AdminTelemetryController.cs b/AsbCloudWebApi/Controllers/AdminTelemetryController.cs
index b9f30009..4fb1f9fb 100644
--- a/AsbCloudWebApi/Controllers/AdminTelemetryController.cs
+++ b/AsbCloudWebApi/Controllers/AdminTelemetryController.cs
@@ -28,8 +28,7 @@ namespace AsbCloudWebApi.Controllers
         /// Merge telemetries. No body required.
         /// </summary>
         /// <returns></returns>
-        [HttpPost]
-        [Route("/merge/{idFrom}/{idTo}")]
+        [HttpPost("/merge/{idFrom}/{idTo}")]
         [Permission]
         public async Task<IActionResult> MergeTelemetriesAsync(int idFrom, int idTo, CancellationToken token)
         {
diff --git a/AsbCloudWebApi/Controllers/AdminWellController.cs b/AsbCloudWebApi/Controllers/AdminWellController.cs
index 4a670652..ac08b383 100644
--- a/AsbCloudWebApi/Controllers/AdminWellController.cs
+++ b/AsbCloudWebApi/Controllers/AdminWellController.cs
@@ -18,13 +18,5 @@ namespace AsbCloudWebApi.Controllers
         public AdminWellController(IWellService service)
             : base(service)
         { }
-
-        [HttpPost("EnshureTimezonesIsSet")]
-        [Permission]
-        public async Task<IActionResult> EnshureTimezonesIsSet(CancellationToken token)
-        {
-            await ((IWellService)service).EnshureTimezonesIsSetAsync(token);
-            return Ok();
-        }
     }
 }
diff --git a/AsbCloudWebApi/Controllers/AuthController.cs b/AsbCloudWebApi/Controllers/AuthController.cs
index ca3143ba..a041b2a5 100644
--- a/AsbCloudWebApi/Controllers/AuthController.cs
+++ b/AsbCloudWebApi/Controllers/AuthController.cs
@@ -2,7 +2,6 @@
 using AsbCloudApp.Data.User;
 using AsbCloudApp.Repositories;
 using AsbCloudApp.Services;
-using AsbCloudInfrastructure.Repository;
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
 using Swashbuckle.AspNetCore.Annotations;
diff --git a/AsbCloudWebApi/Controllers/AutoGeneratedDailyReportController.cs b/AsbCloudWebApi/Controllers/AutoGeneratedDailyReportController.cs
index 0ef6c6da..df94b605 100644
--- a/AsbCloudWebApi/Controllers/AutoGeneratedDailyReportController.cs
+++ b/AsbCloudWebApi/Controllers/AutoGeneratedDailyReportController.cs
@@ -40,10 +40,9 @@ public class AutoGeneratedDailyReportController : ControllerBase
 	/// <param name="cancellationToken"></param>
 	/// <returns></returns>
 	[HttpGet]
-	[Route("generate")]
-	[ProducesResponseType(typeof(PhysicalFileResult), (int)HttpStatusCode.OK)]
+	[ProducesResponseType(typeof(PhysicalFileResult), (int)HttpStatusCode.OK, "application/octet-stream")]
 	[ProducesResponseType(StatusCodes.Status204NoContent)]
-	public async Task<IActionResult> GenerateAsync([FromRoute] int idWell, 
+	public async Task<IActionResult> GenerateReportAsync([FromRoute] int idWell, 
 		[Required] DateOnly reportDate, 
 		CancellationToken cancellationToken)
 	{
@@ -54,7 +53,7 @@ public class AutoGeneratedDailyReportController : ControllerBase
 			reportDate,
 			cancellationToken);
 
-		return File(reportFile.stream, "application/octet-stream", reportFile.fileName);
+		return File(reportFile.stream, reportFile.fileName);
 	}
 
 	/// <summary>
@@ -64,7 +63,7 @@ public class AutoGeneratedDailyReportController : ControllerBase
 	/// <param name="request">Параметры запроса</param>
 	/// <param name="cancellationToken"></param>
 	/// <returns></returns>
-	[HttpGet]
+	[HttpGet("all")]
 	[ProducesResponseType(typeof(PaginationContainer<AutoGeneratedDailyReportInfoDto>), (int)HttpStatusCode.OK)]
 	public async Task<IActionResult> GetListAsync([FromRoute][Required] int idWell,
 		[FromQuery] AutoGeneratedDailyReportRequest request,
diff --git a/AsbCloudWebApi/Controllers/DailyReportController.cs b/AsbCloudWebApi/Controllers/DailyReportController.cs
index 5abc6659..707421dd 100644
--- a/AsbCloudWebApi/Controllers/DailyReportController.cs
+++ b/AsbCloudWebApi/Controllers/DailyReportController.cs
@@ -1,7 +1,6 @@
 using AsbCloudApp.Data;
 using AsbCloudApp.Data.DailyReport;
 using AsbCloudApp.Exceptions;
-using AsbCloudApp.Repositories;
 using AsbCloudApp.Services;
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
@@ -10,6 +9,7 @@ using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations;
 using System.Threading;
 using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
 
 namespace AsbCloudWebApi.Controllers
 {
@@ -24,16 +24,13 @@ namespace AsbCloudWebApi.Controllers
     {
         private readonly IDailyReportService dailyReportService;
         private readonly IWellService wellService;
-        private readonly IWellOperationRepository operationRepository;
 
         public DailyReportController(
             IDailyReportService dailyReportService,
-            IWellService wellService,
-            IWellOperationRepository operationRepository)
+            IWellService wellService)
         {
             this.dailyReportService = dailyReportService;
             this.wellService = wellService;
-            this.operationRepository = operationRepository;
         }
 
         /// <summary>
@@ -165,7 +162,8 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="token"></param>
         /// <returns></returns>
         [HttpGet("{date}/excel")]
-        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK)]
+        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK, "application/octet-stream")]
+        [ProducesResponseType(StatusCodes.Status204NoContent)]
         public async Task<IActionResult> DownloadAsync(int idWell, DateOnly date, CancellationToken token)
         {
             if (!await UserHasAccesToWellAsync(idWell, token))
@@ -175,13 +173,12 @@ namespace AsbCloudWebApi.Controllers
                 ?? throw new ArgumentInvalidException($"Скважина c id:{idWell} не найдена", nameof(idWell));
 
             var stream = await dailyReportService.MakeReportAsync(idWell, date, token);
-            if (stream is not null)
-            {
-                var fileName = $"Суточный рапорт по скважине {well.Caption} куст {well.Cluster}.xlsx";
-                return File(stream, "application/octet-stream", fileName);
-            }
-            else
+            if (stream is null) 
                 return NoContent();
+            
+            var fileName = $"Суточный рапорт по скважине {well.Caption} куст {well.Cluster}.xlsx";
+            return File(stream, fileName);
+
         }
 
         protected async Task<bool> UserHasAccesToWellAsync(int idWell, CancellationToken token)
diff --git a/AsbCloudWebApi/Controllers/DrillingProgramController.cs b/AsbCloudWebApi/Controllers/DrillingProgramController.cs
index 69944c9d..fc4ad8ea 100644
--- a/AsbCloudWebApi/Controllers/DrillingProgramController.cs
+++ b/AsbCloudWebApi/Controllers/DrillingProgramController.cs
@@ -83,7 +83,7 @@ namespace AsbCloudWebApi.Controllers
         /// </summary>
         /// <param name="idWell"></param>
         /// <returns></returns>
-        [HttpPost("ClearError")]
+        [HttpDelete("errors")]
         [Permission("DrillingProgram.get")]
         public IActionResult ClearError(int idWell)
         {
diff --git a/AsbCloudWebApi/Controllers/FactTrajectoryController.cs b/AsbCloudWebApi/Controllers/FactTrajectoryController.cs
index c17ce3fd..fbdb6703 100644
--- a/AsbCloudWebApi/Controllers/FactTrajectoryController.cs
+++ b/AsbCloudWebApi/Controllers/FactTrajectoryController.cs
@@ -30,7 +30,6 @@ public class FactTrajectoryController : ControllerBase
     /// <param name="cancellationToken">Токен отмены операции</param>
     /// <returns></returns>
     [HttpGet]
-    [Route("getRows")]
     [ProducesResponseType(typeof(IEnumerable<TrajectoryGeoPlanDto>), (int)System.Net.HttpStatusCode.OK)]
     public async Task<IActionResult> GetRowsAsync([FromRoute] int idWell, 
         CancellationToken cancellationToken)
diff --git a/AsbCloudWebApi/Controllers/FileController.cs b/AsbCloudWebApi/Controllers/FileController.cs
index 2a7d6fcb..e9a7990b 100644
--- a/AsbCloudWebApi/Controllers/FileController.cs
+++ b/AsbCloudWebApi/Controllers/FileController.cs
@@ -73,8 +73,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="request"> </param>
         /// <param name="token"> Токен отмены задачи </param>
         /// <returns>Список информации о файлах в этой категории</returns>
-        [HttpGet]
-        [Route("/api/files")]
+        [HttpGet("/api/files")]
         [Permission]
         [ProducesResponseType(typeof(PaginationContainer<FileInfoDto>), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetFilesInfoAsync(
@@ -101,8 +100,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="idFile">id запрашиваемого файла</param>
         /// <param name="token"> Токен отмены задачи </param>
         /// <returns>Запрашиваемый файл</returns>
-        [HttpGet]
-        [Route("{idFile}")]
+        [HttpGet("{idFile}")]
         [Permission]
         [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetFileAsync(
@@ -220,8 +218,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="idFile">id запрашиваемого файла</param>
         /// <param name="token"> Токен отмены задачи </param>
         /// <returns>Запрашиваемый файл</returns>
-        [HttpGet]
-        [Route("/api/files/{idFile}")]
+        [HttpGet("/api/files/{idFile}")]
         [Permission]
         [ProducesResponseType(typeof(FileInfoDto), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetFileInfoAsync([FromRoute] int idFile, CancellationToken token)
diff --git a/AsbCloudWebApi/Controllers/HelpPageController.cs b/AsbCloudWebApi/Controllers/HelpPageController.cs
index db0b5faf..a90ea46a 100644
--- a/AsbCloudWebApi/Controllers/HelpPageController.cs
+++ b/AsbCloudWebApi/Controllers/HelpPageController.cs
@@ -102,8 +102,7 @@ public class HelpPageController : ControllerBase
     /// <param name="idCategory">Id категории файла. Допустимое значение параметра: 20000</param>
     /// <param name="cancellationToken"></param>
     /// <returns></returns>
-    [HttpGet]
-    [Route("isExisting")]
+    [HttpGet("isExisting")]
     [ProducesResponseType(typeof(bool), (int)HttpStatusCode.OK)]
     public async Task<IActionResult> IsExistingAsync(
         [Required] string key,
diff --git a/AsbCloudWebApi/Controllers/MeasureController.cs b/AsbCloudWebApi/Controllers/MeasureController.cs
index 510a34ca..7dc1afde 100644
--- a/AsbCloudWebApi/Controllers/MeasureController.cs
+++ b/AsbCloudWebApi/Controllers/MeasureController.cs
@@ -24,9 +24,8 @@ namespace AsbCloudWebApi.Controllers
             this.wellService = wellService;
         }
 
-        [HttpGet]
+        [HttpGet("categories")]
         [Permission]
-        [Route("categories")]
         public async Task<IActionResult> GetCategoriesAsync([FromRoute] int idWell, CancellationToken token)
         {
             if (!await CanUserAccessToWellAsync(idWell, token).ConfigureAwait(false))
@@ -36,9 +35,8 @@ namespace AsbCloudWebApi.Controllers
             return Ok(result);
         }
 
-        [HttpGet]
+        [HttpGet("last/{idCategory}")]
         [Permission]
-        [Route("last/{idCategory}")]
         public async Task<IActionResult> GetLastAsync([FromRoute] int idWell, [FromRoute] int idCategory, CancellationToken token)
         {
             if (!await CanUserAccessToWellAsync(idWell, token).ConfigureAwait(false))
@@ -55,9 +53,8 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="idCategory">Категория скважины. Не обязательный параметр.</param>
         /// <param name="token"></param>
         /// <returns></returns>
-        [HttpGet]
+        [HttpGet("history")]
         [Permission]
-        [Route("history")]
         public async Task<IActionResult> GetHisoryAsync([FromRoute] int idWell, CancellationToken token,
             int? idCategory = null)
         {
@@ -90,9 +87,8 @@ namespace AsbCloudWebApi.Controllers
             return Ok(result);
         }
 
-        [HttpDelete]
+        [HttpDelete("history/{idData}")]
         [Permission]
-        [Route("history/{idData}")]
         public async Task<IActionResult> MarkAsDeleteAsync([FromRoute] int idWell, [FromRoute] int idData, CancellationToken token)
         {
             if (!await CanUserAccessToWellAsync(idWell, token).ConfigureAwait(false))
diff --git a/AsbCloudWebApi/Controllers/NotificationController.cs b/AsbCloudWebApi/Controllers/NotificationController.cs
index 2e1bb976..a954d2a9 100644
--- a/AsbCloudWebApi/Controllers/NotificationController.cs
+++ b/AsbCloudWebApi/Controllers/NotificationController.cs
@@ -16,7 +16,7 @@ namespace AsbCloudWebApi.Controllers;
 /// </summary>
 [ApiController]
 [Authorize]
-[Route("api/notification")]
+[Route("api/[controller]")]
 public class NotificationController : ControllerBase
 {
 	private readonly NotificationService notificationService;
@@ -40,7 +40,6 @@ public class NotificationController : ControllerBase
 	/// <param name="cancellationToken"></param>
 	/// <returns></returns>
 	[HttpPost]
-	[Route("send")]
 	public async Task<IActionResult> SendAsync([Required] int idUser,
 		[Required]
 		[Range(minimum: 1, maximum: 1, ErrorMessage = "Id категории уведомления недоступно. Допустимые: 1")]
@@ -70,7 +69,6 @@ public class NotificationController : ControllerBase
 	/// <param name="cancellationToken"></param>
 	/// <returns></returns>
 	[HttpPut]
-	[Route("update")]
 	public async Task<IActionResult> UpdateAsync([Required] int idNotification,
 		[Required] bool isRead,
 		CancellationToken cancellationToken)
@@ -88,8 +86,7 @@ public class NotificationController : ControllerBase
 	/// <param name="idNotification">Id уведомления</param>
 	/// <param name="cancellationToken"></param>
 	/// <returns></returns>
-	[HttpGet]
-	[Route("get/{idNotification}")]
+	[HttpGet("{idNotification}")]
 	[ProducesResponseType(typeof(NotificationDto), (int)System.Net.HttpStatusCode.OK)]
 	public async Task<IActionResult> GetAsync([Required] int idNotification,
 		CancellationToken cancellationToken)
@@ -112,7 +109,6 @@ public class NotificationController : ControllerBase
 	/// <param name="cancellationToken"></param>
 	/// <returns></returns>
 	[HttpGet]
-	[Route("getList")]
 	[ProducesResponseType(typeof(PaginationContainer<NotificationDto>), (int)System.Net.HttpStatusCode.OK)]
 	public async Task<IActionResult> GetListAsync([FromQuery] NotificationRequest request,
 		CancellationToken cancellationToken)
@@ -135,8 +131,7 @@ public class NotificationController : ControllerBase
 	/// <param name="idNotification">Id уведомления</param>
 	/// <param name="cancellationToken"></param>
 	/// <returns></returns>
-	[HttpDelete]
-	[Route("delete")]
+	[HttpDelete("{idNotification}")]
 	public async Task<IActionResult> DeleteAsync([Required] int idNotification,
 		CancellationToken cancellationToken)
 	{
diff --git a/AsbCloudWebApi/Controllers/OperationStatController.cs b/AsbCloudWebApi/Controllers/OperationStatController.cs
index 9fa4f5bd..d4346255 100644
--- a/AsbCloudWebApi/Controllers/OperationStatController.cs
+++ b/AsbCloudWebApi/Controllers/OperationStatController.cs
@@ -77,8 +77,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="idCluster">id куста</param>
         /// <param name="token"></param>
         /// <returns></returns>
-        [HttpGet]
-        [Route("cluster/{idCluster}/stat")]
+        [HttpGet("cluster/{idCluster}/stat")]
         [Permission]
         [ProducesResponseType(typeof(StatClusterDto), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetStatClusterAsync(int idCluster,
@@ -99,8 +98,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="idWells">список скважин</param>
         /// <param name="token"></param>
         /// <returns></returns>
-        [HttpGet]
-        [Route("wellsStats")]
+        [HttpGet("wellsStats")]
         [Permission]
         [ProducesResponseType(typeof(IEnumerable<StatWellDto>), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetWellsStatAsync([FromQuery] IEnumerable<int> idWells, CancellationToken token)
@@ -123,8 +121,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="idWell">id скважины</param>
         /// <param name="token"></param>
         /// <returns></returns>
-        [HttpGet]
-        [Route("well/{idWell}/stat")]
+        [HttpGet("well/{idWell}/stat")]
         [Permission]
         [ProducesResponseType(typeof(StatWellDto), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetStatWellAsync(int idWell,
@@ -144,8 +141,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="idWell"></param>
         /// <param name="token"></param>
         /// <returns></returns>
-        [HttpGet]
-        [Route("well/{idWell}/tvd")]
+        [HttpGet("well/{idWell}/tvd")]
         [Permission]
         [ProducesResponseType(typeof(IEnumerable<PlanFactPredictBase<WellOperationDto>>), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetTvdAsync(int idWell,
diff --git a/AsbCloudWebApi/Controllers/OperationValueController.cs b/AsbCloudWebApi/Controllers/OperationValueController.cs
index 6e9c312b..5a58953b 100644
--- a/AsbCloudWebApi/Controllers/OperationValueController.cs
+++ b/AsbCloudWebApi/Controllers/OperationValueController.cs
@@ -8,7 +8,7 @@ namespace AsbCloudWebApi.Controllers
     /// <summary>
     /// Целевые и нормативные значения по глубине
     /// </summary>
-    [Route("api/operationValue")]
+    [Route("api/[controller]")]
     [ApiController]
     [Authorize]
     public class OperationValueController : CrudWellRelatedController<OperationValueDto, IRepositoryWellRelated<OperationValueDto>>
diff --git a/AsbCloudWebApi/Controllers/PlannedTrajectoryController.cs b/AsbCloudWebApi/Controllers/PlannedTrajectoryController.cs
index 5da1a2c2..322dc454 100644
--- a/AsbCloudWebApi/Controllers/PlannedTrajectoryController.cs
+++ b/AsbCloudWebApi/Controllers/PlannedTrajectoryController.cs
@@ -38,18 +38,18 @@ namespace AsbCloudWebApi.Controllers
         }
 
         /// <summary>
-        /// Возвращает шаблон для заполнения строк плановой траектории
+        /// Возвращает excel шаблон для заполнения строк плановой траектории
         /// </summary>
         /// <returns>Запрашиваемый файл</returns>
-        [HttpGet]
-        [Route("template")]
+        [HttpGet("template")]
         [AllowAnonymous]
-        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK)]
+        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK,"application/octet-stream")]
+        [ProducesResponseType(StatusCodes.Status204NoContent)]
         public IActionResult GetTemplate()
         {
             var stream = plannedTrajectoryImportService.GetTemplateFile();
             var fileName = "ЕЦП_шаблон_файла_плановая_траектория.xlsx";
-            return File(stream, "application/octet-stream", fileName);
+            return File(stream, fileName);
         }
 
         /// <summary>
@@ -58,9 +58,9 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="idWell">id скважины</param>
         /// <param name="token"> Токен отмены задачи </param>
         /// <returns>Запрашиваемый файл</returns>
-        [HttpGet]
-        [Route("export")]
-        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK)]
+        [HttpGet("export")]
+        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK, "application/octet-stream")]
+        [ProducesResponseType(StatusCodes.Status204NoContent)]
         public async Task<IActionResult> ExportAsync([FromRoute] int idWell, CancellationToken token)
         {
             if (!await CanUserAccessToWellAsync(idWell,
@@ -68,7 +68,7 @@ namespace AsbCloudWebApi.Controllers
                 return Forbid();
             var stream = await plannedTrajectoryImportService.ExportAsync(idWell, token);
             var fileName = await plannedTrajectoryImportService.GetFileNameAsync(idWell, token);
-            return File(stream, "application/octet-stream", fileName);
+            return File(stream, fileName);
         }
 
         /// <summary>
@@ -79,8 +79,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="deleteBeforeImport">Удалить операции перед импортом, если фал валидный</param>
         /// <param name="token"> Токен отмены задачи </param>
         /// <returns>количество успешно записанных строк в БД</returns>
-        [HttpPost]
-        [Route("import/{deleteBeforeImport}")]
+        [HttpPost("import/{deleteBeforeImport}")]
         [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> ImportAsync(int idWell,
             [FromForm] IFormFileCollection files,
@@ -118,7 +117,6 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="token"> Токен отмены задачи </param>
         /// <returns>Список добавленных координат плановой траектории</returns>
         [HttpGet]
-        [Route("getRows")]
         [ProducesResponseType(typeof(IEnumerable<TrajectoryGeoPlanDto>), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetAsync([FromRoute] int idWell, CancellationToken token)
         {
@@ -137,7 +135,6 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="token"></param>
         /// <returns>количество успешно записанных строк в БД</returns>
         [HttpPost]
-        [Route("addRow")]
         [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> AddAsync(int idWell, [FromBody] TrajectoryGeoPlanDto row,
             CancellationToken token)
@@ -160,8 +157,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="rows"></param>
         /// <param name="token"></param>
         /// <returns>количество успешно записанных строк в БД</returns>
-        [HttpPost]
-        [Route("addRangeRows")]
+        [HttpPost("range")]
         [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> AddRangeAsync(int idWell, [FromBody] IEnumerable<TrajectoryGeoPlanDto> rows,
             CancellationToken token)
@@ -231,7 +227,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="idWell"></param>
         /// <param name="token"></param>
         /// <returns></returns>
-        [HttpGet]
+        [HttpGet("trajectoryCartesianPlanFact")]
         [ProducesResponseType(typeof(PlanFactBase<IEnumerable<TrajectoryCartesianPlanDto>, IEnumerable<TrajectoryCartesianFactDto>>), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetTrajectoryCartesianPlanFactAsync(int idWell, CancellationToken token)
         {
diff --git a/AsbCloudWebApi/Controllers/ProcessMapController.cs b/AsbCloudWebApi/Controllers/ProcessMapController.cs
index ffa88938..0199cb9a 100644
--- a/AsbCloudWebApi/Controllers/ProcessMapController.cs
+++ b/AsbCloudWebApi/Controllers/ProcessMapController.cs
@@ -57,9 +57,8 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="updateFrom"> Дата, с которой следует искать новые параметры </param>
         /// <param name="token"> Токен отмены задачи </param>
         /// <returns> Список параметров для коридоров бурения </returns>
-        [HttpGet]
+        [HttpGet("/api/telemetry/{uid}/drillFlowChart")]
         [Obsolete("use GetByUidAsync(..) instead")]
-        [Route("/api/telemetry/{uid}/drillFlowChart")]
         [AllowAnonymous]
         [ProducesResponseType(typeof(IEnumerable<ProcessMapPlanDto>), (int)System.Net.HttpStatusCode.OK)]
         public IActionResult GetByTelemetry(string uid, DateTime updateFrom, CancellationToken token)
@@ -77,8 +76,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="updateFrom"> Дата, с которой следует искать новые параметры </param>
         /// <param name="token"> Токен отмены задачи </param>
         /// <returns> Список параметров для коридоров бурения </returns>
-        [HttpGet]
-        [Route("/api/telemetry/{uid}/processMap")]
+        [HttpGet("/api/telemetry/{uid}/processMap")]
         [AllowAnonymous]
         [ProducesResponseType(typeof(IEnumerable<ProcessMapPlanDto>), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetByUidAsync(string uid, DateTime updateFrom, CancellationToken token)
@@ -99,9 +97,9 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="wellId"></param>
         /// /// <param name="token"></param>
         /// <returns></returns>
-        [HttpGet]
-        [Route("getReportFile/{wellId}")]
-        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK)]
+        [HttpGet("report/{wellId}")]
+        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK, "application/octet-stream")]
+        [ProducesResponseType(StatusCodes.Status204NoContent)]
         public async Task<IActionResult> GetReportFileAsync(int wellId, CancellationToken token)
         {
             var stream = await processMapReportService.MakeReportAsync(wellId, token);
@@ -110,14 +108,12 @@ namespace AsbCloudWebApi.Controllers
                 var well = await wellService.GetOrDefaultAsync(wellId, token);
                 if (well is null)
                     return NoContent();
-                else
-                {
-                    var fileName = $"РТК по скважине {well.Caption} куст {well.Cluster}.xlsx";
-                    return File(stream, "application/octet-stream", fileName);
-                }
+                
+                var fileName = $"РТК по скважине {well.Caption} куст {well.Cluster}.xlsx";
+                return File(stream, fileName);
             }
-            else
-                return NoContent();
+            
+            return NoContent();
         }
 
         /// <summary>
@@ -126,8 +122,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="wellId"></param>
         /// <param name="token"></param>
         /// <returns></returns>
-        [HttpGet]
-        [Route("getDrillProcessMap/{wellId}")]
+        [HttpGet("report/{wellId}/data")]
         [ProducesResponseType(typeof(IEnumerable<ProcessMapReportDto>), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetDrillProcessMap(int wellId, CancellationToken token)
         {
@@ -169,14 +164,13 @@ namespace AsbCloudWebApi.Controllers
         /// Возвращает шаблон файла импорта плановой РТК
         /// </summary>
         /// <returns>Запрашиваемый файл</returns>
-        [HttpGet]
-        [Route("template")]
-        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK)]
+        [HttpGet("template")]
+        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK, "application/octet-stream")]
         public async Task<IActionResult> GetTemplateAsync(CancellationToken cancellationToken)
         {
             var stream = await processMapPlanImportService.GetExcelTemplateStreamAsync(cancellationToken);
             var fileName = "ЕЦП_шаблон_файла_РТК.xlsx";
-            return File(stream, "application/octet-stream", fileName);
+            return File(stream, fileName);
         }
 
         /// <summary>
@@ -187,8 +181,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="file">Загружаемый файл</param>
         /// <param name="cancellationToken"></param>
         /// <returns></returns>
-        [HttpPost]
-        [Route("import/{idWell}/{options}")]
+        [HttpPost("import/{idWell}/{options}")]
         public async Task<IActionResult> ImportAsync(int idWell,
             int options,
             [Required] IFormFile file,
@@ -226,9 +219,9 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="idWell">Id скважины</param>
         /// <param name="cancellationToken"></param>
         /// <returns></returns>
-        [HttpGet]
-        [Route("export/{idWell}")]
-        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK)]
+        [HttpGet("export/{idWell}")]
+        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK, "application/octet-stream")]
+        [ProducesResponseType(StatusCodes.Status204NoContent)]
         public async Task<IActionResult> ExportAsync(int idWell, CancellationToken cancellationToken)
         {
             int? idUser = User.GetUserId();
@@ -243,7 +236,7 @@ namespace AsbCloudWebApi.Controllers
 
             var stream = await processMapPlanImportService.ExportAsync(idWell, cancellationToken);
             var fileName = $"РТК-план по скважине {well.Caption} куст {well.Cluster}.xlsx";
-            return File(stream, "application/octet-stream", fileName);
+            return File(stream, fileName);
         }
         
         private async Task NotifyUsersBySignalR(int idWell, CancellationToken token)
diff --git a/AsbCloudWebApi/Controllers/ReportController.cs b/AsbCloudWebApi/Controllers/ReportController.cs
index c20db17b..3386d505 100644
--- a/AsbCloudWebApi/Controllers/ReportController.cs
+++ b/AsbCloudWebApi/Controllers/ReportController.cs
@@ -104,8 +104,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="request">Параметры запроса</param>
         /// <param name="token">Токен для отмены задачи</param>
         /// <returns>прогнозируемое кол-во страниц отчета</returns>
-        [HttpGet]
-        [Route("reportSize")]
+        [HttpGet("reportSize")]
         [Permission]
         [ProducesResponseType(typeof(string), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetReportSizeAsync([Required] int idWell, 
@@ -133,8 +132,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="idWell">id скважины</param>
         /// <param name="token">Токен для отмены задачи</param>
         /// <returns>Даты самого старого и самого свежего отчетов в БД</returns>
-        [HttpGet]
-        [Route("datesRange")]
+        [HttpGet("datesRange")]
         [Permission]
         [ProducesResponseType(typeof(DatesRangeDto), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetReportsDateRangeAsync(int idWell, CancellationToken token)
diff --git a/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs b/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs
index 02737317..0a16bcfd 100644
--- a/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs
+++ b/AsbCloudWebApi/Controllers/SAUB/DetectedOperationController.cs
@@ -8,6 +8,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Threading;
 using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
 
 namespace AsbCloudWebApi.Controllers.SAUB
 {
@@ -120,10 +121,10 @@ namespace AsbCloudWebApi.Controllers.SAUB
         /// <param name="idCluster"></param>
         /// <param name="token"> Токен отмены задачи </param>
         /// <returns>Запрашиваемый файл</returns>
-        [HttpGet]
-        [Route("export")]
+        [HttpGet("export")]
         [Permission]
-        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK)]
+        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK, "application/octet-stream")]
+        [ProducesResponseType(StatusCodes.Status204NoContent)]
         public async Task<IActionResult> ExportAsync(int? idWell, int? idCluster, CancellationToken token)
         {
             if (idCluster is null && idWell is null)
@@ -151,7 +152,7 @@ namespace AsbCloudWebApi.Controllers.SAUB
 
             var stream = await detectedOperationService.ExportAsync(idsWells, token);
             var fileName = "operations.xlsx";
-            return File(stream, "application/octet-stream", fileName);
+            return File(stream, fileName);
         }
     }
 }
diff --git a/AsbCloudWebApi/Controllers/SAUB/MessageController.cs b/AsbCloudWebApi/Controllers/SAUB/MessageController.cs
index b2bec1b8..cdac923d 100644
--- a/AsbCloudWebApi/Controllers/SAUB/MessageController.cs
+++ b/AsbCloudWebApi/Controllers/SAUB/MessageController.cs
@@ -64,8 +64,7 @@ namespace AsbCloudWebApi.Controllers.SAUB
         /// <param name="idWell">id скважины</param>
         /// <param name="token">Токен для отмены задачи</param>
         /// <returns>список сообщений по скважине</returns>
-        [HttpGet]
-        [Route("datesRange")]
+        [HttpGet("datesRange")]
         [Permission]
         [ProducesResponseType(typeof(DatesRangeDto), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetMessagesDateRangeAsync(int idWell, CancellationToken token)
diff --git a/AsbCloudWebApi/Controllers/SAUB/TelemetryController.cs b/AsbCloudWebApi/Controllers/SAUB/TelemetryController.cs
index f7fe0b74..a70cc72f 100644
--- a/AsbCloudWebApi/Controllers/SAUB/TelemetryController.cs
+++ b/AsbCloudWebApi/Controllers/SAUB/TelemetryController.cs
@@ -44,8 +44,7 @@ namespace AsbCloudWebApi.Controllers.SAUB
         /// <param name="info">Информация об отправителе</param>
         /// <param name="token">Токен отмены задачи</param>
         /// <returns></returns>
-        [HttpPost]
-        [Route("{uid}/info")]
+        [HttpPost("{uid}/info")]
         public async Task<IActionResult> PostInfoAsync(string uid, [FromBody] TelemetryInfoDto info,
             CancellationToken token)
         {
@@ -60,8 +59,7 @@ namespace AsbCloudWebApi.Controllers.SAUB
         /// <param name="dtos">сообщения</param>
         /// <param name="token">Токен для отмены задачи</param>
         /// <returns></returns>
-        [HttpPost]
-        [Route("{uid}/message")]
+        [HttpPost("{uid}/message")]
         public async Task<IActionResult> PostMessagesAsync(string uid, [FromBody] IEnumerable<TelemetryMessageDto> dtos,
             CancellationToken token)
         {
@@ -82,8 +80,7 @@ namespace AsbCloudWebApi.Controllers.SAUB
         /// <param name="events">справочник событий</param>
         /// <param name="token">Токен для отмены задачи</param>
         /// <returns></returns>
-        [HttpPost]
-        [Route("{uid}/event")]
+        [HttpPost("{uid}/event")]
         public async Task<IActionResult> PostEventsAsync(string uid, [FromBody] List<EventDto> events,
             CancellationToken token)
         {
@@ -99,8 +96,7 @@ namespace AsbCloudWebApi.Controllers.SAUB
         /// <param name="users">справочник пользователей телеметрии</param>
         /// <param name="token"></param>
         /// <returns></returns>
-        [HttpPost]
-        [Route("{uid}/user")]
+        [HttpPost("{uid}/user")]
         public async Task<IActionResult> PostUsersAsync(string uid, [FromBody] List<TelemetryUserDto> users,
             CancellationToken token)
         {
diff --git a/AsbCloudWebApi/Controllers/SAUB/TelemetryDataBaseController.cs b/AsbCloudWebApi/Controllers/SAUB/TelemetryDataBaseController.cs
index 8eb26d56..05af2b9a 100644
--- a/AsbCloudWebApi/Controllers/SAUB/TelemetryDataBaseController.cs
+++ b/AsbCloudWebApi/Controllers/SAUB/TelemetryDataBaseController.cs
@@ -44,8 +44,7 @@ namespace AsbCloudWebApi.Controllers.SAUB
         /// <param name="dtos">Данные</param>
         /// <param name="token">Токен для отмены задачи</param>
         /// <returns></returns>
-        [HttpPost]
-        [Route("{uid}")]
+        [HttpPost("{uid}")]
         [AllowAnonymous]
         public virtual async Task<IActionResult> PostDataAsync(string uid, [FromBody] IEnumerable<TDto> dtos,
             CancellationToken token)
@@ -102,8 +101,7 @@ namespace AsbCloudWebApi.Controllers.SAUB
         /// <param name="idWell">id скважины</param>
         /// <param name="token">Токен завершения задачи</param>
         /// <returns></returns>
-        [HttpGet]
-        [Route("{idWell}/datesRange")]
+        [HttpGet("{idWell}/datesRange")]
         [Permission]
         [ProducesResponseType(typeof(DatesRangeDto), (int)System.Net.HttpStatusCode.OK)]
         public virtual async Task<ActionResult<DatesRangeDto>> GetDataDatesRangeAsync(int idWell,
diff --git a/AsbCloudWebApi/Controllers/SAUB/TelemetryDataSaubController.cs b/AsbCloudWebApi/Controllers/SAUB/TelemetryDataSaubController.cs
index 8158308e..5cf3fce0 100644
--- a/AsbCloudWebApi/Controllers/SAUB/TelemetryDataSaubController.cs
+++ b/AsbCloudWebApi/Controllers/SAUB/TelemetryDataSaubController.cs
@@ -3,11 +3,10 @@ using AsbCloudApp.Services;
 using AsbCloudWebApi.SignalR;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.SignalR;
-using System.IO;
 using System.Threading.Tasks;
 using System.Threading;
-using AsbCloudInfrastructure.Services;
 using System;
+using Microsoft.AspNetCore.Http;
 
 namespace AsbCloudWebApi.Controllers.SAUB
 {
@@ -44,7 +43,8 @@ namespace AsbCloudWebApi.Controllers.SAUB
         /// <param name="token"></param>
         /// <returns></returns>
         [HttpGet("{idWell}/export/csv")]
-        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK)]
+        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK, "application/octet-stream")]
+        [ProducesResponseType(StatusCodes.Status204NoContent)]
         public async Task<IActionResult> GetZippedCsv(int idWell, DateTime beginDate, DateTime endDate, CancellationToken token)
         {
             int? idCompany = User.GetCompanyId();
@@ -60,7 +60,7 @@ namespace AsbCloudWebApi.Controllers.SAUB
 
             var stream = await telemetryDataSaubService.GetZippedCsv(idWell, beginDate, endDate, token).ConfigureAwait(false);
             var fileName = $"DataSaub idWell{idWell} {beginDate:yyyy-MM-DDTHH-mm} - {endDate:yyyy-MM-DDTHH-mm}.zip";
-            return File(stream, "application/octet-stream", fileName);
+            return File(stream, fileName);
         }
     }
 }
diff --git a/AsbCloudWebApi/Controllers/SAUB/TelemetryWirelineRunOutController.cs b/AsbCloudWebApi/Controllers/SAUB/TelemetryWirelineRunOutController.cs
index a9ee2815..b936edd5 100644
--- a/AsbCloudWebApi/Controllers/SAUB/TelemetryWirelineRunOutController.cs
+++ b/AsbCloudWebApi/Controllers/SAUB/TelemetryWirelineRunOutController.cs
@@ -45,8 +45,7 @@ namespace AsbCloudWebApi.Controllers.SAUB
         /// <param name="dto"></param>
         /// <param name="token"></param>
         /// <returns></returns>
-        [HttpPost]
-        [Route("{uid}")]
+        [HttpPost("{uid}")]
         [AllowAnonymous]
         public async Task<IActionResult> PostDataAsync(string uid, [FromBody] TelemetryWirelineRunOutBaseDto dto, CancellationToken token)
         {
diff --git a/AsbCloudWebApi/Controllers/WellCompositeController.cs b/AsbCloudWebApi/Controllers/WellCompositeController.cs
index e64118fd..d977128d 100644
--- a/AsbCloudWebApi/Controllers/WellCompositeController.cs
+++ b/AsbCloudWebApi/Controllers/WellCompositeController.cs
@@ -71,7 +71,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="idWell"></param>
         /// <param name="token"></param>
         /// <returns></returns>
-        [HttpGet("getCompositeProcessMap")]
+        [HttpGet("compositeProcessMap")]
         [Permission]
         [ProducesResponseType(typeof(IEnumerable<ProcessMapPlanDto>), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetCompositeProcessMap(int idWell, CancellationToken token)
diff --git a/AsbCloudWebApi/Controllers/WellFinalDocumentsController.cs b/AsbCloudWebApi/Controllers/WellFinalDocumentsController.cs
index 19952231..3cd7156b 100644
--- a/AsbCloudWebApi/Controllers/WellFinalDocumentsController.cs
+++ b/AsbCloudWebApi/Controllers/WellFinalDocumentsController.cs
@@ -160,8 +160,7 @@ namespace AsbCloudWebApi.Controllers
         /// Получение справочника категорий файлов
         /// </summary>
         /// <returns></returns>
-        [HttpGet]
-        [Route("wellCaseCategories")]
+        [HttpGet("wellCaseCategories")]
         [Permission]
         public async Task<IActionResult> GetWellCaseCategoriesAsync(CancellationToken token)
         {
diff --git a/AsbCloudWebApi/Controllers/WellOperationController.cs b/AsbCloudWebApi/Controllers/WellOperationController.cs
index 7bac5579..4bb40bdc 100644
--- a/AsbCloudWebApi/Controllers/WellOperationController.cs
+++ b/AsbCloudWebApi/Controllers/WellOperationController.cs
@@ -1,5 +1,4 @@
 using AsbCloudApp.Data;
-using AsbCloudApp.Exceptions;
 using AsbCloudApp.Repositories;
 using AsbCloudApp.Requests;
 using AsbCloudApp.Services;
@@ -10,7 +9,6 @@ using System;
 using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations;
 using System.IO;
-using System.Linq;
 using System.Threading;
 using System.Threading.Tasks;
 
@@ -40,8 +38,7 @@ namespace AsbCloudWebApi.Controllers
         /// Возвращает словарь типов секций
         /// </summary>
         /// <returns></returns>
-        [HttpGet]
-        [Route("sectionTypes")]
+        [HttpGet("sectionTypes")]
         [Permission]
         [ProducesResponseType(typeof(IEnumerable<WellSectionTypeDto>), (int)System.Net.HttpStatusCode.OK)]
         public IActionResult GetSectionTypes()
@@ -55,8 +52,7 @@ namespace AsbCloudWebApi.Controllers
         /// </summary>
         /// <param name="includeParents">флаг, нужно ли включать родителей в список</param>
         /// <returns></returns>
-        [HttpGet]
-        [Route("categories")]
+        [HttpGet("categories")]
         [Permission]
         [ProducesResponseType(typeof(IEnumerable<WellOperationCategoryDto>), (int)System.Net.HttpStatusCode.OK)]
         public IActionResult GetCategories(bool includeParents = true)
@@ -72,8 +68,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="currentDate">дата для нахождения последней сопоставленной плановой операции</param>
         /// <param name="token"></param>
         /// <returns></returns>
-        [HttpGet]
-        [Route("operationsPlan")]
+        [HttpGet("operationsPlan")]
         [ProducesResponseType(typeof(WellOperationPlanDto), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetOperationsPlanAsync(
             [FromRoute] int idWell,
@@ -97,8 +92,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="request"></param>
         /// <param name="token"></param>
         /// <returns>Список операций на скважине</returns>
-        [HttpGet]
-        [Route("fact")]
+        [HttpGet("fact")]
         [Permission]
         [ProducesResponseType(typeof(IEnumerable<WellOperationDto>), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetPageOperationsFactAsync(
@@ -125,8 +119,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="request"></param>
         /// <param name="token"></param>
         /// <returns>Список операций на скважине в контейнере для постраничного просмотра</returns>
-        [HttpGet]
-        [Route("plan")]
+        [HttpGet("plan")]
         [Permission]
         [ProducesResponseType(typeof(PaginationContainer<WellOperationDto>), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetPageOperationsPlanAsync(
@@ -152,8 +145,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="request"></param>      
         /// <param name="token"></param>
         /// <returns></returns>
-        [HttpGet]
-        [Route("groupStat")]
+        [HttpGet("groupStat")]
         [Permission]
         [ProducesResponseType(typeof(IEnumerable<WellGroupOpertionDto>), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetGroupOperationsAsync(
@@ -179,8 +171,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="idOperation">id нужной операции</param>
         /// <param name="token">Токен отмены задачи</param>
         /// <returns>Нужную операцию на скважине</returns>
-        [HttpGet]
-        [Route("{idOperation}")]
+        [HttpGet("{idOperation}")]
         [Permission]
         [ProducesResponseType(typeof(WellOperationDto), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> GetOrDefaultAsync(int idWell, int idOperation,
@@ -282,9 +273,8 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="options">Удалить операции перед импортом = 1, если фал валидный</param>
         /// <param name="token"> Токен отмены задачи </param>
         /// <returns></returns>
-        [HttpPost]
+        [HttpPost("import/{options}")]
         [Permission]
-        [Route("import/{options}")]
         public async Task<IActionResult> ImportAsync(int idWell,
             [FromForm] IFormFileCollection files,
             int options,
@@ -324,12 +314,12 @@ namespace AsbCloudWebApi.Controllers
         /// Создает excel файл с операциями по скважине
         /// </summary>
         /// <param name="idWell">id скважины</param>
-        /// <param name="token"> Токен отмены задачи </param>
+        /// <param name="token">Токен отмены задачи </param>
         /// <returns>Запрашиваемый файл</returns>
-        [HttpGet]
-        [Route("export")]
+        [HttpGet("export")]
         [Permission]
-        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK)]
+        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK, "application/octet-stream")]
+        [ProducesResponseType(StatusCodes.Status204NoContent)]
         public async Task<IActionResult> ExportAsync([FromRoute] int idWell, CancellationToken token)
         {
             int? idCompany = User.GetCompanyId();
@@ -343,7 +333,7 @@ namespace AsbCloudWebApi.Controllers
 
             var stream = wellOperationImportService.Export(idWell);
             var fileName = await wellService.GetWellCaptionByIdAsync(idWell, token) + "_operations.xlsx";
-            return File(stream, "application/octet-stream", fileName);
+            return File(stream, fileName);
         }
 
         /// <summary>
@@ -353,8 +343,7 @@ namespace AsbCloudWebApi.Controllers
         /// <param name="scheduleReportService"></param>
         /// <param name="token"> Токен отмены задачи</param>
         /// <returns>Запрашиваемый файл</returns>
-        [HttpGet]
-        [Route("scheduleReport")]
+        [HttpGet("scheduleReport")]
         [Permission]
         [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK)]
         public async Task<IActionResult> ScheduleReportAsync([FromRoute] int idWell, [FromServices] IScheduleReportService scheduleReportService, CancellationToken token)
@@ -377,15 +366,14 @@ namespace AsbCloudWebApi.Controllers
         /// Возвращает шаблон файла импорта
         /// </summary>
         /// <returns>Запрашиваемый файл</returns>
-        [HttpGet]
-        [Route("template")]
+        [HttpGet("template")]
         [AllowAnonymous]
-        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK)]
+        [ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK, "application/octet-stream")]
         public IActionResult GetTemplate()
         {
             var stream = wellOperationImportService.GetExcelTemplateStream();
             var fileName = "ЕЦП_шаблон_файла_операций.xlsx";
-            return File(stream, "application/octet-stream", fileName);
+            return File(stream, fileName);
         }
 
         private async Task<bool> CanUserAccessToWellAsync(int idWell, CancellationToken token)