Перейти к содержимому

API: Библиотеки документов и файлы

API: Библиотеки документов и файлы

Требуется авторизация. Права наследуются от узла-родителя (nodeId).

Библиотеки — /api/v1/libraries

МетодПутьПраво на узелОписание
GET/libraries?nodeId={uuid}viewБиблиотеки узла
POST/librarieseditСоздать библиотеку
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/foldersaddСоздать папку
POST/files/uploadaddЗагрузить файл (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}/versionsviewТекущая версия и история
POST/files/{fileId}/versionseditЗагрузить новую версию (multipart: file, опц. comment)
GET/files/{fileId}/versions/{versionId}/downloadviewСкачать архивную версию
POST/files/{fileId}/versions/{versionId}/restoreeditВосстановить версию как текущую

При загрузке новой версии предыдущее содержимое сохраняется в 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|editview / editURL iframe Collabora + WOPI token
GET/wopi/files/{fileId}?access_token=...WOPICheckFileInfo
GET/wopi/files/{fileId}/contents?access_token=...WOPIGetFile
POST/wopi/files/{fileId}/contents?access_token=...WOPIPutFile (сохранение)
POST/wopi/files/{fileId}?access_token=...WOPILOCK / UNLOCK / REFRESH_LOCK

Ответ GET /files для каждого файла включает:

{
"is_office_file": true,
"permissions": { "canEdit": true, "canDelete": false }
}

В metaofficeEnabled (глобальный флаг Collabora).

При сохранении из редактора создаётся новая версия через UploadVersionAsync с комментарием "Collabora".

Поддерживаемые расширения: .docx, .xlsx, .pptx, .doc, .xls, .ppt, .odt, .ods, .odp, .csv, .rtf, .txt и др. (см. OfficeDocumentTypes).

События

  • file.uploaded
  • file.versionCreated
  • file.versionRestored
  • file.folderCreated
  • file.deleted

Подписчики (Event Receivers) — в фазе 6.