API: Библиотеки документов и файлы
API: Библиотеки документов и файлы
Требуется авторизация. Права наследуются от узла-родителя (nodeId).
Библиотеки — /api/v1/libraries
| Метод | Путь | Право на узел | Описание |
|---|---|---|---|
| GET | /libraries?nodeId={uuid} | view | Библиотеки узла |
| POST | /libraries | edit | Создать библиотеку |
| GET | /libraries/{id} | view | Одна библиотека |
| PATCH | /libraries/{id} | edit | Обновить |
| DELETE | /libraries/{id} | delete | Удалить |
Тело создания:
{ "nodeId": "uuid", "title": "Документы", "slug": "documents", "description": ""}Файлы и папки — /api/v1/libraries/{libraryId}/files
| Метод | Путь | Право | Описание |
|---|---|---|---|
| GET | /files?parentId={uuid} | view | Содержимое папки (без parentId — корень) |
| POST | /files/folders | add | Создать папку |
| POST | /files/upload | add | Загрузить файл (multipart, поле file, опц. parentId) |
| PATCH | /files/{fileId} | edit | Переименовать / переместить |
| DELETE | /files/{fileId} | delete | Удалить файл или папку (рекурсивно) |
Ответ GET /files включает meta.breadcrumb — цепочка папок до текущей.
Скачивание — /api/v1/files/{id}/download
Прокси через API. Клиент не получает прямых URL S3.
Максимальный размер файла: 100 МБ.
Версионирование — /api/v1/libraries/{libraryId}/files/{fileId}/versions
| Метод | Путь | Право | Описание |
|---|---|---|---|
| GET | /files/{fileId}/versions | view | Текущая версия и история |
| POST | /files/{fileId}/versions | edit | Загрузить новую версию (multipart: file, опц. comment) |
| GET | /files/{fileId}/versions/{versionId}/download | view | Скачать архивную версию |
| POST | /files/{fileId}/versions/{versionId}/restore | edit | Восстановить версию как текущую |
При загрузке новой версии предыдущее содержимое сохраняется в library_file_versions. Текущая версия — в library_files.version_number.
Collabora Online (WOPI) — онлайн-просмотр и редактирование
Требуется COLLABORA_ENABLED=true и запущенный Collabora CODE (см. setup.md).
| Метод | Путь | Право | Описание |
|---|---|---|---|
| GET | /libraries/{libraryId}/files/{fileId}/office/session?mode=view|edit | view / edit | URL iframe Collabora + WOPI token |
| GET | /wopi/files/{fileId}?access_token=... | WOPI | CheckFileInfo |
| GET | /wopi/files/{fileId}/contents?access_token=... | WOPI | GetFile |
| POST | /wopi/files/{fileId}/contents?access_token=... | WOPI | PutFile (сохранение) |
| POST | /wopi/files/{fileId}?access_token=... | WOPI | LOCK / UNLOCK / REFRESH_LOCK |
Ответ GET /files для каждого файла включает:
{ "is_office_file": true, "permissions": { "canEdit": true, "canDelete": false }}В meta — officeEnabled (глобальный флаг Collabora).
При сохранении из редактора создаётся новая версия через UploadVersionAsync с комментарием "Collabora".
Поддерживаемые расширения: .docx, .xlsx, .pptx, .doc, .xls, .ppt, .odt, .ods, .odp, .csv, .rtf, .txt и др. (см. OfficeDocumentTypes).
События
file.uploadedfile.versionCreatedfile.versionRestoredfile.folderCreatedfile.deleted
Подписчики (Event Receivers) — в фазе 6.