From 015b4813b8fd31d85da6de82af03ead52cf0be26 Mon Sep 17 00:00:00 2001
From: Semyon Krestyaninov <krestyaninov@perx.ru>
Date: Tue, 11 Feb 2025 15:49:28 +0300
Subject: [PATCH] wip

---
 {pkg/files => files}/downloader.go            |   0
 {pkg/files => files}/field.go                 |  30 +-
 {pkg/files => files}/field_test.go            |   0
 {pkg/files => files}/file.go                  |   0
 {pkg/files => files}/file_test.go             |   0
 .../middleware/access_logging_middleware.go   |  33 +-
 .../middleware/error_logging_middleware.go    |  14 +-
 {pkg/files => files}/middleware/middleware.go |   6 +-
 .../middleware/recovering_middleware.go       |  14 +-
 .../middleware/telemetry_middleware.go        |  47 ++-
 {pkg/files => files}/mocks/Downloader.go      |   4 +-
 {pkg/files => files}/mocks/Files.go           |  42 +-
 {pkg/files => files}/mocks/Middleware.go      |   4 +-
 {pkg/files => files}/mocks/Storage.go         |  22 +-
 {pkg/files => files}/mocks/Uploader.go        |   4 +-
 {pkg/files => files}/mocks/spaceGetter.go     |   2 +-
 {pkg/files => files}/service.go               |  11 +-
 {pkg/files => files}/storage.go               |   3 +
 {pkg/files => files}/transport/client.go      |  13 +-
 .../transport/endpoints.microgen.go           |   2 +-
 .../transport/exchanges.microgen.go           |  11 +-
 {pkg/files => files}/transport/grpc/client.go |   4 +-
 .../transport/grpc/client.microgen.go         |  12 +-
 .../protobuf_endpoint_converters.microgen.go  |  64 +--
 .../grpc/protobuf_type_converters.microgen.go |   2 +-
 {pkg/files => files}/transport/grpc/server.go |   6 +-
 .../transport/grpc/server.microgen.go         |  18 +-
 .../transport/server.microgen.go              |  12 +-
 {pkg/files => files}/uploader.go              |   0
 .../middleware/access_logging_middleware.go   |   3 +-
 images/middleware/error_logging_middleware.go |   2 +-
 images/middleware/recovering_middleware.go    |   2 +-
 images/middleware/telemetry_middleware.go     |   2 +-
 images/mocks/Images.go                        |   2 +-
 images/service.go                             |   2 +-
 images/transport/client.go                    |   2 +-
 images/transport/exchanges.microgen.go        |   2 +-
 .../grpc/protobuf_type_converters.microgen.go |   2 +-
 perxis-proto                                  |   2 +-
 proto/files/files.pb.go                       | 389 +++++++++---------
 proto/files/files_grpc.pb.go                  |  50 ++-
 proto/mocks/ClientsClient.go                  |   2 +-
 proto/mocks/ClientsServer.go                  |   4 +-
 proto/mocks/CollaboratorsClient.go            |   2 +-
 proto/mocks/CollaboratorsServer.go            |   4 +-
 proto/mocks/CollectionsClient.go              |   2 +-
 proto/mocks/CollectionsServer.go              |   4 +-
 proto/mocks/DeliveryClient.go                 |   2 +-
 proto/mocks/DeliveryServer.go                 |   4 +-
 proto/mocks/EnvironmentsClient.go             |   2 +-
 proto/mocks/EnvironmentsServer.go             |   4 +-
 proto/mocks/ExtensionManagerServiceClient.go  |   2 +-
 proto/mocks/ExtensionManagerServiceServer.go  |   4 +-
 proto/mocks/ExtensionServiceClient.go         |   2 +-
 proto/mocks/ExtensionServiceServer.go         |   4 +-
 proto/mocks/FilesClient.go                    |  34 +-
 proto/mocks/FilesServer.go                    |  36 +-
 proto/mocks/ImagesClient.go                   |   2 +-
 proto/mocks/ImagesServer.go                   |   4 +-
 proto/mocks/InvitationsClient.go              |   2 +-
 proto/mocks/InvitationsServer.go              |   4 +-
 proto/mocks/ItemsClient.go                    |   2 +-
 proto/mocks/ItemsServer.go                    |   4 +-
 proto/mocks/LocalesClient.go                  |   2 +-
 proto/mocks/LocalesServer.go                  |   4 +-
 proto/mocks/LogsServiceClient.go              |   2 +-
 proto/mocks/LogsServiceServer.go              |   4 +-
 proto/mocks/MailboxClient.go                  |   2 +-
 proto/mocks/MailboxServer.go                  |   2 +-
 proto/mocks/MembersClient.go                  |   2 +-
 proto/mocks/MembersServer.go                  |   4 +-
 proto/mocks/ObserverClient.go                 |   2 +-
 proto/mocks/ObserverServer.go                 |   4 +-
 proto/mocks/OperationServiceClient.go         |   2 +-
 proto/mocks/OperationServiceServer.go         |   4 +-
 proto/mocks/OrganizationsClient.go            |   2 +-
 proto/mocks/OrganizationsServer.go            |   4 +-
 proto/mocks/ReferencesClient.go               |   2 +-
 proto/mocks/ReferencesServer.go               |   4 +-
 proto/mocks/RolesClient.go                    |   2 +-
 proto/mocks/RolesServer.go                    |   4 +-
 proto/mocks/SpacesClient.go                   |   2 +-
 proto/mocks/SpacesServer.go                   |   4 +-
 proto/mocks/UnsafeClientsServer.go            |   4 +-
 proto/mocks/UnsafeCollaboratorsServer.go      |   4 +-
 proto/mocks/UnsafeCollectionsServer.go        |   4 +-
 proto/mocks/UnsafeDeliveryServer.go           |   4 +-
 proto/mocks/UnsafeEnvironmentsServer.go       |   4 +-
 .../UnsafeExtensionManagerServiceServer.go    |   4 +-
 proto/mocks/UnsafeExtensionServiceServer.go   |   4 +-
 proto/mocks/UnsafeFilesServer.go              |   4 +-
 proto/mocks/UnsafeImagesServer.go             |   4 +-
 proto/mocks/UnsafeInvitationsServer.go        |   4 +-
 proto/mocks/UnsafeItemsServer.go              |   4 +-
 proto/mocks/UnsafeLocalesServer.go            |   4 +-
 proto/mocks/UnsafeLogsServiceServer.go        |   4 +-
 proto/mocks/UnsafeMailboxServer.go            |   2 +-
 proto/mocks/UnsafeMembersServer.go            |   4 +-
 proto/mocks/UnsafeObserverServer.go           |   4 +-
 proto/mocks/UnsafeOperationServiceServer.go   |   4 +-
 proto/mocks/UnsafeOrganizationsServer.go      |   4 +-
 proto/mocks/UnsafeReferencesServer.go         |   4 +-
 proto/mocks/UnsafeRolesServer.go              |   4 +-
 proto/mocks/UnsafeSpacesServer.go             |   4 +-
 proto/mocks/UnsafeUsersServer.go              |   4 +-
 proto/mocks/UnsafeVersionsServer.go           |   4 +-
 proto/mocks/UsersClient.go                    |   2 +-
 proto/mocks/UsersServer.go                    |   4 +-
 proto/mocks/VersionsClient.go                 |   2 +-
 proto/mocks/VersionsServer.go                 |   4 +-
 proto/mocks/isFindResponse_Response.go        |   4 +-
 proto/mocks/isOperation_Result.go             |   4 +-
 112 files changed, 597 insertions(+), 541 deletions(-)
 rename {pkg/files => files}/downloader.go (100%)
 rename {pkg/files => files}/field.go (78%)
 rename {pkg/files => files}/field_test.go (100%)
 rename {pkg/files => files}/file.go (100%)
 rename {pkg/files => files}/file_test.go (100%)
 rename {pkg/files => files}/middleware/access_logging_middleware.go (83%)
 rename {pkg/files => files}/middleware/error_logging_middleware.go (83%)
 rename {pkg/files => files}/middleware/middleware.go (65%)
 rename {pkg/files => files}/middleware/recovering_middleware.go (85%)
 rename {pkg/files => files}/middleware/telemetry_middleware.go (92%)
 rename {pkg/files => files}/mocks/Downloader.go (90%)
 rename {pkg/files => files}/mocks/Files.go (85%)
 rename {pkg/files => files}/mocks/Middleware.go (90%)
 rename {pkg/files => files}/mocks/Storage.go (91%)
 rename {pkg/files => files}/mocks/Uploader.go (90%)
 rename {pkg/files => files}/mocks/spaceGetter.go (94%)
 rename {pkg/files => files}/service.go (80%)
 rename {pkg/files => files}/storage.go (92%)
 rename {pkg/files => files}/transport/client.go (83%)
 rename {pkg/files => files}/transport/endpoints.microgen.go (91%)
 rename {pkg/files => files}/transport/exchanges.microgen.go (79%)
 rename {pkg/files => files}/transport/grpc/client.go (86%)
 rename {pkg/files => files}/transport/grpc/client.microgen.go (87%)
 rename {pkg/files => files}/transport/grpc/protobuf_endpoint_converters.microgen.go (86%)
 rename {pkg/files => files}/transport/grpc/protobuf_type_converters.microgen.go (98%)
 rename {pkg/files => files}/transport/grpc/server.go (82%)
 rename {pkg/files => files}/transport/grpc/server.microgen.go (87%)
 rename {pkg/files => files}/transport/server.microgen.go (87%)
 rename {pkg/files => files}/uploader.go (100%)

