diff --git a/proto/images/images.proto b/proto/images/images.proto
index 7e2c35299d5c3229d48d7149e75b7a7f68ab494a..74a0554c434e06273abc51b5e3ba3fee4c4824fc 100644
--- a/proto/images/images.proto
+++ b/proto/images/images.proto
@@ -6,9 +6,34 @@ option go_package = "git.perx.ru/perxis/perxis-go/proto/images;images";
 
 package images;
 
+// Команда для обрезки изображения
+message CropCommand {
+  int64 width = 1;
+  int64 height = 2;
+  string resampling = 3;
+}
+
+// Команда для подгонки изображения под заданные размеры
+message FitCommand {
+  int64 width = 1;
+  int64 height = 2;
+  string resampling = 3;
+}
+
+// Команда для изменения размера изображения
+message ResizeCommand {
+  int64 width = 1;
+  int64 height = 2;
+  string resampling = 3;
+}
+
+// Общая команда для обработки изображения
 message Command {
-  string op = 1;
-  repeated string value = 2;
+  oneof command_type {
+    CropCommand crop = 1;
+    FitCommand fit = 2;
+    ResizeCommand resize = 3;
+  }
 }
 
 message GetRequest {
@@ -20,22 +45,22 @@ message GetRequest {
     repeated Command commands = 2;
 
     // Название пресета, предустановленные параметры которого будут использоваться по умолчанию.
-    optional string preset = 3;
+    string preset = 3;
 
     // Целевой формат изображения, в который будет преобразовано исходное изображение.
-    optional string format = 4;
+    string format = 4;
 
     // Качество изображения. Значение от 1 до 100.
-    optional int32 quality = 5;
+    int32 quality = 5;
 
     // Тип изображения для оптимизации. Поддерживается для форматов: webp.
-    optional string hint = 6;
+    string hint = 6;
 
     // Режим масштабирования для команд, связанных с изменением размера изображения.
-    optional string resampling = 7;
+    string resampling = 7;
 
     // Флаг, указывающий, нужно ли сохранять изображение в кэше.
-    optional bool no_cache = 8;
+    bool no_cache = 8;
   }
 
   files.File source = 1;
@@ -49,21 +74,6 @@ message GetResponse {
 // ImageService - сервис для обработки изображений
 service Images {
 
-  // Применяет переданные команды и параметры к файлу, идентификатор которого передан в запросе.
-  //
-  // Команды выполняются в порядке их передачи.
-  // Поддерживаемые команды:
-  //  - crop (ширина, высота, режим масштабирования (опционально))
-  //  - fit (ширина, высота, режим масштабирования (опционально))
-  //  - resize (ширина, высота, режим масштабирования (опционально))
-  //  - format (один из форматов: jpeg, png, gif, tiff, bmp)
-  // Параметры команды должны быть разделены знаком тире (-).
-
-  // Размеры могут быть указаны в следующих форматах:
-  //  - 128-128 (старый формат)
-  //  - 128x128 (новый формат)
-  //  - 128x (только ширина)
-  //  - x128 (только высота)
-  // Возвращает объект File с заполненным полем File.URL
+  // Применяет команды и параметры к файлу и возвращает объект File с заполненным полем URL
   rpc Get(GetRequest) returns(GetResponse) {}
 }