diff --git a/pkg/files/downloader.go b/files/downloader.go
similarity index 100%
rename from pkg/files/downloader.go
rename to files/downloader.go
diff --git a/pkg/files/field.go b/files/field.go
similarity index 78%
rename from pkg/files/field.go
rename to files/field.go
index bd237bd6..6f96d489 100644
--- a/pkg/files/field.go
+++ b/files/field.go
@@ -7,7 +7,9 @@ import (
 	"net/url"
 	"reflect"
 
+	"git.perx.ru/perxis/perxis-go/pkg/errors"
 	"git.perx.ru/perxis/perxis-go/pkg/items"
+	"git.perx.ru/perxis/perxis-go/pkg/optional"
 	"git.perx.ru/perxis/perxis-go/pkg/schema/field"
 	signer "git.perx.ru/perxis/perxis-go/pkg/urlsigner"
 	"github.com/mitchellh/mapstructure"
@@ -123,25 +125,29 @@ func (t FileType) Encode(ctx context.Context, fld *field.Field, v interface{}) (
 
 }
 
-// PreSave - функция буде вызвана перед сохранением поля в Storage. Реализует интерфейс `perxis.PreSaver`
-// Выполняет проверку поля является ли файл только что загруженным и переносит его при необходимости для
+// PreSave - функция будет вызвана перед сохранением поля в Storage. Реализует интерфейс `perxis.PreSaver`
+// Выполняет проверку поля, является ли файл только что загруженным и переносит его при необходимости для
 // постоянного хранения
-func (t FileType) PreSave(ctx context.Context, fld *field.Field, v interface{}, itemCtx *items.Context) (interface{}, bool, error) {
-	if v == nil {
+func (t FileType) PreSave(ctx context.Context, _ *field.Field, v interface{}, _ *items.Context) (interface{}, bool, error) {
+	f, ok := v.(*File)
+	if !ok {
 		return nil, false, nil
 	}
-	f := v.(*File)
 
-	// Выполняет проверка и сохранение файла в постоянное хранилище
-	// Если файл уже находится в постоянном хранилище, то ничего не делаем
-	// TODO при реализации SaveFile нужно передавать флаг или ошибку
-	//  - чтобы корректно отдавать флаr changed если файл не перемещался
-	f, err := t.fs.MoveUpload(ctx, &MultipartUpload{File: *f})
+	// Пропускаем, если файл уже постоянный.
+	if !f.Temporary {
+		return f, false, nil
+	}
+
+	// Помечаем временный файл как постоянный.
+	updated, err := t.fs.UpdateFile(ctx, f.ID, &UpdateFileRequest{
+		Temporary: optional.False,
+	})
 	if err != nil {
-		return nil, false, err
+		return nil, false, errors.Wrap(err, "update file")
 	}
 
-	return f, true, nil
+	return updated, true, nil
 }
 
 // Field - создает новое поле Field типа FileType
diff --git a/pkg/files/field_test.go b/files/field_test.go
similarity index 100%
rename from pkg/files/field_test.go
rename to files/field_test.go
diff --git a/pkg/files/file.go b/files/file.go
similarity index 100%
rename from pkg/files/file.go
rename to files/file.go
diff --git a/pkg/files/file_test.go b/files/file_test.go
similarity index 100%
rename from pkg/files/file_test.go
rename to files/file_test.go
diff --git a/pkg/files/middleware/access_logging_middleware.go b/files/middleware/access_logging_middleware.go
similarity index 83%
rename from pkg/files/middleware/access_logging_middleware.go
rename to files/middleware/access_logging_middleware.go
index df932a82..55be5e9a 100644
--- a/pkg/files/middleware/access_logging_middleware.go
+++ b/files/middleware/access_logging_middleware.go
@@ -1,17 +1,17 @@
 // Code generated by gowrap. DO NOT EDIT.
-// template: ../../../assets/templates/middleware/access_log.tmpl
+// template: ../../assets/templates/middleware/access_log.tmpl
 // gowrap: http://github.com/hexdigest/gowrap
 
 package middleware
 
-//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/files -i Files -t ../../../assets/templates/middleware/access_log.tmpl -o access_logging_middleware.go -l ""
+//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/files -i Files -t ../../assets/templates/middleware/access_log.tmpl -o access_logging_middleware.go -l ""
 
 import (
 	"context"
 	"time"
 
+	files "git.perx.ru/perxis/perxis-go/files"
 	"git.perx.ru/perxis/perxis-go/pkg/auth"
-	"git.perx.ru/perxis/perxis-go/pkg/files"
 	"go.uber.org/zap"
 )
 
@@ -105,42 +105,43 @@ func (m *accessLoggingMiddleware) GetFile(ctx context.Context, file *files.File)
 	return f, err
 }
 
-func (m *accessLoggingMiddleware) MoveUpload(ctx context.Context, upload *files.MultipartUpload) (file *files.File, err error) {
+func (m *accessLoggingMiddleware) StartUpload(ctx context.Context, upload *files.MultipartUpload) (u *files.MultipartUpload, err error) {
 	begin := time.Now()
 
-	m.logger.Debug("MoveUpload.Request",
+	m.logger.Debug("StartUpload.Request",
 		zap.Reflect("principal", auth.GetPrincipal(ctx)),
 		zap.Reflect("upload", upload),
 	)
 
-	file, err = m.next.MoveUpload(ctx, upload)
+	u, err = m.next.StartUpload(ctx, upload)
 
-	m.logger.Debug("MoveUpload.Response",
+	m.logger.Debug("StartUpload.Response",
 		zap.Duration("time", time.Since(begin)),
-		zap.Reflect("file", file),
+		zap.Reflect("u", u),
 		zap.Error(err),
 	)
 
-	return file, err
+	return u, err
 }
 
-func (m *accessLoggingMiddleware) StartUpload(ctx context.Context, upload *files.MultipartUpload) (u *files.MultipartUpload, err error) {
+func (m *accessLoggingMiddleware) UpdateFile(ctx context.Context, fileID string, request *files.UpdateFileRequest) (updated *files.File, err error) {
 	begin := time.Now()
 
-	m.logger.Debug("StartUpload.Request",
+	m.logger.Debug("UpdateFile.Request",
 		zap.Reflect("principal", auth.GetPrincipal(ctx)),
-		zap.Reflect("upload", upload),
+		zap.Reflect("fileID", fileID),
+		zap.Reflect("request", request),
 	)
 
-	u, err = m.next.StartUpload(ctx, upload)
+	updated, err = m.next.UpdateFile(ctx, fileID, request)
 
-	m.logger.Debug("StartUpload.Response",
+	m.logger.Debug("UpdateFile.Response",
 		zap.Duration("time", time.Since(begin)),
-		zap.Reflect("u", u),
+		zap.Reflect("updated", updated),
 		zap.Error(err),
 	)
 
-	return u, err
+	return updated, err
 }
 
 func (m *accessLoggingMiddleware) Upload(ctx context.Context, file *files.File) (u *files.Upload, err error) {
diff --git a/pkg/files/middleware/error_logging_middleware.go b/files/middleware/error_logging_middleware.go
similarity index 83%
rename from pkg/files/middleware/error_logging_middleware.go
rename to files/middleware/error_logging_middleware.go
index 18e9b65a..8e6eee4d 100644
--- a/pkg/files/middleware/error_logging_middleware.go
+++ b/files/middleware/error_logging_middleware.go
@@ -1,15 +1,15 @@
 // Code generated by gowrap. DO NOT EDIT.
-// template: ../../../assets/templates/middleware/error_log
+// template: ../../assets/templates/middleware/error_log
 // gowrap: http://github.com/hexdigest/gowrap
 
 package middleware
 
-//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/files -i Files -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l ""
+//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/files -i Files -t ../../assets/templates/middleware/error_log -o error_logging_middleware.go -l ""
 
 import (
 	"context"
 
-	"git.perx.ru/perxis/perxis-go/pkg/files"
+	files "git.perx.ru/perxis/perxis-go/files"
 	"go.uber.org/zap"
 )
 
@@ -69,24 +69,24 @@ func (m *errorLoggingMiddleware) GetFile(ctx context.Context, file *files.File)
 	return m.next.GetFile(ctx, file)
 }
 
-func (m *errorLoggingMiddleware) MoveUpload(ctx context.Context, upload *files.MultipartUpload) (file *files.File, err error) {
+func (m *errorLoggingMiddleware) StartUpload(ctx context.Context, upload *files.MultipartUpload) (u *files.MultipartUpload, err error) {
 	logger := m.logger
 	defer func() {
 		if err != nil {
 			logger.Warn("response error", zap.Error(err))
 		}
 	}()
-	return m.next.MoveUpload(ctx, upload)
+	return m.next.StartUpload(ctx, upload)
 }
 
-func (m *errorLoggingMiddleware) StartUpload(ctx context.Context, upload *files.MultipartUpload) (u *files.MultipartUpload, err error) {
+func (m *errorLoggingMiddleware) UpdateFile(ctx context.Context, fileID string, request *files.UpdateFileRequest) (updated *files.File, err error) {
 	logger := m.logger
 	defer func() {
 		if err != nil {
 			logger.Warn("response error", zap.Error(err))
 		}
 	}()
-	return m.next.StartUpload(ctx, upload)
+	return m.next.UpdateFile(ctx, fileID, request)
 }
 
 func (m *errorLoggingMiddleware) Upload(ctx context.Context, file *files.File) (u *files.Upload, err error) {
diff --git a/pkg/files/middleware/middleware.go b/files/middleware/middleware.go
similarity index 65%
rename from pkg/files/middleware/middleware.go
rename to files/middleware/middleware.go
index 68d4c21f..9e027c7a 100644
--- a/pkg/files/middleware/middleware.go
+++ b/files/middleware/middleware.go
@@ -1,13 +1,13 @@
 // Code generated by gowrap. DO NOT EDIT.
-// template: ../../../assets/templates/middleware/middleware.tmpl
+// template: ../../assets/templates/middleware/middleware.tmpl
 // gowrap: http://github.com/hexdigest/gowrap
 
 package middleware
 
-//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/files -i Files -t ../../../assets/templates/middleware/middleware.tmpl -o middleware.go -l ""
+//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/files -i Files -t ../../assets/templates/middleware/middleware.tmpl -o middleware.go -l ""
 
 import (
-	"git.perx.ru/perxis/perxis-go/pkg/files"
+	files "git.perx.ru/perxis/perxis-go/files"
 	"go.uber.org/zap"
 )
 
diff --git a/pkg/files/middleware/recovering_middleware.go b/files/middleware/recovering_middleware.go
similarity index 85%
rename from pkg/files/middleware/recovering_middleware.go
rename to files/middleware/recovering_middleware.go
index 3143498e..6e57d350 100644
--- a/pkg/files/middleware/recovering_middleware.go
+++ b/files/middleware/recovering_middleware.go
@@ -1,16 +1,16 @@
 // Code generated by gowrap. DO NOT EDIT.
-// template: ../../../assets/templates/middleware/recovery
+// template: ../../assets/templates/middleware/recovery
 // gowrap: http://github.com/hexdigest/gowrap
 
 package middleware
 
-//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/files -i Files -t ../../../assets/templates/middleware/recovery -o recovering_middleware.go -l ""
+//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/files -i Files -t ../../assets/templates/middleware/recovery -o recovering_middleware.go -l ""
 
 import (
 	"context"
 	"fmt"
 
-	"git.perx.ru/perxis/perxis-go/pkg/files"
+	files "git.perx.ru/perxis/perxis-go/files"
 	"go.uber.org/zap"
 )
 
@@ -78,7 +78,7 @@ func (m *recoveringMiddleware) GetFile(ctx context.Context, file *files.File) (f
 	return m.next.GetFile(ctx, file)
 }
 
-func (m *recoveringMiddleware) MoveUpload(ctx context.Context, upload *files.MultipartUpload) (file *files.File, err error) {
+func (m *recoveringMiddleware) StartUpload(ctx context.Context, upload *files.MultipartUpload) (u *files.MultipartUpload, err error) {
 	logger := m.logger
 	defer func() {
 		if r := recover(); r != nil {
@@ -87,10 +87,10 @@ func (m *recoveringMiddleware) MoveUpload(ctx context.Context, upload *files.Mul
 		}
 	}()
 
-	return m.next.MoveUpload(ctx, upload)
+	return m.next.StartUpload(ctx, upload)
 }
 
-func (m *recoveringMiddleware) StartUpload(ctx context.Context, upload *files.MultipartUpload) (u *files.MultipartUpload, err error) {
+func (m *recoveringMiddleware) UpdateFile(ctx context.Context, fileID string, request *files.UpdateFileRequest) (updated *files.File, err error) {
 	logger := m.logger
 	defer func() {
 		if r := recover(); r != nil {
@@ -99,7 +99,7 @@ func (m *recoveringMiddleware) StartUpload(ctx context.Context, upload *files.Mu
 		}
 	}()
 
-	return m.next.StartUpload(ctx, upload)
+	return m.next.UpdateFile(ctx, fileID, request)
 }
 
 func (m *recoveringMiddleware) Upload(ctx context.Context, file *files.File) (u *files.Upload, err error) {
diff --git a/pkg/files/middleware/telemetry_middleware.go b/files/middleware/telemetry_middleware.go
similarity index 92%
rename from pkg/files/middleware/telemetry_middleware.go
rename to files/middleware/telemetry_middleware.go
index 156f9d8b..4dbbfd12 100644
--- a/pkg/files/middleware/telemetry_middleware.go
+++ b/files/middleware/telemetry_middleware.go
@@ -1,21 +1,23 @@
 // Code generated by gowrap. DO NOT EDIT.
-// template: ../../../assets/templates/middleware/telemetry_default
+// template: ../../assets/templates/middleware/telemetry_default
 // gowrap: http://github.com/hexdigest/gowrap
 
 package middleware
 
-//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/files -i Files -t ../../../assets/templates/middleware/telemetry_default -o telemetry_middleware.go -l ""
+//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/files -i Files -t ../../assets/templates/middleware/telemetry_default -o telemetry_middleware.go -l ""
 
 import (
 	"context"
 	"time"
 
-	pkgId "git.perx.ru/perxis/perxis-go/id"
+	files "git.perx.ru/perxis/perxis-go/files"
 	"git.perx.ru/perxis/perxis-go/pkg/auth"
-	"git.perx.ru/perxis/perxis-go/pkg/files"
 	"git.perx.ru/perxis/perxis-go/pkg/telemetry/metrics"
 	"go.opentelemetry.io/otel"
 	"go.opentelemetry.io/otel/attribute"
+
+	pkgId "git.perx.ru/perxis/perxis-go/id"
+
 	otelmetric "go.opentelemetry.io/otel/metric"
 	"go.opentelemetry.io/otel/trace"
 )
@@ -210,19 +212,19 @@ func (_d telemetryMiddleware) GetFile(ctx context.Context, file *files.File) (f
 	return f, err
 }
 
-// MoveUpload implements files.Files
-func (_d telemetryMiddleware) MoveUpload(ctx context.Context, upload *files.MultipartUpload) (file *files.File, err error) {
+// StartUpload implements files.Files
+func (_d telemetryMiddleware) StartUpload(ctx context.Context, upload *files.MultipartUpload) (u *files.MultipartUpload, err error) {
 	var att = []attribute.KeyValue{
 		attribute.String("service", "Files"),
-		attribute.String("method", "MoveUpload"),
+		attribute.String("method", "StartUpload"),
 	}
 	attributes := otelmetric.WithAttributeSet(attribute.NewSet(att...))
 
 	start := time.Now()
-	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Files.MoveUpload")
+	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Files.StartUpload")
 	defer _span.End()
 
-	file, err = _d.Files.MoveUpload(ctx, upload)
+	u, err = _d.Files.StartUpload(ctx, upload)
 
 	_d.requestMetrics.DurationMilliseconds.Record(ctx, time.Since(start).Milliseconds(), attributes)
 
@@ -237,8 +239,8 @@ func (_d telemetryMiddleware) MoveUpload(ctx context.Context, upload *files.Mult
 		_d._spanDecorator(_span, map[string]interface{}{
 			"ctx":    ctx,
 			"upload": upload}, map[string]interface{}{
-			"file": file,
-			"err":  err})
+			"u":   u,
+			"err": err})
 	} else if err != nil {
 		_d.requestMetrics.FailedTotal.Add(ctx, 1, attributes)
 
@@ -247,22 +249,22 @@ func (_d telemetryMiddleware) MoveUpload(ctx context.Context, upload *files.Mult
 		_span.SetAttributes(attribute.String("message", err.Error()))
 	}
 
-	return file, err
+	return u, err
 }
 
-// StartUpload implements files.Files
-func (_d telemetryMiddleware) StartUpload(ctx context.Context, upload *files.MultipartUpload) (u *files.MultipartUpload, err error) {
+// UpdateFile implements files.Files
+func (_d telemetryMiddleware) UpdateFile(ctx context.Context, fileID string, request *files.UpdateFileRequest) (updated *files.File, err error) {
 	var att = []attribute.KeyValue{
 		attribute.String("service", "Files"),
-		attribute.String("method", "StartUpload"),
+		attribute.String("method", "UpdateFile"),
 	}
 	attributes := otelmetric.WithAttributeSet(attribute.NewSet(att...))
 
 	start := time.Now()
-	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Files.StartUpload")
+	ctx, _span := otel.Tracer(_d._instance).Start(ctx, "Files.UpdateFile")
 	defer _span.End()
 
-	u, err = _d.Files.StartUpload(ctx, upload)
+	updated, err = _d.Files.UpdateFile(ctx, fileID, request)
 
 	_d.requestMetrics.DurationMilliseconds.Record(ctx, time.Since(start).Milliseconds(), attributes)
 
@@ -275,10 +277,11 @@ func (_d telemetryMiddleware) StartUpload(ctx context.Context, upload *files.Mul
 
 	if _d._spanDecorator != nil {
 		_d._spanDecorator(_span, map[string]interface{}{
-			"ctx":    ctx,
-			"upload": upload}, map[string]interface{}{
-			"u":   u,
-			"err": err})
+			"ctx":     ctx,
+			"fileID":  fileID,
+			"request": request}, map[string]interface{}{
+			"updated": updated,
+			"err":     err})
 	} else if err != nil {
 		_d.requestMetrics.FailedTotal.Add(ctx, 1, attributes)
 
@@ -287,7 +290,7 @@ func (_d telemetryMiddleware) StartUpload(ctx context.Context, upload *files.Mul
 		_span.SetAttributes(attribute.String("message", err.Error()))
 	}
 
-	return u, err
+	return updated, err
 }
 
 // Upload implements files.Files
diff --git a/pkg/files/mocks/Downloader.go b/files/mocks/Downloader.go
similarity index 90%
rename from pkg/files/mocks/Downloader.go
rename to files/mocks/Downloader.go
index 4105337e..b039fad5 100644
--- a/pkg/files/mocks/Downloader.go
+++ b/files/mocks/Downloader.go
@@ -1,11 +1,11 @@
-// Code generated by mockery v2.43.2. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
 import (
 	io "io"
 
-	files "git.perx.ru/perxis/perxis-go/pkg/files"
+	files "git.perx.ru/perxis/perxis-go/files"
 
 	mock "github.com/stretchr/testify/mock"
 )
diff --git a/pkg/files/mocks/Files.go b/files/mocks/Files.go
similarity index 85%
rename from pkg/files/mocks/Files.go
rename to files/mocks/Files.go
index e4f8c664..8a3303f4 100644
--- a/pkg/files/mocks/Files.go
+++ b/files/mocks/Files.go
@@ -1,11 +1,11 @@
-// Code generated by mockery v2.43.2. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
 import (
 	context "context"
 
-	files "git.perx.ru/perxis/perxis-go/pkg/files"
+	files "git.perx.ru/perxis/perxis-go/files"
 	mock "github.com/stretchr/testify/mock"
 )
 
@@ -110,24 +110,24 @@ func (_m *Files) GetFile(ctx context.Context, file *files.File) (*files.File, er
 	return r0, r1
 }
 
-// MoveUpload provides a mock function with given fields: ctx, upload
-func (_m *Files) MoveUpload(ctx context.Context, upload *files.MultipartUpload) (*files.File, error) {
+// StartUpload provides a mock function with given fields: ctx, upload
+func (_m *Files) StartUpload(ctx context.Context, upload *files.MultipartUpload) (*files.MultipartUpload, error) {
 	ret := _m.Called(ctx, upload)
 
 	if len(ret) == 0 {
-		panic("no return value specified for MoveUpload")
+		panic("no return value specified for StartUpload")
 	}
 
-	var r0 *files.File
+	var r0 *files.MultipartUpload
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) (*files.File, error)); ok {
+	if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) (*files.MultipartUpload, error)); ok {
 		return rf(ctx, upload)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) *files.File); ok {
+	if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) *files.MultipartUpload); ok {
 		r0 = rf(ctx, upload)
 	} else {
 		if ret.Get(0) != nil {
-			r0 = ret.Get(0).(*files.File)
+			r0 = ret.Get(0).(*files.MultipartUpload)
 		}
 	}
 
@@ -140,29 +140,29 @@ func (_m *Files) MoveUpload(ctx context.Context, upload *files.MultipartUpload)
 	return r0, r1
 }
 
-// StartUpload provides a mock function with given fields: ctx, upload
-func (_m *Files) StartUpload(ctx context.Context, upload *files.MultipartUpload) (*files.MultipartUpload, error) {
-	ret := _m.Called(ctx, upload)
+// UpdateFile provides a mock function with given fields: ctx, fileID, request
+func (_m *Files) UpdateFile(ctx context.Context, fileID string, request *files.UpdateFileRequest) (*files.File, error) {
+	ret := _m.Called(ctx, fileID, request)
 
 	if len(ret) == 0 {
-		panic("no return value specified for StartUpload")
+		panic("no return value specified for UpdateFile")
 	}
 
-	var r0 *files.MultipartUpload
+	var r0 *files.File
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) (*files.MultipartUpload, error)); ok {
-		return rf(ctx, upload)
+	if rf, ok := ret.Get(0).(func(context.Context, string, *files.UpdateFileRequest) (*files.File, error)); ok {
+		return rf(ctx, fileID, request)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *files.MultipartUpload) *files.MultipartUpload); ok {
-		r0 = rf(ctx, upload)
+	if rf, ok := ret.Get(0).(func(context.Context, string, *files.UpdateFileRequest) *files.File); ok {
+		r0 = rf(ctx, fileID, request)
 	} else {
 		if ret.Get(0) != nil {
-			r0 = ret.Get(0).(*files.MultipartUpload)
+			r0 = ret.Get(0).(*files.File)
 		}
 	}
 
-	if rf, ok := ret.Get(1).(func(context.Context, *files.MultipartUpload) error); ok {
-		r1 = rf(ctx, upload)
+	if rf, ok := ret.Get(1).(func(context.Context, string, *files.UpdateFileRequest) error); ok {
+		r1 = rf(ctx, fileID, request)
 	} else {
 		r1 = ret.Error(1)
 	}
diff --git a/pkg/files/mocks/Middleware.go b/files/mocks/Middleware.go
similarity index 90%
rename from pkg/files/mocks/Middleware.go
rename to files/mocks/Middleware.go
index fb16e0e7..773df270 100644
--- a/pkg/files/mocks/Middleware.go
+++ b/files/mocks/Middleware.go
@@ -1,9 +1,9 @@
-// Code generated by mockery v2.43.2. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
 import (
-	files "git.perx.ru/perxis/perxis-go/pkg/files"
+	files "git.perx.ru/perxis/perxis-go/files"
 
 	mock "github.com/stretchr/testify/mock"
 )
diff --git a/pkg/files/mocks/Storage.go b/files/mocks/Storage.go
similarity index 91%
rename from pkg/files/mocks/Storage.go
rename to files/mocks/Storage.go
index 02467f93..c5b83132 100644
--- a/pkg/files/mocks/Storage.go
+++ b/files/mocks/Storage.go
@@ -1,11 +1,11 @@
-// Code generated by mockery v2.43.2. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
 import (
 	context "context"
 
-	files "git.perx.ru/perxis/perxis-go/pkg/files"
+	files "git.perx.ru/perxis/perxis-go/files"
 	mock "github.com/stretchr/testify/mock"
 )
 
@@ -170,6 +170,24 @@ func (_m *Storage) StartUpload(ctx context.Context, upload *files.MultipartUploa
 	return r0, r1
 }
 
+// UpdateFile provides a mock function with given fields: ctx, file
+func (_m *Storage) UpdateFile(ctx context.Context, file *files.File) error {
+	ret := _m.Called(ctx, file)
+
+	if len(ret) == 0 {
+		panic("no return value specified for UpdateFile")
+	}
+
+	var r0 error
+	if rf, ok := ret.Get(0).(func(context.Context, *files.File) error); ok {
+		r0 = rf(ctx, file)
+	} else {
+		r0 = ret.Error(0)
+	}
+
+	return r0
+}
+
 // Upload provides a mock function with given fields: ctx, file
 func (_m *Storage) Upload(ctx context.Context, file *files.File) (*files.Upload, error) {
 	ret := _m.Called(ctx, file)
diff --git a/pkg/files/mocks/Uploader.go b/files/mocks/Uploader.go
similarity index 90%
rename from pkg/files/mocks/Uploader.go
rename to files/mocks/Uploader.go
index 2a7c6cbc..ae9b40c7 100644
--- a/pkg/files/mocks/Uploader.go
+++ b/files/mocks/Uploader.go
@@ -1,11 +1,11 @@
-// Code generated by mockery v2.43.2. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
 import (
 	io "io"
 
-	files "git.perx.ru/perxis/perxis-go/pkg/files"
+	files "git.perx.ru/perxis/perxis-go/files"
 
 	mock "github.com/stretchr/testify/mock"
 )
diff --git a/pkg/files/mocks/spaceGetter.go b/files/mocks/spaceGetter.go
similarity index 94%
rename from pkg/files/mocks/spaceGetter.go
rename to files/mocks/spaceGetter.go
index b56dbea6..efa47375 100644
--- a/pkg/files/mocks/spaceGetter.go
+++ b/files/mocks/spaceGetter.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.50.0. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/pkg/files/service.go b/files/service.go
similarity index 80%
rename from pkg/files/service.go
rename to files/service.go
index b97af13a..3a767eb2 100644
--- a/pkg/files/service.go
+++ b/files/service.go
@@ -19,9 +19,8 @@ type Files interface {
 	// AbortUpload - прерывает процедуру загрузки файла, все загруженные части файла удаляются их хранилища
 	AbortUpload(ctx context.Context, upload *MultipartUpload) (err error)
 
-	// MoveUpload - перемещает загруженный файл из временного расположения в постоянное месторасположения.
-	// После перемещение загрузки хранилище выдает новый идентификатор постоянного файла
-	MoveUpload(ctx context.Context, upload *MultipartUpload) (file *File, err error)
+	// UpdateFile позволяет обновить информацию о файле.
+	UpdateFile(ctx context.Context, fileID string, request *UpdateFileRequest) (updated *File, err error)
 
 	// Upload - инициация загрузки файла в хранилище. Возвращает объект, содержащий подписанный URL.
 	// Завершение загрузки файла осуществляется выполнением POST-запроса
@@ -34,3 +33,9 @@ type Files interface {
 	// удаляются и все связанные структуры
 	DeleteFile(ctx context.Context, file *File) (err error)
 }
+
+type UpdateFileRequest struct {
+	Name      string `json:"name"`
+	MimeType  string `json:"mime_type"`
+	Temporary *bool  `json:"temporary,omitempty"`
+}
diff --git a/pkg/files/storage.go b/files/storage.go
similarity index 92%
rename from pkg/files/storage.go
rename to files/storage.go
index 085d01f8..eceb0320 100644
--- a/pkg/files/storage.go
+++ b/files/storage.go
@@ -16,6 +16,9 @@ type Storage interface {
 	// Move - перемещает файл с ключом src.Key по новому пути dst.Key
 	Move(ctx context.Context, src, dst *File) (*File, error)
 
+	// UpdateFile обновляет информацию о файле.
+	UpdateFile(ctx context.Context, file *File) error
+
 	// Upload - одиночная загрузка файла в хранилище
 	// Максимальный размер загружаемого файла - 5ГБ
 	Upload(ctx context.Context, file *File) (*Upload, error)
diff --git a/pkg/files/transport/client.go b/files/transport/client.go
similarity index 83%
rename from pkg/files/transport/client.go
rename to files/transport/client.go
index 09bf05fe..c32e9c30 100644
--- a/pkg/files/transport/client.go
+++ b/files/transport/client.go
@@ -5,7 +5,7 @@ package transport
 import (
 	"context"
 
-	files "git.perx.ru/perxis/perxis-go/pkg/files"
+	files "git.perx.ru/perxis/perxis-go/files"
 )
 
 func (set EndpointsSet) StartUpload(arg0 context.Context, arg1 *files.MultipartUpload) (res0 *files.MultipartUpload, res1 error) {
@@ -35,13 +35,16 @@ func (set EndpointsSet) AbortUpload(arg0 context.Context, arg1 *files.MultipartU
 	return res0
 }
 
-func (set EndpointsSet) MoveUpload(arg0 context.Context, arg1 *files.MultipartUpload) (res0 *files.File, res1 error) {
-	request := MoveUploadRequest{Upload: arg1}
-	response, res1 := set.MoveUploadEndpoint(arg0, &request)
+func (set EndpointsSet) UpdateFile(arg0 context.Context, arg1 string, arg2 *files.UpdateFileRequest) (res0 *files.File, res1 error) {
+	request := UpdateFileRequest{
+		FileID:  arg1,
+		Request: arg2,
+	}
+	response, res1 := set.UpdateFileEndpoint(arg0, &request)
 	if res1 != nil {
 		return
 	}
-	return response.(*MoveUploadResponse).File, res1
+	return response.(*UpdateFileResponse).Updated, res1
 }
 
 func (set EndpointsSet) Upload(arg0 context.Context, arg1 *files.File) (res0 *files.Upload, res1 error) {
diff --git a/pkg/files/transport/endpoints.microgen.go b/files/transport/endpoints.microgen.go
similarity index 91%
rename from pkg/files/transport/endpoints.microgen.go
rename to files/transport/endpoints.microgen.go
index 96652f6f..639e9dfa 100644
--- a/pkg/files/transport/endpoints.microgen.go
+++ b/files/transport/endpoints.microgen.go
@@ -9,7 +9,7 @@ type EndpointsSet struct {
 	StartUploadEndpoint    endpoint.Endpoint
 	CompleteUploadEndpoint endpoint.Endpoint
 	AbortUploadEndpoint    endpoint.Endpoint
-	MoveUploadEndpoint     endpoint.Endpoint
+	UpdateFileEndpoint     endpoint.Endpoint
 	UploadEndpoint         endpoint.Endpoint
 	GetFileEndpoint        endpoint.Endpoint
 	DeleteFileEndpoint     endpoint.Endpoint
diff --git a/pkg/files/transport/exchanges.microgen.go b/files/transport/exchanges.microgen.go
similarity index 79%
rename from pkg/files/transport/exchanges.microgen.go
rename to files/transport/exchanges.microgen.go
index df9a4782..a5f1e434 100644
--- a/pkg/files/transport/exchanges.microgen.go
+++ b/files/transport/exchanges.microgen.go
@@ -2,7 +2,7 @@
 
 package transport
 
-import files "git.perx.ru/perxis/perxis-go/pkg/files"
+import files "git.perx.ru/perxis/perxis-go/files"
 
 type (
 	StartUploadRequest struct {
@@ -25,11 +25,12 @@ type (
 	// Formal exchange type, please do not delete.
 	AbortUploadResponse struct{}
 
-	MoveUploadRequest struct {
-		Upload *files.MultipartUpload `json:"upload"`
+	UpdateFileRequest struct {
+		FileID  string                   `json:"file"`
+		Request *files.UpdateFileRequest `json:"request"`
 	}
-	MoveUploadResponse struct {
-		File *files.File `json:"file"`
+	UpdateFileResponse struct {
+		Updated *files.File `json:"updated"`
 	}
 
 	UploadRequest struct {
diff --git a/pkg/files/transport/grpc/client.go b/files/transport/grpc/client.go
similarity index 86%
rename from pkg/files/transport/grpc/client.go
rename to files/transport/grpc/client.go
index e528e995..c15b7fc7 100644
--- a/pkg/files/transport/grpc/client.go
+++ b/files/transport/grpc/client.go
@@ -3,8 +3,8 @@
 package transportgrpc
 
 import (
+	transport "git.perx.ru/perxis/perxis-go/files/transport"
 	grpcerr "git.perx.ru/perxis/perxis-go/pkg/errors/grpc"
-	transport "git.perx.ru/perxis/perxis-go/pkg/files/transport"
 	grpckit "github.com/go-kit/kit/transport/grpc"
 	grpc "google.golang.org/grpc"
 )
@@ -16,7 +16,7 @@ func NewClient(conn *grpc.ClientConn, opts ...grpckit.ClientOption) transport.En
 		CompleteUploadEndpoint: grpcerr.ClientMiddleware(c.CompleteUploadEndpoint),
 		DeleteFileEndpoint:     grpcerr.ClientMiddleware(c.DeleteFileEndpoint),
 		GetFileEndpoint:        grpcerr.ClientMiddleware(c.GetFileEndpoint),
-		MoveUploadEndpoint:     grpcerr.ClientMiddleware(c.MoveUploadEndpoint),
+		UpdateFileEndpoint:     grpcerr.ClientMiddleware(c.UpdateFileEndpoint),
 		StartUploadEndpoint:    grpcerr.ClientMiddleware(c.StartUploadEndpoint),
 		UploadEndpoint:         grpcerr.ClientMiddleware(c.UploadEndpoint),
 	}
diff --git a/pkg/files/transport/grpc/client.microgen.go b/files/transport/grpc/client.microgen.go
similarity index 87%
rename from pkg/files/transport/grpc/client.microgen.go
rename to files/transport/grpc/client.microgen.go
index a86a2811..f2ea1b5f 100644
--- a/pkg/files/transport/grpc/client.microgen.go
+++ b/files/transport/grpc/client.microgen.go
@@ -3,7 +3,7 @@
 package transportgrpc
 
 import (
-	transport "git.perx.ru/perxis/perxis-go/pkg/files/transport"
+	transport "git.perx.ru/perxis/perxis-go/files/transport"
 	pb "git.perx.ru/perxis/perxis-go/proto/files"
 	grpckit "github.com/go-kit/kit/transport/grpc"
 	grpc "google.golang.org/grpc"
@@ -43,11 +43,11 @@ func NewGRPCClient(conn *grpc.ClientConn, addr string, opts ...grpckit.ClientOpt
 			pb.GetFileResponse{},
 			opts...,
 		).Endpoint(),
-		MoveUploadEndpoint: grpckit.NewClient(
-			conn, addr, "MoveUpload",
-			_Encode_MoveUpload_Request,
-			_Decode_MoveUpload_Response,
-			pb.MoveUploadResponse{},
+		UpdateFileEndpoint: grpckit.NewClient(
+			conn, addr, "UpdateFile",
+			_Encode_UpdateFile_Request,
+			_Decode_UpdateFile_Response,
+			pb.UpdateFileResponse{},
 			opts...,
 		).Endpoint(),
 		StartUploadEndpoint: grpckit.NewClient(
diff --git a/pkg/files/transport/grpc/protobuf_endpoint_converters.microgen.go b/files/transport/grpc/protobuf_endpoint_converters.microgen.go
similarity index 86%
rename from pkg/files/transport/grpc/protobuf_endpoint_converters.microgen.go
rename to files/transport/grpc/protobuf_endpoint_converters.microgen.go
index 6c41a8c2..e37d7c4a 100644
--- a/pkg/files/transport/grpc/protobuf_endpoint_converters.microgen.go
+++ b/files/transport/grpc/protobuf_endpoint_converters.microgen.go
@@ -7,8 +7,8 @@ import (
 	"context"
 	"errors"
 
-	"git.perx.ru/perxis/perxis-go/pkg/files"
-	"git.perx.ru/perxis/perxis-go/pkg/files/transport"
+	"git.perx.ru/perxis/perxis-go/files"
+	"git.perx.ru/perxis/perxis-go/files/transport"
 	pb "git.perx.ru/perxis/perxis-go/proto/files"
 	empty "google.golang.org/protobuf/types/known/emptypb"
 )
@@ -49,16 +49,17 @@ func _Encode_AbortUpload_Request(ctx context.Context, request interface{}) (inte
 	return &pb.AbortUploadRequest{Upload: reqUpload}, nil
 }
 
-func _Encode_MoveUpload_Request(ctx context.Context, request interface{}) (interface{}, error) {
+func _Encode_UpdateFile_Request(ctx context.Context, request interface{}) (interface{}, error) {
 	if request == nil {
-		return nil, errors.New("nil MoveUploadRequest")
-	}
-	req := request.(*transport.MoveUploadRequest)
-	reqUpload, err := PtrMultipartUploadToProto(req.Upload)
-	if err != nil {
-		return nil, err
-	}
-	return &pb.MoveUploadRequest{Upload: reqUpload}, nil
+		return nil, errors.New("nil UpdateFileRequest")
+	}
+	req := request.(*transport.UpdateFileRequest)
+	return &pb.UpdateFileRequest{
+		FileId:    req.FileID,
+		Name:      req.Request.Name,
+		MimeType:  req.Request.MimeType,
+		Temporary: req.Request.Temporary,
+	}, nil
 }
 
 func _Encode_DeleteFile_Request(ctx context.Context, request interface{}) (interface{}, error) {
@@ -101,16 +102,16 @@ func _Encode_AbortUpload_Response(ctx context.Context, response interface{}) (in
 	return &empty.Empty{}, nil
 }
 
-func _Encode_MoveUpload_Response(ctx context.Context, response interface{}) (interface{}, error) {
+func _Encode_UpdateFile_Response(ctx context.Context, response interface{}) (interface{}, error) {
 	if response == nil {
-		return nil, errors.New("nil MoveUploadResponse")
+		return nil, errors.New("nil UpdateFileResponse")
 	}
-	resp := response.(*transport.MoveUploadResponse)
-	respFile, err := PtrFileToProto(resp.File)
+	resp := response.(*transport.UpdateFileResponse)
+	respFile, err := PtrFileToProto(resp.Updated)
 	if err != nil {
 		return nil, err
 	}
-	return &pb.MoveUploadResponse{File: respFile}, nil
+	return &pb.UpdateFileResponse{Updated: respFile}, nil
 }
 
 func _Encode_DeleteFile_Response(ctx context.Context, response interface{}) (interface{}, error) {
@@ -153,16 +154,19 @@ func _Decode_AbortUpload_Request(ctx context.Context, request interface{}) (inte
 	return &transport.AbortUploadRequest{Upload: reqUpload}, nil
 }
 
-func _Decode_MoveUpload_Request(ctx context.Context, request interface{}) (interface{}, error) {
+func _Decode_UpdateFile_Request(ctx context.Context, request interface{}) (interface{}, error) {
 	if request == nil {
-		return nil, errors.New("nil MoveUploadRequest")
-	}
-	req := request.(*pb.MoveUploadRequest)
-	reqUpload, err := ProtoToPtrMultipartUpload(req.Upload)
-	if err != nil {
-		return nil, err
-	}
-	return &transport.MoveUploadRequest{Upload: reqUpload}, nil
+		return nil, errors.New("nil UpdateFileRequest")
+	}
+	req := request.(*pb.UpdateFileRequest)
+	return &transport.UpdateFileRequest{
+		FileID: req.FileId,
+		Request: &files.UpdateFileRequest{
+			Name:      req.Name,
+			MimeType:  req.MimeType,
+			Temporary: req.Temporary,
+		},
+	}, nil
 }
 
 func _Decode_DeleteFile_Request(ctx context.Context, request interface{}) (interface{}, error) {
@@ -205,16 +209,16 @@ func _Decode_AbortUpload_Response(ctx context.Context, response interface{}) (in
 	return &empty.Empty{}, nil
 }
 
-func _Decode_MoveUpload_Response(ctx context.Context, response interface{}) (interface{}, error) {
+func _Decode_UpdateFile_Response(ctx context.Context, response interface{}) (interface{}, error) {
 	if response == nil {
-		return nil, errors.New("nil MoveUploadResponse")
+		return nil, errors.New("nil UpdateFileResponse")
 	}
-	resp := response.(*pb.MoveUploadResponse)
-	respFile, err := ProtoToPtrFile(resp.File)
+	resp := response.(*pb.UpdateFileResponse)
+	respFile, err := ProtoToPtrFile(resp.Updated)
 	if err != nil {
 		return nil, err
 	}
-	return &transport.MoveUploadResponse{File: respFile}, nil
+	return &transport.UpdateFileResponse{Updated: respFile}, nil
 }
 
 func _Decode_DeleteFile_Response(ctx context.Context, response interface{}) (interface{}, error) {
diff --git a/pkg/files/transport/grpc/protobuf_type_converters.microgen.go b/files/transport/grpc/protobuf_type_converters.microgen.go
similarity index 98%
rename from pkg/files/transport/grpc/protobuf_type_converters.microgen.go
rename to files/transport/grpc/protobuf_type_converters.microgen.go
index 06651e67..8db9d72e 100644
--- a/pkg/files/transport/grpc/protobuf_type_converters.microgen.go
+++ b/files/transport/grpc/protobuf_type_converters.microgen.go
@@ -5,7 +5,7 @@
 package transportgrpc
 
 import (
-	"git.perx.ru/perxis/perxis-go/pkg/files"
+	"git.perx.ru/perxis/perxis-go/files"
 	pb "git.perx.ru/perxis/perxis-go/proto/files"
 )
 
diff --git a/pkg/files/transport/grpc/server.go b/files/transport/grpc/server.go
similarity index 82%
rename from pkg/files/transport/grpc/server.go
rename to files/transport/grpc/server.go
index dcfc0759..d7994dc0 100644
--- a/pkg/files/transport/grpc/server.go
+++ b/files/transport/grpc/server.go
@@ -1,9 +1,9 @@
 package transportgrpc
 
 import (
+	"git.perx.ru/perxis/perxis-go/files"
+	"git.perx.ru/perxis/perxis-go/files/transport"
 	grpcerr "git.perx.ru/perxis/perxis-go/pkg/errors/grpc"
-	"git.perx.ru/perxis/perxis-go/pkg/files"
-	"git.perx.ru/perxis/perxis-go/pkg/files/transport"
 	pb "git.perx.ru/perxis/perxis-go/proto/files"
 	grpckit "github.com/go-kit/kit/transport/grpc"
 )
@@ -15,7 +15,7 @@ func NewServer(svc files.Files, opts ...grpckit.ServerOption) pb.FilesServer {
 		CompleteUploadEndpoint: grpcerr.ServerMiddleware(eps.CompleteUploadEndpoint),
 		DeleteFileEndpoint:     grpcerr.ServerMiddleware(eps.DeleteFileEndpoint),
 		GetFileEndpoint:        grpcerr.ServerMiddleware(eps.GetFileEndpoint),
-		MoveUploadEndpoint:     grpcerr.ServerMiddleware(eps.MoveUploadEndpoint),
+		UpdateFileEndpoint:     grpcerr.ServerMiddleware(eps.UpdateFileEndpoint),
 		StartUploadEndpoint:    grpcerr.ServerMiddleware(eps.StartUploadEndpoint),
 		UploadEndpoint:         grpcerr.ServerMiddleware(eps.UploadEndpoint),
 	}
diff --git a/pkg/files/transport/grpc/server.microgen.go b/files/transport/grpc/server.microgen.go
similarity index 87%
rename from pkg/files/transport/grpc/server.microgen.go
rename to files/transport/grpc/server.microgen.go
index b3b4eafa..f7a15891 100644
--- a/pkg/files/transport/grpc/server.microgen.go
+++ b/files/transport/grpc/server.microgen.go
@@ -4,7 +4,7 @@
 package transportgrpc
 
 import (
-	transport "git.perx.ru/perxis/perxis-go/pkg/files/transport"
+	transport "git.perx.ru/perxis/perxis-go/files/transport"
 	pb "git.perx.ru/perxis/perxis-go/proto/files"
 	grpc "github.com/go-kit/kit/transport/grpc"
 	context "golang.org/x/net/context"
@@ -15,7 +15,7 @@ type filesServer struct {
 	startUpload    grpc.Handler
 	completeUpload grpc.Handler
 	abortUpload    grpc.Handler
-	moveUpload     grpc.Handler
+	updateFile     grpc.Handler
 	upload         grpc.Handler
 	getFile        grpc.Handler
 	deleteFile     grpc.Handler
@@ -49,10 +49,10 @@ func NewGRPCServer(endpoints *transport.EndpointsSet, opts ...grpc.ServerOption)
 			_Encode_GetFile_Response,
 			opts...,
 		),
-		moveUpload: grpc.NewServer(
-			endpoints.MoveUploadEndpoint,
-			_Decode_MoveUpload_Request,
-			_Encode_MoveUpload_Response,
+		updateFile: grpc.NewServer(
+			endpoints.UpdateFileEndpoint,
+			_Decode_UpdateFile_Request,
+			_Encode_UpdateFile_Response,
 			opts...,
 		),
 		startUpload: grpc.NewServer(
@@ -94,12 +94,12 @@ func (S *filesServer) AbortUpload(ctx context.Context, req *pb.AbortUploadReques
 	return resp.(*empty.Empty), nil
 }
 
-func (S *filesServer) MoveUpload(ctx context.Context, req *pb.MoveUploadRequest) (*pb.MoveUploadResponse, error) {
-	_, resp, err := S.moveUpload.ServeGRPC(ctx, req)
+func (S *filesServer) UpdateFile(ctx context.Context, req *pb.UpdateFileRequest) (*pb.UpdateFileResponse, error) {
+	_, resp, err := S.updateFile.ServeGRPC(ctx, req)
 	if err != nil {
 		return nil, err
 	}
-	return resp.(*pb.MoveUploadResponse), nil
+	return resp.(*pb.UpdateFileResponse), nil
 }
 
 func (S *filesServer) Upload(ctx context.Context, req *pb.UploadRequest) (*pb.UploadResponse, error) {
diff --git a/pkg/files/transport/server.microgen.go b/files/transport/server.microgen.go
similarity index 87%
rename from pkg/files/transport/server.microgen.go
rename to files/transport/server.microgen.go
index 7cd25b06..e16902c2 100644
--- a/pkg/files/transport/server.microgen.go
+++ b/files/transport/server.microgen.go
@@ -5,7 +5,7 @@ package transport
 import (
 	"context"
 
-	files "git.perx.ru/perxis/perxis-go/pkg/files"
+	files "git.perx.ru/perxis/perxis-go/files"
 	endpoint "github.com/go-kit/kit/endpoint"
 )
 
@@ -15,7 +15,7 @@ func Endpoints(svc files.Files) EndpointsSet {
 		CompleteUploadEndpoint: CompleteUploadEndpoint(svc),
 		DeleteFileEndpoint:     DeleteFileEndpoint(svc),
 		GetFileEndpoint:        GetFileEndpoint(svc),
-		MoveUploadEndpoint:     MoveUploadEndpoint(svc),
+		UpdateFileEndpoint:     UpdateFileEndpoint(svc),
 		StartUploadEndpoint:    StartUploadEndpoint(svc),
 		UploadEndpoint:         UploadEndpoint(svc),
 	}
@@ -45,11 +45,11 @@ func AbortUploadEndpoint(svc files.Files) endpoint.Endpoint {
 	}
 }
 
-func MoveUploadEndpoint(svc files.Files) endpoint.Endpoint {
+func UpdateFileEndpoint(svc files.Files) endpoint.Endpoint {
 	return func(arg0 context.Context, request interface{}) (interface{}, error) {
-		req := request.(*MoveUploadRequest)
-		res0, res1 := svc.MoveUpload(arg0, req.Upload)
-		return &MoveUploadResponse{File: res0}, res1
+		req := request.(*UpdateFileRequest)
+		res0, res1 := svc.UpdateFile(arg0, req.FileID, req.Request)
+		return &UpdateFileResponse{Updated: res0}, res1
 	}
 }
 
diff --git a/pkg/files/uploader.go b/files/uploader.go
similarity index 100%
rename from pkg/files/uploader.go
rename to files/uploader.go
diff --git a/images/middleware/access_logging_middleware.go b/images/middleware/access_logging_middleware.go
index 0a5f5ec2..814f234a 100644
--- a/images/middleware/access_logging_middleware.go
+++ b/images/middleware/access_logging_middleware.go
@@ -10,9 +10,10 @@ import (
 	"context"
 	"time"
 
+	"git.perx.ru/perxis/perxis-go/files"
 	"git.perx.ru/perxis/perxis-go/images"
+	
 	"git.perx.ru/perxis/perxis-go/pkg/auth"
-	"git.perx.ru/perxis/perxis-go/pkg/files"
 	"go.uber.org/zap"
 )
 
diff --git a/images/middleware/error_logging_middleware.go b/images/middleware/error_logging_middleware.go
index d0e36f87..1c823c47 100644
--- a/images/middleware/error_logging_middleware.go
+++ b/images/middleware/error_logging_middleware.go
@@ -9,8 +9,8 @@ package middleware
 import (
 	"context"
 
+	"git.perx.ru/perxis/perxis-go/files"
 	"git.perx.ru/perxis/perxis-go/images"
-	"git.perx.ru/perxis/perxis-go/pkg/files"
 	"go.uber.org/zap"
 )
 
diff --git a/images/middleware/recovering_middleware.go b/images/middleware/recovering_middleware.go
index 9c0a447e..ba786490 100644
--- a/images/middleware/recovering_middleware.go
+++ b/images/middleware/recovering_middleware.go
@@ -10,8 +10,8 @@ import (
 	"context"
 	"fmt"
 
+	"git.perx.ru/perxis/perxis-go/files"
 	"git.perx.ru/perxis/perxis-go/images"
-	"git.perx.ru/perxis/perxis-go/pkg/files"
 	"go.uber.org/zap"
 )
 
diff --git a/images/middleware/telemetry_middleware.go b/images/middleware/telemetry_middleware.go
index 8eafa029..de560cff 100644
--- a/images/middleware/telemetry_middleware.go
+++ b/images/middleware/telemetry_middleware.go
@@ -10,10 +10,10 @@ import (
 	"context"
 	"time"
 
+	"git.perx.ru/perxis/perxis-go/files"
 	pkgId "git.perx.ru/perxis/perxis-go/id"
 	"git.perx.ru/perxis/perxis-go/images"
 	"git.perx.ru/perxis/perxis-go/pkg/auth"
-	"git.perx.ru/perxis/perxis-go/pkg/files"
 	"git.perx.ru/perxis/perxis-go/pkg/telemetry/metrics"
 	"go.opentelemetry.io/otel"
 	"go.opentelemetry.io/otel/attribute"
diff --git a/images/mocks/Images.go b/images/mocks/Images.go
index 0797d930..ce986aba 100644
--- a/images/mocks/Images.go
+++ b/images/mocks/Images.go
@@ -5,8 +5,8 @@ package mocks
 import (
 	context "context"
 
+	files "git.perx.ru/perxis/perxis-go/files"
 	images "git.perx.ru/perxis/perxis-go/images"
-	files "git.perx.ru/perxis/perxis-go/pkg/files"
 
 	mock "github.com/stretchr/testify/mock"
 )
diff --git a/images/service.go b/images/service.go
index 0162a58d..089a571e 100644
--- a/images/service.go
+++ b/images/service.go
@@ -3,7 +3,7 @@ package images
 import (
 	"context"
 
-	"git.perx.ru/perxis/perxis-go/pkg/files"
+	"git.perx.ru/perxis/perxis-go/files"
 )
 
 // Images - описывает интерфейс сервиса для обработки изображений
diff --git a/images/transport/client.go b/images/transport/client.go
index bfa7487c..0d320851 100644
--- a/images/transport/client.go
+++ b/images/transport/client.go
@@ -5,8 +5,8 @@ package transport
 import (
 	"context"
 
+	files "git.perx.ru/perxis/perxis-go/files"
 	images "git.perx.ru/perxis/perxis-go/images"
-	files "git.perx.ru/perxis/perxis-go/pkg/files"
 )
 
 func (set EndpointsSet) Get(arg0 context.Context, arg1 *files.File, arg2 *images.GetOptions) (res0 *files.File, res1 error) {
diff --git a/images/transport/exchanges.microgen.go b/images/transport/exchanges.microgen.go
index 71d2cf72..7589660e 100644
--- a/images/transport/exchanges.microgen.go
+++ b/images/transport/exchanges.microgen.go
@@ -3,8 +3,8 @@
 package transport
 
 import (
+	files "git.perx.ru/perxis/perxis-go/files"
 	images "git.perx.ru/perxis/perxis-go/images"
-	files "git.perx.ru/perxis/perxis-go/pkg/files"
 )
 
 type (
diff --git a/images/transport/grpc/protobuf_type_converters.microgen.go b/images/transport/grpc/protobuf_type_converters.microgen.go
index 51f6d686..1fe240c5 100644
--- a/images/transport/grpc/protobuf_type_converters.microgen.go
+++ b/images/transport/grpc/protobuf_type_converters.microgen.go
@@ -5,8 +5,8 @@
 package transportgrpc
 
 import (
+	file "git.perx.ru/perxis/perxis-go/files"
 	service "git.perx.ru/perxis/perxis-go/images"
-	file "git.perx.ru/perxis/perxis-go/pkg/files"
 	pbfile "git.perx.ru/perxis/perxis-go/proto/files"
 	pbimage "git.perx.ru/perxis/perxis-go/proto/images"
 )
diff --git a/perxis-proto b/perxis-proto
index 0627c9f8..a478665c 160000
--- a/perxis-proto
+++ b/perxis-proto
@@ -1 +1 @@
-Subproject commit 0627c9f829178bc6de2623a0b6d42964c44de496
+Subproject commit a478665c767ecfc9c22dfcdbf41a6b43c4b58523
diff --git a/proto/files/files.pb.go b/proto/files/files.pb.go
index 1a3d4512..31392781 100644
--- a/proto/files/files.pb.go
+++ b/proto/files/files.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.35.1
-// 	protoc        v5.28.3
+// 	protoc-gen-go v1.36.0
+// 	protoc        v5.29.2
 // source: files/files.proto
 
 package files
@@ -22,16 +22,15 @@ const (
 )
 
 type File struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`                             // Уникальный идентификатор файла в хранилище
+	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`                         // Имя файла
+	Size          uint64                 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"`                        // Размер файла
+	MimeType      string                 `protobuf:"bytes,4,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"` // Mime-type файла
+	Url           string                 `protobuf:"bytes,5,opt,name=url,proto3" json:"url,omitempty"`                           // Адрес для загрузки файла
+	Temporary     bool                   `protobuf:"varint,6,opt,name=temporary,proto3" json:"temporary,omitempty"`              // Находится ли файл во временном хранилище
 	unknownFields protoimpl.UnknownFields
-
-	Id        string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`                             // Уникальный идентификатор файла в хранилище
-	Name      string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`                         // Имя файла
-	Size      uint64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"`                        // Размер файла
-	MimeType  string `protobuf:"bytes,4,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"` // Mime-type файла
-	Url       string `protobuf:"bytes,5,opt,name=url,proto3" json:"url,omitempty"`                           // Адрес для загрузки файла
-	Temporary bool   `protobuf:"varint,6,opt,name=temporary,proto3" json:"temporary,omitempty"`              // Находится ли файл во временном хранилище
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *File) Reset() {
@@ -107,15 +106,14 @@ func (x *File) GetTemporary() bool {
 }
 
 type MultipartUpload struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	File          *File                  `protobuf:"bytes,1,opt,name=file,proto3" json:"file,omitempty"`
+	UploadId      string                 `protobuf:"bytes,2,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"`  // Идентификатор загрузки хранилища
+	PartSize      uint64                 `protobuf:"varint,3,opt,name=part_size,json=partSize,proto3" json:"part_size,omitempty"` // Размер блока для загрузки
+	PartUrls      []string               `protobuf:"bytes,4,rep,name=part_urls,json=partUrls,proto3" json:"part_urls,omitempty"`  // Адреса для загрузки пол
+	Parts         []*CompletedPart       `protobuf:"bytes,5,rep,name=parts,proto3" json:"parts,omitempty"`                        // Идентификаторы загруженных блоков (S3 ETAGs)
 	unknownFields protoimpl.UnknownFields
-
-	File     *File            `protobuf:"bytes,1,opt,name=file,proto3" json:"file,omitempty"`
-	UploadId string           `protobuf:"bytes,2,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"`  // Идентификатор загрузки хранилища
-	PartSize uint64           `protobuf:"varint,3,opt,name=part_size,json=partSize,proto3" json:"part_size,omitempty"` // Размер блока для загрузки
-	PartUrls []string         `protobuf:"bytes,4,rep,name=part_urls,json=partUrls,proto3" json:"part_urls,omitempty"`  // Адреса для загрузки пол
-	Parts    []*CompletedPart `protobuf:"bytes,5,rep,name=parts,proto3" json:"parts,omitempty"`                        // Идентификаторы загруженных блоков (S3 ETAGs)
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *MultipartUpload) Reset() {
@@ -184,12 +182,11 @@ func (x *MultipartUpload) GetParts() []*CompletedPart {
 }
 
 type Upload struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	File          *File                  `protobuf:"bytes,1,opt,name=file,proto3" json:"file,omitempty"`
+	UploadUrl     string                 `protobuf:"bytes,2,opt,name=upload_url,json=uploadUrl,proto3" json:"upload_url,omitempty"` // URL для загрузки файлов
 	unknownFields protoimpl.UnknownFields
-
-	File      *File  `protobuf:"bytes,1,opt,name=file,proto3" json:"file,omitempty"`
-	UploadUrl string `protobuf:"bytes,2,opt,name=upload_url,json=uploadUrl,proto3" json:"upload_url,omitempty"` // URL для загрузки файлов
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *Upload) Reset() {
@@ -237,12 +234,11 @@ func (x *Upload) GetUploadUrl() string {
 }
 
 type CompletedPart struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Number        int32                  `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
+	Id            string                 `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Number int32  `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
-	Id     string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *CompletedPart) Reset() {
@@ -290,11 +286,10 @@ func (x *CompletedPart) GetId() string {
 }
 
 type StartUploadRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Upload        *MultipartUpload       `protobuf:"bytes,1,opt,name=upload,proto3" json:"upload,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Upload *MultipartUpload `protobuf:"bytes,1,opt,name=upload,proto3" json:"upload,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *StartUploadRequest) Reset() {
@@ -335,11 +330,10 @@ func (x *StartUploadRequest) GetUpload() *MultipartUpload {
 }
 
 type StartUploadResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Upload        *MultipartUpload       `protobuf:"bytes,1,opt,name=upload,proto3" json:"upload,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Upload *MultipartUpload `protobuf:"bytes,1,opt,name=upload,proto3" json:"upload,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *StartUploadResponse) Reset() {
@@ -380,11 +374,10 @@ func (x *StartUploadResponse) GetUpload() *MultipartUpload {
 }
 
 type CompleteUploadRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Upload        *MultipartUpload       `protobuf:"bytes,1,opt,name=upload,proto3" json:"upload,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Upload *MultipartUpload `protobuf:"bytes,1,opt,name=upload,proto3" json:"upload,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *CompleteUploadRequest) Reset() {
@@ -425,11 +418,10 @@ func (x *CompleteUploadRequest) GetUpload() *MultipartUpload {
 }
 
 type CompleteUploadResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Upload        *MultipartUpload       `protobuf:"bytes,1,opt,name=upload,proto3" json:"upload,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Upload *MultipartUpload `protobuf:"bytes,1,opt,name=upload,proto3" json:"upload,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *CompleteUploadResponse) Reset() {
@@ -470,11 +462,10 @@ func (x *CompleteUploadResponse) GetUpload() *MultipartUpload {
 }
 
 type AbortUploadRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Upload        *MultipartUpload       `protobuf:"bytes,1,opt,name=upload,proto3" json:"upload,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Upload *MultipartUpload `protobuf:"bytes,1,opt,name=upload,proto3" json:"upload,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *AbortUploadRequest) Reset() {
@@ -515,9 +506,9 @@ func (x *AbortUploadRequest) GetUpload() *MultipartUpload {
 }
 
 type AbortUploadResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *AbortUploadResponse) Reset() {
@@ -550,28 +541,30 @@ func (*AbortUploadResponse) Descriptor() ([]byte, []int) {
 	return file_files_files_proto_rawDescGZIP(), []int{9}
 }
 
-type MoveUploadRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+type UpdateFileRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	FileId        string                 `protobuf:"bytes,1,opt,name=file_id,json=fileId,proto3" json:"file_id,omitempty"`
+	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+	MimeType      string                 `protobuf:"bytes,3,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"`
+	Temporary     *bool                  `protobuf:"varint,4,opt,name=temporary,proto3,oneof" json:"temporary,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Upload *MultipartUpload `protobuf:"bytes,1,opt,name=upload,proto3" json:"upload,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
-func (x *MoveUploadRequest) Reset() {
-	*x = MoveUploadRequest{}
+func (x *UpdateFileRequest) Reset() {
+	*x = UpdateFileRequest{}
 	mi := &file_files_files_proto_msgTypes[10]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
 
-func (x *MoveUploadRequest) String() string {
+func (x *UpdateFileRequest) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*MoveUploadRequest) ProtoMessage() {}
+func (*UpdateFileRequest) ProtoMessage() {}
 
-func (x *MoveUploadRequest) ProtoReflect() protoreflect.Message {
+func (x *UpdateFileRequest) ProtoReflect() protoreflect.Message {
 	mi := &file_files_files_proto_msgTypes[10]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -583,40 +576,60 @@ func (x *MoveUploadRequest) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use MoveUploadRequest.ProtoReflect.Descriptor instead.
-func (*MoveUploadRequest) Descriptor() ([]byte, []int) {
+// Deprecated: Use UpdateFileRequest.ProtoReflect.Descriptor instead.
+func (*UpdateFileRequest) Descriptor() ([]byte, []int) {
 	return file_files_files_proto_rawDescGZIP(), []int{10}
 }
 
-func (x *MoveUploadRequest) GetUpload() *MultipartUpload {
+func (x *UpdateFileRequest) GetFileId() string {
 	if x != nil {
-		return x.Upload
+		return x.FileId
 	}
-	return nil
+	return ""
 }
 
-type MoveUploadResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
+func (x *UpdateFileRequest) GetName() string {
+	if x != nil {
+		return x.Name
+	}
+	return ""
+}
 
-	File *File `protobuf:"bytes,1,opt,name=file,proto3" json:"file,omitempty"`
+func (x *UpdateFileRequest) GetMimeType() string {
+	if x != nil {
+		return x.MimeType
+	}
+	return ""
 }
 
-func (x *MoveUploadResponse) Reset() {
-	*x = MoveUploadResponse{}
+func (x *UpdateFileRequest) GetTemporary() bool {
+	if x != nil && x.Temporary != nil {
+		return *x.Temporary
+	}
+	return false
+}
+
+type UpdateFileResponse struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Updated       *File                  `protobuf:"bytes,1,opt,name=updated,proto3" json:"updated,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *UpdateFileResponse) Reset() {
+	*x = UpdateFileResponse{}
 	mi := &file_files_files_proto_msgTypes[11]
 	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 	ms.StoreMessageInfo(mi)
 }
 
-func (x *MoveUploadResponse) String() string {
+func (x *UpdateFileResponse) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*MoveUploadResponse) ProtoMessage() {}
+func (*UpdateFileResponse) ProtoMessage() {}
 
-func (x *MoveUploadResponse) ProtoReflect() protoreflect.Message {
+func (x *UpdateFileResponse) ProtoReflect() protoreflect.Message {
 	mi := &file_files_files_proto_msgTypes[11]
 	if x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -628,24 +641,23 @@ func (x *MoveUploadResponse) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use MoveUploadResponse.ProtoReflect.Descriptor instead.
-func (*MoveUploadResponse) Descriptor() ([]byte, []int) {
+// Deprecated: Use UpdateFileResponse.ProtoReflect.Descriptor instead.
+func (*UpdateFileResponse) Descriptor() ([]byte, []int) {
 	return file_files_files_proto_rawDescGZIP(), []int{11}
 }
 
-func (x *MoveUploadResponse) GetFile() *File {
+func (x *UpdateFileResponse) GetUpdated() *File {
 	if x != nil {
-		return x.File
+		return x.Updated
 	}
 	return nil
 }
 
 type UploadRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	File          *File                  `protobuf:"bytes,1,opt,name=file,proto3" json:"file,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	File *File `protobuf:"bytes,1,opt,name=file,proto3" json:"file,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *UploadRequest) Reset() {
@@ -686,11 +698,10 @@ func (x *UploadRequest) GetFile() *File {
 }
 
 type UploadResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Upload        *Upload                `protobuf:"bytes,1,opt,name=upload,proto3" json:"upload,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Upload *Upload `protobuf:"bytes,1,opt,name=upload,proto3" json:"upload,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *UploadResponse) Reset() {
@@ -731,11 +742,10 @@ func (x *UploadResponse) GetUpload() *Upload {
 }
 
 type GetFileRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *GetFileRequest) Reset() {
@@ -776,11 +786,10 @@ func (x *GetFileRequest) GetId() string {
 }
 
 type GetFileResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	File          *File                  `protobuf:"bytes,1,opt,name=file,proto3" json:"file,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	File *File `protobuf:"bytes,1,opt,name=file,proto3" json:"file,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *GetFileResponse) Reset() {
@@ -821,11 +830,10 @@ func (x *GetFileResponse) GetFile() *File {
 }
 
 type DeleteFileRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	File          *File                  `protobuf:"bytes,1,opt,name=file,proto3" json:"file,omitempty"`
 	unknownFields protoimpl.UnknownFields
-
-	File *File `protobuf:"bytes,1,opt,name=file,proto3" json:"file,omitempty"`
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *DeleteFileRequest) Reset() {
@@ -866,9 +874,9 @@ func (x *DeleteFileRequest) GetFile() *File {
 }
 
 type DeleteFileResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
+	state         protoimpl.MessageState `protogen:"open.v1"`
 	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
 func (x *DeleteFileResponse) Reset() {
@@ -959,66 +967,71 @@ var file_files_files_proto_rawDesc = []byte{
 	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x4d,
 	0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x06,
 	0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x15, 0x0a, 0x13, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x55,
-	0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0x0a,
-	0x11, 0x4d, 0x6f, 0x76, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x12, 0x2e, 0x0a, 0x06, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x16, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69,
-	0x70, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x06, 0x75, 0x70, 0x6c, 0x6f,
-	0x61, 0x64, 0x22, 0x35, 0x0a, 0x12, 0x4d, 0x6f, 0x76, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x46,
-	0x69, 0x6c, 0x65, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x30, 0x0a, 0x0d, 0x55, 0x70, 0x6c,
-	0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x04, 0x66, 0x69,
-	0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73,
-	0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x37, 0x0a, 0x0e, 0x55,
-	0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a,
-	0x06, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e,
-	0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x06, 0x75, 0x70,
-	0x6c, 0x6f, 0x61, 0x64, 0x22, 0x20, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x32, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c,
-	0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x04, 0x66, 0x69, 0x6c,
-	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e,
-	0x46, 0x69, 0x6c, 0x65, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x34, 0x0a, 0x11, 0x44, 0x65,
-	0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
-	0x1f, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
-	0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65,
-	0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xe0, 0x03, 0x0a, 0x05, 0x46, 0x69, 0x6c, 0x65, 0x73,
-	0x12, 0x46, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12,
-	0x19, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c,
-	0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x66, 0x69, 0x6c,
-	0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70,
-	0x6c, 0x65, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1c, 0x2e, 0x66, 0x69, 0x6c,
+	0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x01,
+	0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
+	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+	0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a,
+	0x09, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
+	0x48, 0x00, 0x52, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x88, 0x01, 0x01,
+	0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, 0x22, 0x3b,
+	0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x69,
+	0x6c, 0x65, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x22, 0x30, 0x0a, 0x0d, 0x55,
+	0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x04,
+	0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x66, 0x69, 0x6c,
+	0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x37, 0x0a,
+	0x0e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x25, 0x0a, 0x06, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x0d, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x06,
+	0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x20, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c,
+	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x32, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x46,
+	0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x04, 0x66,
+	0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x66, 0x69, 0x6c, 0x65,
+	0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x34, 0x0a, 0x11,
+	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x12, 0x1f, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x0b, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x04, 0x66, 0x69,
+	0x6c, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xe0, 0x03, 0x0a, 0x05, 0x46, 0x69, 0x6c,
+	0x65, 0x73, 0x12, 0x46, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61,
+	0x64, 0x12, 0x19, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55,
+	0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x66,
+	0x69, 0x6c, 0x65, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0e, 0x43, 0x6f,
+	0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1c, 0x2e, 0x66,
+	0x69, 0x6c, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x70, 0x6c,
+	0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x66, 0x69, 0x6c,
 	0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61,
-	0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73,
-	0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0b, 0x41, 0x62, 0x6f,
-	0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x19, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73,
-	0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x43, 0x0a,
-	0x0a, 0x4d, 0x6f, 0x76, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x18, 0x2e, 0x66, 0x69,
-	0x6c, 0x65, 0x73, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x4d, 0x6f,
-	0x76, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x22, 0x00, 0x12, 0x37, 0x0a, 0x06, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x14, 0x2e, 0x66,
-	0x69, 0x6c, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x1a, 0x15, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61,
-	0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x07, 0x47,
-	0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x15, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x47,
-	0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e,
-	0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74,
-	0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x44, 0x65,
-	0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
-	0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x69, 0x74,
-	0x2e, 0x70, 0x65, 0x72, 0x78, 0x2e, 0x72, 0x75, 0x2f, 0x70, 0x65, 0x72, 0x78, 0x69, 0x73, 0x2f,
-	0x70, 0x65, 0x72, 0x78, 0x69, 0x73, 0x2d, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,
-	0x66, 0x69, 0x6c, 0x65, 0x73, 0x3b, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x33,
+	0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0b, 0x41,
+	0x62, 0x6f, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x19, 0x2e, 0x66, 0x69, 0x6c,
+	0x65, 0x73, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12,
+	0x43, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x2e,
+	0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e,
+	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x06, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x14,
+	0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x6c,
+	0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3a, 0x0a,
+	0x07, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x15, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73,
+	0x2e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x16, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0a, 0x44, 0x65, 0x6c,
+	0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e,
+	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x42, 0x30, 0x5a, 0x2e, 0x67,
+	0x69, 0x74, 0x2e, 0x70, 0x65, 0x72, 0x78, 0x2e, 0x72, 0x75, 0x2f, 0x70, 0x65, 0x72, 0x78, 0x69,
+	0x73, 0x2f, 0x70, 0x65, 0x72, 0x78, 0x69, 0x73, 0x2d, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x3b, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x62, 0x06, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -1045,8 +1058,8 @@ var file_files_files_proto_goTypes = []any{
 	(*CompleteUploadResponse)(nil), // 7: files.CompleteUploadResponse
 	(*AbortUploadRequest)(nil),     // 8: files.AbortUploadRequest
 	(*AbortUploadResponse)(nil),    // 9: files.AbortUploadResponse
-	(*MoveUploadRequest)(nil),      // 10: files.MoveUploadRequest
-	(*MoveUploadResponse)(nil),     // 11: files.MoveUploadResponse
+	(*UpdateFileRequest)(nil),      // 10: files.UpdateFileRequest
+	(*UpdateFileResponse)(nil),     // 11: files.UpdateFileResponse
 	(*UploadRequest)(nil),          // 12: files.UploadRequest
 	(*UploadResponse)(nil),         // 13: files.UploadResponse
 	(*GetFileRequest)(nil),         // 14: files.GetFileRequest
@@ -1064,31 +1077,30 @@ var file_files_files_proto_depIdxs = []int32{
 	1,  // 5: files.CompleteUploadRequest.upload:type_name -> files.MultipartUpload
 	1,  // 6: files.CompleteUploadResponse.upload:type_name -> files.MultipartUpload
 	1,  // 7: files.AbortUploadRequest.upload:type_name -> files.MultipartUpload
-	1,  // 8: files.MoveUploadRequest.upload:type_name -> files.MultipartUpload
-	0,  // 9: files.MoveUploadResponse.file:type_name -> files.File
-	0,  // 10: files.UploadRequest.file:type_name -> files.File
-	2,  // 11: files.UploadResponse.upload:type_name -> files.Upload
-	0,  // 12: files.GetFileResponse.file:type_name -> files.File
-	0,  // 13: files.DeleteFileRequest.file:type_name -> files.File
-	4,  // 14: files.Files.StartUpload:input_type -> files.StartUploadRequest
-	6,  // 15: files.Files.CompleteUpload:input_type -> files.CompleteUploadRequest
-	8,  // 16: files.Files.AbortUpload:input_type -> files.AbortUploadRequest
-	10, // 17: files.Files.MoveUpload:input_type -> files.MoveUploadRequest
-	12, // 18: files.Files.Upload:input_type -> files.UploadRequest
-	14, // 19: files.Files.GetFile:input_type -> files.GetFileRequest
-	16, // 20: files.Files.DeleteFile:input_type -> files.DeleteFileRequest
-	5,  // 21: files.Files.StartUpload:output_type -> files.StartUploadResponse
-	7,  // 22: files.Files.CompleteUpload:output_type -> files.CompleteUploadResponse
-	18, // 23: files.Files.AbortUpload:output_type -> google.protobuf.Empty
-	11, // 24: files.Files.MoveUpload:output_type -> files.MoveUploadResponse
-	13, // 25: files.Files.Upload:output_type -> files.UploadResponse
-	15, // 26: files.Files.GetFile:output_type -> files.GetFileResponse
-	18, // 27: files.Files.DeleteFile:output_type -> google.protobuf.Empty
-	21, // [21:28] is the sub-list for method output_type
-	14, // [14:21] is the sub-list for method input_type
-	14, // [14:14] is the sub-list for extension type_name
-	14, // [14:14] is the sub-list for extension extendee
-	0,  // [0:14] is the sub-list for field type_name
+	0,  // 8: files.UpdateFileResponse.updated:type_name -> files.File
+	0,  // 9: files.UploadRequest.file:type_name -> files.File
+	2,  // 10: files.UploadResponse.upload:type_name -> files.Upload
+	0,  // 11: files.GetFileResponse.file:type_name -> files.File
+	0,  // 12: files.DeleteFileRequest.file:type_name -> files.File
+	4,  // 13: files.Files.StartUpload:input_type -> files.StartUploadRequest
+	6,  // 14: files.Files.CompleteUpload:input_type -> files.CompleteUploadRequest
+	8,  // 15: files.Files.AbortUpload:input_type -> files.AbortUploadRequest
+	10, // 16: files.Files.UpdateFile:input_type -> files.UpdateFileRequest
+	12, // 17: files.Files.Upload:input_type -> files.UploadRequest
+	14, // 18: files.Files.GetFile:input_type -> files.GetFileRequest
+	16, // 19: files.Files.DeleteFile:input_type -> files.DeleteFileRequest
+	5,  // 20: files.Files.StartUpload:output_type -> files.StartUploadResponse
+	7,  // 21: files.Files.CompleteUpload:output_type -> files.CompleteUploadResponse
+	18, // 22: files.Files.AbortUpload:output_type -> google.protobuf.Empty
+	11, // 23: files.Files.UpdateFile:output_type -> files.UpdateFileResponse
+	13, // 24: files.Files.Upload:output_type -> files.UploadResponse
+	15, // 25: files.Files.GetFile:output_type -> files.GetFileResponse
+	18, // 26: files.Files.DeleteFile:output_type -> google.protobuf.Empty
+	20, // [20:27] is the sub-list for method output_type
+	13, // [13:20] is the sub-list for method input_type
+	13, // [13:13] is the sub-list for extension type_name
+	13, // [13:13] is the sub-list for extension extendee
+	0,  // [0:13] is the sub-list for field type_name
 }
 
 func init() { file_files_files_proto_init() }
@@ -1096,6 +1108,7 @@ func file_files_files_proto_init() {
 	if File_files_files_proto != nil {
 		return
 	}
+	file_files_files_proto_msgTypes[10].OneofWrappers = []any{}
 	type x struct{}
 	out := protoimpl.TypeBuilder{
 		File: protoimpl.DescBuilder{
diff --git a/proto/files/files_grpc.pb.go b/proto/files/files_grpc.pb.go
index 99f77f24..d2b60f05 100644
--- a/proto/files/files_grpc.pb.go
+++ b/proto/files/files_grpc.pb.go
@@ -1,7 +1,7 @@
 // Code generated by protoc-gen-go-grpc. DO NOT EDIT.
 // versions:
 // - protoc-gen-go-grpc v1.5.1
-// - protoc             v5.28.3
+// - protoc             v5.29.2
 // source: files/files.proto
 
 package files
@@ -23,7 +23,7 @@ const (
 	Files_StartUpload_FullMethodName    = "/files.Files/StartUpload"
 	Files_CompleteUpload_FullMethodName = "/files.Files/CompleteUpload"
 	Files_AbortUpload_FullMethodName    = "/files.Files/AbortUpload"
-	Files_MoveUpload_FullMethodName     = "/files.Files/MoveUpload"
+	Files_UpdateFile_FullMethodName     = "/files.Files/UpdateFile"
 	Files_Upload_FullMethodName         = "/files.Files/Upload"
 	Files_GetFile_FullMethodName        = "/files.Files/GetFile"
 	Files_DeleteFile_FullMethodName     = "/files.Files/DeleteFile"
@@ -45,9 +45,8 @@ type FilesClient interface {
 	CompleteUpload(ctx context.Context, in *CompleteUploadRequest, opts ...grpc.CallOption) (*CompleteUploadResponse, error)
 	// AbortUpload - прерывает процедуру загрузки файла, все загруженные части файла удаляются их хранилища
 	AbortUpload(ctx context.Context, in *AbortUploadRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
-	// MoveUpload - перемещает загруженный файл из временного расположения в постоянное месторасположения.
-	// После перемещение загрузки хранилище выдает новый идентификатор постоянного файла
-	MoveUpload(ctx context.Context, in *MoveUploadRequest, opts ...grpc.CallOption) (*MoveUploadResponse, error)
+	// UpdateFile позволяет обновить информацию о файле.
+	UpdateFile(ctx context.Context, in *UpdateFileRequest, opts ...grpc.CallOption) (*UpdateFileResponse, error)
 	// Upload - инициация загрузки файла в хранилище. Возвращает объект, содержащий подписанный URL.
 	// Завершение загрузки файла осуществляется выполнением POST-запроса
 	Upload(ctx context.Context, in *UploadRequest, opts ...grpc.CallOption) (*UploadResponse, error)
@@ -56,9 +55,9 @@ type FilesClient interface {
 	// DeleteFile - удаляет файл. Если происходит удаление оригинала,
 	// удаляются и все связанные структуры
 	// Возможны следующие ситуации:
-	//   - Удаление оригинального файла. Удаляется файл и все связанные с ним файлы.
-	//   - Удаление связанного файла. Для удаления конкретного файла передается 'ID', 'Type' и 'Name'
-	//   - Удаления связанных файлов конкретного типа (например, все 'thumbnails'). Передается 'ID' и 'Type'
+	//  - Удаление оригинального файла. Удаляется файл и все связанные с ним файлы.
+	//  - Удаление связанного файла. Для удаления конкретного файла передается 'ID', 'Type' и 'Name'
+	//  - Удаления связанных файлов конкретного типа (например, все 'thumbnails'). Передается 'ID' и 'Type'
 	DeleteFile(ctx context.Context, in *DeleteFileRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
 }
 
@@ -100,10 +99,10 @@ func (c *filesClient) AbortUpload(ctx context.Context, in *AbortUploadRequest, o
 	return out, nil
 }
 
-func (c *filesClient) MoveUpload(ctx context.Context, in *MoveUploadRequest, opts ...grpc.CallOption) (*MoveUploadResponse, error) {
+func (c *filesClient) UpdateFile(ctx context.Context, in *UpdateFileRequest, opts ...grpc.CallOption) (*UpdateFileResponse, error) {
 	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
-	out := new(MoveUploadResponse)
-	err := c.cc.Invoke(ctx, Files_MoveUpload_FullMethodName, in, out, cOpts...)
+	out := new(UpdateFileResponse)
+	err := c.cc.Invoke(ctx, Files_UpdateFile_FullMethodName, in, out, cOpts...)
 	if err != nil {
 		return nil, err
 	}
@@ -156,9 +155,8 @@ type FilesServer interface {
 	CompleteUpload(context.Context, *CompleteUploadRequest) (*CompleteUploadResponse, error)
 	// AbortUpload - прерывает процедуру загрузки файла, все загруженные части файла удаляются их хранилища
 	AbortUpload(context.Context, *AbortUploadRequest) (*emptypb.Empty, error)
-	// MoveUpload - перемещает загруженный файл из временного расположения в постоянное месторасположения.
-	// После перемещение загрузки хранилище выдает новый идентификатор постоянного файла
-	MoveUpload(context.Context, *MoveUploadRequest) (*MoveUploadResponse, error)
+	// UpdateFile позволяет обновить информацию о файле.
+	UpdateFile(context.Context, *UpdateFileRequest) (*UpdateFileResponse, error)
 	// Upload - инициация загрузки файла в хранилище. Возвращает объект, содержащий подписанный URL.
 	// Завершение загрузки файла осуществляется выполнением POST-запроса
 	Upload(context.Context, *UploadRequest) (*UploadResponse, error)
@@ -167,9 +165,9 @@ type FilesServer interface {
 	// DeleteFile - удаляет файл. Если происходит удаление оригинала,
 	// удаляются и все связанные структуры
 	// Возможны следующие ситуации:
-	//   - Удаление оригинального файла. Удаляется файл и все связанные с ним файлы.
-	//   - Удаление связанного файла. Для удаления конкретного файла передается 'ID', 'Type' и 'Name'
-	//   - Удаления связанных файлов конкретного типа (например, все 'thumbnails'). Передается 'ID' и 'Type'
+	//  - Удаление оригинального файла. Удаляется файл и все связанные с ним файлы.
+	//  - Удаление связанного файла. Для удаления конкретного файла передается 'ID', 'Type' и 'Name'
+	//  - Удаления связанных файлов конкретного типа (например, все 'thumbnails'). Передается 'ID' и 'Type'
 	DeleteFile(context.Context, *DeleteFileRequest) (*emptypb.Empty, error)
 	mustEmbedUnimplementedFilesServer()
 }
@@ -190,8 +188,8 @@ func (UnimplementedFilesServer) CompleteUpload(context.Context, *CompleteUploadR
 func (UnimplementedFilesServer) AbortUpload(context.Context, *AbortUploadRequest) (*emptypb.Empty, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method AbortUpload not implemented")
 }
-func (UnimplementedFilesServer) MoveUpload(context.Context, *MoveUploadRequest) (*MoveUploadResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method MoveUpload not implemented")
+func (UnimplementedFilesServer) UpdateFile(context.Context, *UpdateFileRequest) (*UpdateFileResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UpdateFile not implemented")
 }
 func (UnimplementedFilesServer) Upload(context.Context, *UploadRequest) (*UploadResponse, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method Upload not implemented")
@@ -277,20 +275,20 @@ func _Files_AbortUpload_Handler(srv interface{}, ctx context.Context, dec func(i
 	return interceptor(ctx, in, info, handler)
 }
 
-func _Files_MoveUpload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(MoveUploadRequest)
+func _Files_UpdateFile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UpdateFileRequest)
 	if err := dec(in); err != nil {
 		return nil, err
 	}
 	if interceptor == nil {
-		return srv.(FilesServer).MoveUpload(ctx, in)
+		return srv.(FilesServer).UpdateFile(ctx, in)
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: Files_MoveUpload_FullMethodName,
+		FullMethod: Files_UpdateFile_FullMethodName,
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(FilesServer).MoveUpload(ctx, req.(*MoveUploadRequest))
+		return srv.(FilesServer).UpdateFile(ctx, req.(*UpdateFileRequest))
 	}
 	return interceptor(ctx, in, info, handler)
 }
@@ -369,8 +367,8 @@ var Files_ServiceDesc = grpc.ServiceDesc{
 			Handler:    _Files_AbortUpload_Handler,
 		},
 		{
-			MethodName: "MoveUpload",
-			Handler:    _Files_MoveUpload_Handler,
+			MethodName: "UpdateFile",
+			Handler:    _Files_UpdateFile_Handler,
 		},
 		{
 			MethodName: "Upload",
diff --git a/proto/mocks/ClientsClient.go b/proto/mocks/ClientsClient.go
index 37c16b6f..d9647965 100644
--- a/proto/mocks/ClientsClient.go
+++ b/proto/mocks/ClientsClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/ClientsServer.go b/proto/mocks/ClientsServer.go
index f9b63e0f..4527f164 100644
--- a/proto/mocks/ClientsServer.go
+++ b/proto/mocks/ClientsServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -227,7 +227,7 @@ func (_m *ClientsServer) Update(_a0 context.Context, _a1 *clients.UpdateRequest)
 	return r0, r1
 }
 
-// mustEmbedUnimplementedClientsServer provides a mock function with given fields:
+// mustEmbedUnimplementedClientsServer provides a mock function with no fields
 func (_m *ClientsServer) mustEmbedUnimplementedClientsServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/CollaboratorsClient.go b/proto/mocks/CollaboratorsClient.go
index b3e86164..5ac8feed 100644
--- a/proto/mocks/CollaboratorsClient.go
+++ b/proto/mocks/CollaboratorsClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/CollaboratorsServer.go b/proto/mocks/CollaboratorsServer.go
index bf232365..1cb5df75 100644
--- a/proto/mocks/CollaboratorsServer.go
+++ b/proto/mocks/CollaboratorsServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -167,7 +167,7 @@ func (_m *CollaboratorsServer) Set(_a0 context.Context, _a1 *collaborators.SetRe
 	return r0, r1
 }
 
-// mustEmbedUnimplementedCollaboratorsServer provides a mock function with given fields:
+// mustEmbedUnimplementedCollaboratorsServer provides a mock function with no fields
 func (_m *CollaboratorsServer) mustEmbedUnimplementedCollaboratorsServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/CollectionsClient.go b/proto/mocks/CollectionsClient.go
index f30691e2..e89731d0 100644
--- a/proto/mocks/CollectionsClient.go
+++ b/proto/mocks/CollectionsClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/CollectionsServer.go b/proto/mocks/CollectionsServer.go
index 2ac4a701..dceca278 100644
--- a/proto/mocks/CollectionsServer.go
+++ b/proto/mocks/CollectionsServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -197,7 +197,7 @@ func (_m *CollectionsServer) Update(_a0 context.Context, _a1 *collections.Update
 	return r0, r1
 }
 
-// mustEmbedUnimplementedCollectionsServer provides a mock function with given fields:
+// mustEmbedUnimplementedCollectionsServer provides a mock function with no fields
 func (_m *CollectionsServer) mustEmbedUnimplementedCollectionsServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/DeliveryClient.go b/proto/mocks/DeliveryClient.go
index 780e5b9d..9abe57ef 100644
--- a/proto/mocks/DeliveryClient.go
+++ b/proto/mocks/DeliveryClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/DeliveryServer.go b/proto/mocks/DeliveryServer.go
index 582c80b6..8df6b2a1 100644
--- a/proto/mocks/DeliveryServer.go
+++ b/proto/mocks/DeliveryServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -254,7 +254,7 @@ func (_m *DeliveryServer) ListLocales(_a0 context.Context, _a1 *delivery.ListLoc
 	return r0, r1
 }
 
-// mustEmbedUnimplementedDeliveryServer provides a mock function with given fields:
+// mustEmbedUnimplementedDeliveryServer provides a mock function with no fields
 func (_m *DeliveryServer) mustEmbedUnimplementedDeliveryServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/EnvironmentsClient.go b/proto/mocks/EnvironmentsClient.go
index 8e9ebc2e..00db4979 100644
--- a/proto/mocks/EnvironmentsClient.go
+++ b/proto/mocks/EnvironmentsClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/EnvironmentsServer.go b/proto/mocks/EnvironmentsServer.go
index 32720c8d..eb9e2fe2 100644
--- a/proto/mocks/EnvironmentsServer.go
+++ b/proto/mocks/EnvironmentsServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -256,7 +256,7 @@ func (_m *EnvironmentsServer) Update(_a0 context.Context, _a1 *environments.Upda
 	return r0, r1
 }
 
-// mustEmbedUnimplementedEnvironmentsServer provides a mock function with given fields:
+// mustEmbedUnimplementedEnvironmentsServer provides a mock function with no fields
 func (_m *EnvironmentsServer) mustEmbedUnimplementedEnvironmentsServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/ExtensionManagerServiceClient.go b/proto/mocks/ExtensionManagerServiceClient.go
index dc809260..5f3653af 100644
--- a/proto/mocks/ExtensionManagerServiceClient.go
+++ b/proto/mocks/ExtensionManagerServiceClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/ExtensionManagerServiceServer.go b/proto/mocks/ExtensionManagerServiceServer.go
index 076608a0..ef4638ae 100644
--- a/proto/mocks/ExtensionManagerServiceServer.go
+++ b/proto/mocks/ExtensionManagerServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -134,7 +134,7 @@ func (_m *ExtensionManagerServiceServer) UnregisterExtensions(_a0 context.Contex
 	return r0, r1
 }
 
-// mustEmbedUnimplementedExtensionManagerServiceServer provides a mock function with given fields:
+// mustEmbedUnimplementedExtensionManagerServiceServer provides a mock function with no fields
 func (_m *ExtensionManagerServiceServer) mustEmbedUnimplementedExtensionManagerServiceServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/ExtensionServiceClient.go b/proto/mocks/ExtensionServiceClient.go
index ee6fd433..3d077c7a 100644
--- a/proto/mocks/ExtensionServiceClient.go
+++ b/proto/mocks/ExtensionServiceClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/ExtensionServiceServer.go b/proto/mocks/ExtensionServiceServer.go
index 8012afb7..e9471b2d 100644
--- a/proto/mocks/ExtensionServiceServer.go
+++ b/proto/mocks/ExtensionServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -137,7 +137,7 @@ func (_m *ExtensionServiceServer) Uninstall(_a0 context.Context, _a1 *extensions
 	return r0, r1
 }
 
-// mustEmbedUnimplementedExtensionServiceServer provides a mock function with given fields:
+// mustEmbedUnimplementedExtensionServiceServer provides a mock function with no fields
 func (_m *ExtensionServiceServer) mustEmbedUnimplementedExtensionServiceServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/FilesClient.go b/proto/mocks/FilesClient.go
index 2fb5c130..91c0737d 100644
--- a/proto/mocks/FilesClient.go
+++ b/proto/mocks/FilesClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -166,8 +166,8 @@ func (_m *FilesClient) GetFile(ctx context.Context, in *files.GetFileRequest, op
 	return r0, r1
 }
 
-// MoveUpload provides a mock function with given fields: ctx, in, opts
-func (_m *FilesClient) MoveUpload(ctx context.Context, in *files.MoveUploadRequest, opts ...grpc.CallOption) (*files.MoveUploadResponse, error) {
+// StartUpload provides a mock function with given fields: ctx, in, opts
+func (_m *FilesClient) StartUpload(ctx context.Context, in *files.StartUploadRequest, opts ...grpc.CallOption) (*files.StartUploadResponse, error) {
 	_va := make([]interface{}, len(opts))
 	for _i := range opts {
 		_va[_i] = opts[_i]
@@ -178,23 +178,23 @@ func (_m *FilesClient) MoveUpload(ctx context.Context, in *files.MoveUploadReque
 	ret := _m.Called(_ca...)
 
 	if len(ret) == 0 {
-		panic("no return value specified for MoveUpload")
+		panic("no return value specified for StartUpload")
 	}
 
-	var r0 *files.MoveUploadResponse
+	var r0 *files.StartUploadResponse
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *files.MoveUploadRequest, ...grpc.CallOption) (*files.MoveUploadResponse, error)); ok {
+	if rf, ok := ret.Get(0).(func(context.Context, *files.StartUploadRequest, ...grpc.CallOption) (*files.StartUploadResponse, error)); ok {
 		return rf(ctx, in, opts...)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *files.MoveUploadRequest, ...grpc.CallOption) *files.MoveUploadResponse); ok {
+	if rf, ok := ret.Get(0).(func(context.Context, *files.StartUploadRequest, ...grpc.CallOption) *files.StartUploadResponse); ok {
 		r0 = rf(ctx, in, opts...)
 	} else {
 		if ret.Get(0) != nil {
-			r0 = ret.Get(0).(*files.MoveUploadResponse)
+			r0 = ret.Get(0).(*files.StartUploadResponse)
 		}
 	}
 
-	if rf, ok := ret.Get(1).(func(context.Context, *files.MoveUploadRequest, ...grpc.CallOption) error); ok {
+	if rf, ok := ret.Get(1).(func(context.Context, *files.StartUploadRequest, ...grpc.CallOption) error); ok {
 		r1 = rf(ctx, in, opts...)
 	} else {
 		r1 = ret.Error(1)
@@ -203,8 +203,8 @@ func (_m *FilesClient) MoveUpload(ctx context.Context, in *files.MoveUploadReque
 	return r0, r1
 }
 
-// StartUpload provides a mock function with given fields: ctx, in, opts
-func (_m *FilesClient) StartUpload(ctx context.Context, in *files.StartUploadRequest, opts ...grpc.CallOption) (*files.StartUploadResponse, error) {
+// UpdateFile provides a mock function with given fields: ctx, in, opts
+func (_m *FilesClient) UpdateFile(ctx context.Context, in *files.UpdateFileRequest, opts ...grpc.CallOption) (*files.UpdateFileResponse, error) {
 	_va := make([]interface{}, len(opts))
 	for _i := range opts {
 		_va[_i] = opts[_i]
@@ -215,23 +215,23 @@ func (_m *FilesClient) StartUpload(ctx context.Context, in *files.StartUploadReq
 	ret := _m.Called(_ca...)
 
 	if len(ret) == 0 {
-		panic("no return value specified for StartUpload")
+		panic("no return value specified for UpdateFile")
 	}
 
-	var r0 *files.StartUploadResponse
+	var r0 *files.UpdateFileResponse
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *files.StartUploadRequest, ...grpc.CallOption) (*files.StartUploadResponse, error)); ok {
+	if rf, ok := ret.Get(0).(func(context.Context, *files.UpdateFileRequest, ...grpc.CallOption) (*files.UpdateFileResponse, error)); ok {
 		return rf(ctx, in, opts...)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *files.StartUploadRequest, ...grpc.CallOption) *files.StartUploadResponse); ok {
+	if rf, ok := ret.Get(0).(func(context.Context, *files.UpdateFileRequest, ...grpc.CallOption) *files.UpdateFileResponse); ok {
 		r0 = rf(ctx, in, opts...)
 	} else {
 		if ret.Get(0) != nil {
-			r0 = ret.Get(0).(*files.StartUploadResponse)
+			r0 = ret.Get(0).(*files.UpdateFileResponse)
 		}
 	}
 
-	if rf, ok := ret.Get(1).(func(context.Context, *files.StartUploadRequest, ...grpc.CallOption) error); ok {
+	if rf, ok := ret.Get(1).(func(context.Context, *files.UpdateFileRequest, ...grpc.CallOption) error); ok {
 		r1 = rf(ctx, in, opts...)
 	} else {
 		r1 = ret.Error(1)
diff --git a/proto/mocks/FilesServer.go b/proto/mocks/FilesServer.go
index eb497a0b..b5e91ec8 100644
--- a/proto/mocks/FilesServer.go
+++ b/proto/mocks/FilesServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -136,28 +136,28 @@ func (_m *FilesServer) GetFile(_a0 context.Context, _a1 *files.GetFileRequest) (
 	return r0, r1
 }
 
-// MoveUpload provides a mock function with given fields: _a0, _a1
-func (_m *FilesServer) MoveUpload(_a0 context.Context, _a1 *files.MoveUploadRequest) (*files.MoveUploadResponse, error) {
+// StartUpload provides a mock function with given fields: _a0, _a1
+func (_m *FilesServer) StartUpload(_a0 context.Context, _a1 *files.StartUploadRequest) (*files.StartUploadResponse, error) {
 	ret := _m.Called(_a0, _a1)
 
 	if len(ret) == 0 {
-		panic("no return value specified for MoveUpload")
+		panic("no return value specified for StartUpload")
 	}
 
-	var r0 *files.MoveUploadResponse
+	var r0 *files.StartUploadResponse
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *files.MoveUploadRequest) (*files.MoveUploadResponse, error)); ok {
+	if rf, ok := ret.Get(0).(func(context.Context, *files.StartUploadRequest) (*files.StartUploadResponse, error)); ok {
 		return rf(_a0, _a1)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *files.MoveUploadRequest) *files.MoveUploadResponse); ok {
+	if rf, ok := ret.Get(0).(func(context.Context, *files.StartUploadRequest) *files.StartUploadResponse); ok {
 		r0 = rf(_a0, _a1)
 	} else {
 		if ret.Get(0) != nil {
-			r0 = ret.Get(0).(*files.MoveUploadResponse)
+			r0 = ret.Get(0).(*files.StartUploadResponse)
 		}
 	}
 
-	if rf, ok := ret.Get(1).(func(context.Context, *files.MoveUploadRequest) error); ok {
+	if rf, ok := ret.Get(1).(func(context.Context, *files.StartUploadRequest) error); ok {
 		r1 = rf(_a0, _a1)
 	} else {
 		r1 = ret.Error(1)
@@ -166,28 +166,28 @@ func (_m *FilesServer) MoveUpload(_a0 context.Context, _a1 *files.MoveUploadRequ
 	return r0, r1
 }
 
-// StartUpload provides a mock function with given fields: _a0, _a1
-func (_m *FilesServer) StartUpload(_a0 context.Context, _a1 *files.StartUploadRequest) (*files.StartUploadResponse, error) {
+// UpdateFile provides a mock function with given fields: _a0, _a1
+func (_m *FilesServer) UpdateFile(_a0 context.Context, _a1 *files.UpdateFileRequest) (*files.UpdateFileResponse, error) {
 	ret := _m.Called(_a0, _a1)
 
 	if len(ret) == 0 {
-		panic("no return value specified for StartUpload")
+		panic("no return value specified for UpdateFile")
 	}
 
-	var r0 *files.StartUploadResponse
+	var r0 *files.UpdateFileResponse
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, *files.StartUploadRequest) (*files.StartUploadResponse, error)); ok {
+	if rf, ok := ret.Get(0).(func(context.Context, *files.UpdateFileRequest) (*files.UpdateFileResponse, error)); ok {
 		return rf(_a0, _a1)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, *files.StartUploadRequest) *files.StartUploadResponse); ok {
+	if rf, ok := ret.Get(0).(func(context.Context, *files.UpdateFileRequest) *files.UpdateFileResponse); ok {
 		r0 = rf(_a0, _a1)
 	} else {
 		if ret.Get(0) != nil {
-			r0 = ret.Get(0).(*files.StartUploadResponse)
+			r0 = ret.Get(0).(*files.UpdateFileResponse)
 		}
 	}
 
-	if rf, ok := ret.Get(1).(func(context.Context, *files.StartUploadRequest) error); ok {
+	if rf, ok := ret.Get(1).(func(context.Context, *files.UpdateFileRequest) error); ok {
 		r1 = rf(_a0, _a1)
 	} else {
 		r1 = ret.Error(1)
@@ -226,7 +226,7 @@ func (_m *FilesServer) Upload(_a0 context.Context, _a1 *files.UploadRequest) (*f
 	return r0, r1
 }
 
-// mustEmbedUnimplementedFilesServer provides a mock function with given fields:
+// mustEmbedUnimplementedFilesServer provides a mock function with no fields
 func (_m *FilesServer) mustEmbedUnimplementedFilesServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/ImagesClient.go b/proto/mocks/ImagesClient.go
index 29b32fff..22995c67 100644
--- a/proto/mocks/ImagesClient.go
+++ b/proto/mocks/ImagesClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/ImagesServer.go b/proto/mocks/ImagesServer.go
index f27082d3..e28ddb14 100644
--- a/proto/mocks/ImagesServer.go
+++ b/proto/mocks/ImagesServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -44,7 +44,7 @@ func (_m *ImagesServer) Get(_a0 context.Context, _a1 *images.GetRequest) (*image
 	return r0, r1
 }
 
-// mustEmbedUnimplementedImagesServer provides a mock function with given fields:
+// mustEmbedUnimplementedImagesServer provides a mock function with no fields
 func (_m *ImagesServer) mustEmbedUnimplementedImagesServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/InvitationsClient.go b/proto/mocks/InvitationsClient.go
index 2e454fcd..b7234d23 100644
--- a/proto/mocks/InvitationsClient.go
+++ b/proto/mocks/InvitationsClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/InvitationsServer.go b/proto/mocks/InvitationsServer.go
index 022113bf..e3be5d08 100644
--- a/proto/mocks/InvitationsServer.go
+++ b/proto/mocks/InvitationsServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -166,7 +166,7 @@ func (_m *InvitationsServer) Get(_a0 context.Context, _a1 *invitations.GetReques
 	return r0, r1
 }
 
-// mustEmbedUnimplementedInvitationsServer provides a mock function with given fields:
+// mustEmbedUnimplementedInvitationsServer provides a mock function with no fields
 func (_m *InvitationsServer) mustEmbedUnimplementedInvitationsServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/ItemsClient.go b/proto/mocks/ItemsClient.go
index 7e8a6ca4..24a85509 100644
--- a/proto/mocks/ItemsClient.go
+++ b/proto/mocks/ItemsClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.49.0. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/ItemsServer.go b/proto/mocks/ItemsServer.go
index c695997f..ef6bc13e 100644
--- a/proto/mocks/ItemsServer.go
+++ b/proto/mocks/ItemsServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.49.0. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -616,7 +616,7 @@ func (_m *ItemsServer) Update(_a0 context.Context, _a1 *items.UpdateRequest) (*e
 	return r0, r1
 }
 
-// mustEmbedUnimplementedItemsServer provides a mock function with given fields:
+// mustEmbedUnimplementedItemsServer provides a mock function with no fields
 func (_m *ItemsServer) mustEmbedUnimplementedItemsServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/LocalesClient.go b/proto/mocks/LocalesClient.go
index 80939c54..bb7cf924 100644
--- a/proto/mocks/LocalesClient.go
+++ b/proto/mocks/LocalesClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/LocalesServer.go b/proto/mocks/LocalesServer.go
index e17d580f..ab7ccd72 100644
--- a/proto/mocks/LocalesServer.go
+++ b/proto/mocks/LocalesServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -136,7 +136,7 @@ func (_m *LocalesServer) Update(_a0 context.Context, _a1 *locales.UpdateRequest)
 	return r0, r1
 }
 
-// mustEmbedUnimplementedLocalesServer provides a mock function with given fields:
+// mustEmbedUnimplementedLocalesServer provides a mock function with no fields
 func (_m *LocalesServer) mustEmbedUnimplementedLocalesServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/LogsServiceClient.go b/proto/mocks/LogsServiceClient.go
index 9c8f0b17..60a8954e 100644
--- a/proto/mocks/LogsServiceClient.go
+++ b/proto/mocks/LogsServiceClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/LogsServiceServer.go b/proto/mocks/LogsServiceServer.go
index ccdc028f..f560d938 100644
--- a/proto/mocks/LogsServiceServer.go
+++ b/proto/mocks/LogsServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -104,7 +104,7 @@ func (_m *LogsServiceServer) Log(_a0 context.Context, _a1 *logs.LogRequest) (*lo
 	return r0, r1
 }
 
-// mustEmbedUnimplementedLogsServiceServer provides a mock function with given fields:
+// mustEmbedUnimplementedLogsServiceServer provides a mock function with no fields
 func (_m *LogsServiceServer) mustEmbedUnimplementedLogsServiceServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/MailboxClient.go b/proto/mocks/MailboxClient.go
index bc15d49e..5184a900 100644
--- a/proto/mocks/MailboxClient.go
+++ b/proto/mocks/MailboxClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.50.0. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/MailboxServer.go b/proto/mocks/MailboxServer.go
index 8dcf0055..8359e694 100644
--- a/proto/mocks/MailboxServer.go
+++ b/proto/mocks/MailboxServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.50.0. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/MembersClient.go b/proto/mocks/MembersClient.go
index 598d4a36..214264b9 100644
--- a/proto/mocks/MembersClient.go
+++ b/proto/mocks/MembersClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/MembersServer.go b/proto/mocks/MembersServer.go
index 4147c6eb..c2b1686f 100644
--- a/proto/mocks/MembersServer.go
+++ b/proto/mocks/MembersServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -166,7 +166,7 @@ func (_m *MembersServer) Set(_a0 context.Context, _a1 *members.SetRequest) (*emp
 	return r0, r1
 }
 
-// mustEmbedUnimplementedMembersServer provides a mock function with given fields:
+// mustEmbedUnimplementedMembersServer provides a mock function with no fields
 func (_m *MembersServer) mustEmbedUnimplementedMembersServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/ObserverClient.go b/proto/mocks/ObserverClient.go
index b49dff3a..61da2f58 100644
--- a/proto/mocks/ObserverClient.go
+++ b/proto/mocks/ObserverClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/ObserverServer.go b/proto/mocks/ObserverServer.go
index dc06e09f..4dba0b97 100644
--- a/proto/mocks/ObserverServer.go
+++ b/proto/mocks/ObserverServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -44,7 +44,7 @@ func (_m *ObserverServer) OnCollaboratorSet(_a0 context.Context, _a1 *members.On
 	return r0, r1
 }
 
-// mustEmbedUnimplementedObserverServer provides a mock function with given fields:
+// mustEmbedUnimplementedObserverServer provides a mock function with no fields
 func (_m *ObserverServer) mustEmbedUnimplementedObserverServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/OperationServiceClient.go b/proto/mocks/OperationServiceClient.go
index 111b7a57..20b0b938 100644
--- a/proto/mocks/OperationServiceClient.go
+++ b/proto/mocks/OperationServiceClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/OperationServiceServer.go b/proto/mocks/OperationServiceServer.go
index 0eddf943..9c9ee325 100644
--- a/proto/mocks/OperationServiceServer.go
+++ b/proto/mocks/OperationServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -75,7 +75,7 @@ func (_m *OperationServiceServer) Get(_a0 context.Context, _a1 *common.GetOperat
 	return r0, r1
 }
 
-// mustEmbedUnimplementedOperationServiceServer provides a mock function with given fields:
+// mustEmbedUnimplementedOperationServiceServer provides a mock function with no fields
 func (_m *OperationServiceServer) mustEmbedUnimplementedOperationServiceServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/OrganizationsClient.go b/proto/mocks/OrganizationsClient.go
index 5dd6070c..24d77c4b 100644
--- a/proto/mocks/OrganizationsClient.go
+++ b/proto/mocks/OrganizationsClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/OrganizationsServer.go b/proto/mocks/OrganizationsServer.go
index 9945287a..6d08ee88 100644
--- a/proto/mocks/OrganizationsServer.go
+++ b/proto/mocks/OrganizationsServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -166,7 +166,7 @@ func (_m *OrganizationsServer) Update(_a0 context.Context, _a1 *organizations.Up
 	return r0, r1
 }
 
-// mustEmbedUnimplementedOrganizationsServer provides a mock function with given fields:
+// mustEmbedUnimplementedOrganizationsServer provides a mock function with no fields
 func (_m *OrganizationsServer) mustEmbedUnimplementedOrganizationsServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/ReferencesClient.go b/proto/mocks/ReferencesClient.go
index 40a7484a..ce6e5c67 100644
--- a/proto/mocks/ReferencesClient.go
+++ b/proto/mocks/ReferencesClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/ReferencesServer.go b/proto/mocks/ReferencesServer.go
index bd62d563..dc2bdab6 100644
--- a/proto/mocks/ReferencesServer.go
+++ b/proto/mocks/ReferencesServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -74,7 +74,7 @@ func (_m *ReferencesServer) Publish(_a0 context.Context, _a1 *references.Publish
 	return r0, r1
 }
 
-// mustEmbedUnimplementedReferencesServer provides a mock function with given fields:
+// mustEmbedUnimplementedReferencesServer provides a mock function with no fields
 func (_m *ReferencesServer) mustEmbedUnimplementedReferencesServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/RolesClient.go b/proto/mocks/RolesClient.go
index 12baf298..8efb209d 100644
--- a/proto/mocks/RolesClient.go
+++ b/proto/mocks/RolesClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/RolesServer.go b/proto/mocks/RolesServer.go
index b850b3ca..34c1a7f9 100644
--- a/proto/mocks/RolesServer.go
+++ b/proto/mocks/RolesServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -166,7 +166,7 @@ func (_m *RolesServer) Update(_a0 context.Context, _a1 *roles.UpdateRequest) (*e
 	return r0, r1
 }
 
-// mustEmbedUnimplementedRolesServer provides a mock function with given fields:
+// mustEmbedUnimplementedRolesServer provides a mock function with no fields
 func (_m *RolesServer) mustEmbedUnimplementedRolesServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/SpacesClient.go b/proto/mocks/SpacesClient.go
index 3f173e52..8a0b4676 100644
--- a/proto/mocks/SpacesClient.go
+++ b/proto/mocks/SpacesClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/SpacesServer.go b/proto/mocks/SpacesServer.go
index 7385092b..9fa3795b 100644
--- a/proto/mocks/SpacesServer.go
+++ b/proto/mocks/SpacesServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -346,7 +346,7 @@ func (_m *SpacesServer) UpdateConfig(_a0 context.Context, _a1 *spaces.UpdateConf
 	return r0, r1
 }
 
-// mustEmbedUnimplementedSpacesServer provides a mock function with given fields:
+// mustEmbedUnimplementedSpacesServer provides a mock function with no fields
 func (_m *SpacesServer) mustEmbedUnimplementedSpacesServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeClientsServer.go b/proto/mocks/UnsafeClientsServer.go
index 9a2c14b6..41a348d4 100644
--- a/proto/mocks/UnsafeClientsServer.go
+++ b/proto/mocks/UnsafeClientsServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeClientsServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedClientsServer provides a mock function with given fields:
+// mustEmbedUnimplementedClientsServer provides a mock function with no fields
 func (_m *UnsafeClientsServer) mustEmbedUnimplementedClientsServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeCollaboratorsServer.go b/proto/mocks/UnsafeCollaboratorsServer.go
index 87f96a68..4fcaeccd 100644
--- a/proto/mocks/UnsafeCollaboratorsServer.go
+++ b/proto/mocks/UnsafeCollaboratorsServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeCollaboratorsServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedCollaboratorsServer provides a mock function with given fields:
+// mustEmbedUnimplementedCollaboratorsServer provides a mock function with no fields
 func (_m *UnsafeCollaboratorsServer) mustEmbedUnimplementedCollaboratorsServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeCollectionsServer.go b/proto/mocks/UnsafeCollectionsServer.go
index 7ef9d88b..26363055 100644
--- a/proto/mocks/UnsafeCollectionsServer.go
+++ b/proto/mocks/UnsafeCollectionsServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeCollectionsServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedCollectionsServer provides a mock function with given fields:
+// mustEmbedUnimplementedCollectionsServer provides a mock function with no fields
 func (_m *UnsafeCollectionsServer) mustEmbedUnimplementedCollectionsServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeDeliveryServer.go b/proto/mocks/UnsafeDeliveryServer.go
index d1e47f89..4da2955a 100644
--- a/proto/mocks/UnsafeDeliveryServer.go
+++ b/proto/mocks/UnsafeDeliveryServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeDeliveryServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedDeliveryServer provides a mock function with given fields:
+// mustEmbedUnimplementedDeliveryServer provides a mock function with no fields
 func (_m *UnsafeDeliveryServer) mustEmbedUnimplementedDeliveryServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeEnvironmentsServer.go b/proto/mocks/UnsafeEnvironmentsServer.go
index 657a88f0..c6d5df1a 100644
--- a/proto/mocks/UnsafeEnvironmentsServer.go
+++ b/proto/mocks/UnsafeEnvironmentsServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeEnvironmentsServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedEnvironmentsServer provides a mock function with given fields:
+// mustEmbedUnimplementedEnvironmentsServer provides a mock function with no fields
 func (_m *UnsafeEnvironmentsServer) mustEmbedUnimplementedEnvironmentsServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeExtensionManagerServiceServer.go b/proto/mocks/UnsafeExtensionManagerServiceServer.go
index 6ff47d5c..7d8a472f 100644
--- a/proto/mocks/UnsafeExtensionManagerServiceServer.go
+++ b/proto/mocks/UnsafeExtensionManagerServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeExtensionManagerServiceServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedExtensionManagerServiceServer provides a mock function with given fields:
+// mustEmbedUnimplementedExtensionManagerServiceServer provides a mock function with no fields
 func (_m *UnsafeExtensionManagerServiceServer) mustEmbedUnimplementedExtensionManagerServiceServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeExtensionServiceServer.go b/proto/mocks/UnsafeExtensionServiceServer.go
index 4d48459b..7dfb4dab 100644
--- a/proto/mocks/UnsafeExtensionServiceServer.go
+++ b/proto/mocks/UnsafeExtensionServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeExtensionServiceServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedExtensionServiceServer provides a mock function with given fields:
+// mustEmbedUnimplementedExtensionServiceServer provides a mock function with no fields
 func (_m *UnsafeExtensionServiceServer) mustEmbedUnimplementedExtensionServiceServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeFilesServer.go b/proto/mocks/UnsafeFilesServer.go
index b33b9f01..60f984e6 100644
--- a/proto/mocks/UnsafeFilesServer.go
+++ b/proto/mocks/UnsafeFilesServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeFilesServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedFilesServer provides a mock function with given fields:
+// mustEmbedUnimplementedFilesServer provides a mock function with no fields
 func (_m *UnsafeFilesServer) mustEmbedUnimplementedFilesServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeImagesServer.go b/proto/mocks/UnsafeImagesServer.go
index 742b71f0..c8fc62ba 100644
--- a/proto/mocks/UnsafeImagesServer.go
+++ b/proto/mocks/UnsafeImagesServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeImagesServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedImagesServer provides a mock function with given fields:
+// mustEmbedUnimplementedImagesServer provides a mock function with no fields
 func (_m *UnsafeImagesServer) mustEmbedUnimplementedImagesServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeInvitationsServer.go b/proto/mocks/UnsafeInvitationsServer.go
index 0a4f7a7f..27ef3b05 100644
--- a/proto/mocks/UnsafeInvitationsServer.go
+++ b/proto/mocks/UnsafeInvitationsServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeInvitationsServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedInvitationsServer provides a mock function with given fields:
+// mustEmbedUnimplementedInvitationsServer provides a mock function with no fields
 func (_m *UnsafeInvitationsServer) mustEmbedUnimplementedInvitationsServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeItemsServer.go b/proto/mocks/UnsafeItemsServer.go
index 79bfa152..2dde89ef 100644
--- a/proto/mocks/UnsafeItemsServer.go
+++ b/proto/mocks/UnsafeItemsServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.49.0. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeItemsServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedItemsServer provides a mock function with given fields:
+// mustEmbedUnimplementedItemsServer provides a mock function with no fields
 func (_m *UnsafeItemsServer) mustEmbedUnimplementedItemsServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeLocalesServer.go b/proto/mocks/UnsafeLocalesServer.go
index 858efdd4..c0a2b4c8 100644
--- a/proto/mocks/UnsafeLocalesServer.go
+++ b/proto/mocks/UnsafeLocalesServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeLocalesServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedLocalesServer provides a mock function with given fields:
+// mustEmbedUnimplementedLocalesServer provides a mock function with no fields
 func (_m *UnsafeLocalesServer) mustEmbedUnimplementedLocalesServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeLogsServiceServer.go b/proto/mocks/UnsafeLogsServiceServer.go
index 4936a1b8..e08ea23d 100644
--- a/proto/mocks/UnsafeLogsServiceServer.go
+++ b/proto/mocks/UnsafeLogsServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeLogsServiceServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedLogsServiceServer provides a mock function with given fields:
+// mustEmbedUnimplementedLogsServiceServer provides a mock function with no fields
 func (_m *UnsafeLogsServiceServer) mustEmbedUnimplementedLogsServiceServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeMailboxServer.go b/proto/mocks/UnsafeMailboxServer.go
index 3b553203..a6815753 100644
--- a/proto/mocks/UnsafeMailboxServer.go
+++ b/proto/mocks/UnsafeMailboxServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.50.0. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/UnsafeMembersServer.go b/proto/mocks/UnsafeMembersServer.go
index d2de5927..a7b02868 100644
--- a/proto/mocks/UnsafeMembersServer.go
+++ b/proto/mocks/UnsafeMembersServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeMembersServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedMembersServer provides a mock function with given fields:
+// mustEmbedUnimplementedMembersServer provides a mock function with no fields
 func (_m *UnsafeMembersServer) mustEmbedUnimplementedMembersServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeObserverServer.go b/proto/mocks/UnsafeObserverServer.go
index fb5d5b28..2bd1a76a 100644
--- a/proto/mocks/UnsafeObserverServer.go
+++ b/proto/mocks/UnsafeObserverServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeObserverServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedObserverServer provides a mock function with given fields:
+// mustEmbedUnimplementedObserverServer provides a mock function with no fields
 func (_m *UnsafeObserverServer) mustEmbedUnimplementedObserverServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeOperationServiceServer.go b/proto/mocks/UnsafeOperationServiceServer.go
index fb356db9..09a47fbf 100644
--- a/proto/mocks/UnsafeOperationServiceServer.go
+++ b/proto/mocks/UnsafeOperationServiceServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeOperationServiceServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedOperationServiceServer provides a mock function with given fields:
+// mustEmbedUnimplementedOperationServiceServer provides a mock function with no fields
 func (_m *UnsafeOperationServiceServer) mustEmbedUnimplementedOperationServiceServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeOrganizationsServer.go b/proto/mocks/UnsafeOrganizationsServer.go
index e7ec74ab..23587932 100644
--- a/proto/mocks/UnsafeOrganizationsServer.go
+++ b/proto/mocks/UnsafeOrganizationsServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeOrganizationsServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedOrganizationsServer provides a mock function with given fields:
+// mustEmbedUnimplementedOrganizationsServer provides a mock function with no fields
 func (_m *UnsafeOrganizationsServer) mustEmbedUnimplementedOrganizationsServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeReferencesServer.go b/proto/mocks/UnsafeReferencesServer.go
index 214848d4..37dba3d5 100644
--- a/proto/mocks/UnsafeReferencesServer.go
+++ b/proto/mocks/UnsafeReferencesServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeReferencesServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedReferencesServer provides a mock function with given fields:
+// mustEmbedUnimplementedReferencesServer provides a mock function with no fields
 func (_m *UnsafeReferencesServer) mustEmbedUnimplementedReferencesServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeRolesServer.go b/proto/mocks/UnsafeRolesServer.go
index a7704a52..fb201a69 100644
--- a/proto/mocks/UnsafeRolesServer.go
+++ b/proto/mocks/UnsafeRolesServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeRolesServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedRolesServer provides a mock function with given fields:
+// mustEmbedUnimplementedRolesServer provides a mock function with no fields
 func (_m *UnsafeRolesServer) mustEmbedUnimplementedRolesServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeSpacesServer.go b/proto/mocks/UnsafeSpacesServer.go
index f22a0950..217fabc2 100644
--- a/proto/mocks/UnsafeSpacesServer.go
+++ b/proto/mocks/UnsafeSpacesServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeSpacesServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedSpacesServer provides a mock function with given fields:
+// mustEmbedUnimplementedSpacesServer provides a mock function with no fields
 func (_m *UnsafeSpacesServer) mustEmbedUnimplementedSpacesServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeUsersServer.go b/proto/mocks/UnsafeUsersServer.go
index e8f43675..b3be8279 100644
--- a/proto/mocks/UnsafeUsersServer.go
+++ b/proto/mocks/UnsafeUsersServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeUsersServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedUsersServer provides a mock function with given fields:
+// mustEmbedUnimplementedUsersServer provides a mock function with no fields
 func (_m *UnsafeUsersServer) mustEmbedUnimplementedUsersServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UnsafeVersionsServer.go b/proto/mocks/UnsafeVersionsServer.go
index a8e92db7..9a1d358d 100644
--- a/proto/mocks/UnsafeVersionsServer.go
+++ b/proto/mocks/UnsafeVersionsServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type UnsafeVersionsServer struct {
 	mock.Mock
 }
 
-// mustEmbedUnimplementedVersionsServer provides a mock function with given fields:
+// mustEmbedUnimplementedVersionsServer provides a mock function with no fields
 func (_m *UnsafeVersionsServer) mustEmbedUnimplementedVersionsServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/UsersClient.go b/proto/mocks/UsersClient.go
index b17a9839..b45eba94 100644
--- a/proto/mocks/UsersClient.go
+++ b/proto/mocks/UsersClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/UsersServer.go b/proto/mocks/UsersServer.go
index c8913926..f9bfd727 100644
--- a/proto/mocks/UsersServer.go
+++ b/proto/mocks/UsersServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -226,7 +226,7 @@ func (_m *UsersServer) Update(_a0 context.Context, _a1 *users.UpdateRequest) (*e
 	return r0, r1
 }
 
-// mustEmbedUnimplementedUsersServer provides a mock function with given fields:
+// mustEmbedUnimplementedUsersServer provides a mock function with no fields
 func (_m *UsersServer) mustEmbedUnimplementedUsersServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/VersionsClient.go b/proto/mocks/VersionsClient.go
index 8e9a59c3..e0d6d7ff 100644
--- a/proto/mocks/VersionsClient.go
+++ b/proto/mocks/VersionsClient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/proto/mocks/VersionsServer.go b/proto/mocks/VersionsServer.go
index 70d79386..8b0d19d6 100644
--- a/proto/mocks/VersionsServer.go
+++ b/proto/mocks/VersionsServer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -47,7 +47,7 @@ func (_m *VersionsServer) Get(_a0 context.Context, _a1 *emptypb.Empty) (*content
 	return r0, r1
 }
 
-// mustEmbedUnimplementedVersionsServer provides a mock function with given fields:
+// mustEmbedUnimplementedVersionsServer provides a mock function with no fields
 func (_m *VersionsServer) mustEmbedUnimplementedVersionsServer() {
 	_m.Called()
 }
diff --git a/proto/mocks/isFindResponse_Response.go b/proto/mocks/isFindResponse_Response.go
index 5240fb2d..18b84be4 100644
--- a/proto/mocks/isFindResponse_Response.go
+++ b/proto/mocks/isFindResponse_Response.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type isFindResponse_Response struct {
 	mock.Mock
 }
 
-// isFindResponse_Response provides a mock function with given fields:
+// isFindResponse_Response provides a mock function with no fields
 func (_m *isFindResponse_Response) isFindResponse_Response() {
 	_m.Called()
 }
diff --git a/proto/mocks/isOperation_Result.go b/proto/mocks/isOperation_Result.go
index 75965c3c..9eaa9b9e 100644
--- a/proto/mocks/isOperation_Result.go
+++ b/proto/mocks/isOperation_Result.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.46.3. DO NOT EDIT.
+// Code generated by mockery v2.53.2. DO NOT EDIT.
 
 package mocks
 
@@ -9,7 +9,7 @@ type isOperation_Result struct {
 	mock.Mock
 }
 
-// isOperation_Result provides a mock function with given fields:
+// isOperation_Result provides a mock function with no fields
 func (_m *isOperation_Result) isOperation_Result() {
 	_m.Called()
 }
-- 
GitLab