17 KiB
Эндпоинты, с которыми взаимодействует transmittal-frontend
Документ описывает все HTTP-эндпоинты внешних сервисов, к которым обращается модуль (микрофронтенд transmittal-frontend).
Как устроено взаимодействие
Все запросы описаны декларативно в реестре module/api/endpoints.ts (объект endpoints). Каждый эндпоинт задаётся структурой Endpoint:
service— логическое имя сервиса (см. таблицу хостов ниже);method— HTTP-метод (GET/POST/PUT/PATCH/DELETE);path(args)— функция, возвращающая путь запроса (с подстановкой параметров/query);body(args)— опционально, формирование тела запроса;cache,queryOptions,responseType,axiosConfig— опции кеширования, повторов и типа ответа.
Запрос выполняется единой функцией fetch(endpoint, params, controller), которая через httpService (module/api/http-service.ts, поверх @sarex-team/sdk-js + axios) отправляет запрос на базовый хост сервиса. Базовый хост подставляется resolveHost(service) из module/api/hosts.ts в зависимости от BUILD_ENV. Ошибки маппируются в человекочитаемые сообщения в module/api/errors.ts.
Базовые хосты по сервисам и окружениям
Значения из module/api/hosts.ts. Итоговый URL = <базовый хост сервиса> + path эндпоинта.
Сервис (service) |
Назначение | stage |
prod |
|---|---|---|---|
transmittals |
Сервис передачи документации (трансмитталы, шаблоны) | https://stage-api.sarex.io/transmittals |
https://api.sarex.io/transmittals |
documentations |
Сервис документации (документы, бандлы, файлы) | https://stage-api.sarex.io/documentations |
https://api.sarex.io/documentations |
sarexApi |
Gateway/API Sarex (/gateway, /eav, /cde) |
https://stage-api.sarex.io |
https://api.sarex.io |
sarex |
Локальный сервис данных (/api/core, /api/client) |
"" (относительные пути) |
"" |
processes |
Сервис рабочих процессов (flows, reviews) | https://stage-api.sarex.io/flows |
https://api.sarex.io/flows |
workflows |
Сервис обработки документов | https://stage-api.sarex.io/workflows |
https://api.sarex.io/workflows |
workspaces |
Сервис рабочих областей | https://stage-api.sarex.io/workspaces |
https://api.sarex.io/workspaces |
remarks |
Сервис замечаний | https://stage-api.sarex.io/remarks |
https://api.sarex.io/remarks |
files |
Сервис файлов | https://stage-api.sarex.io/files |
https://api.sarex.io/files |
google |
Временное хранилище (GCS) | https://storage.googleapis.com/srx-tmp |
https://storage.googleapis.com/srx-tmp |
bim |
BIM-API | https://stage-bim-api.sarex.io |
https://bim-api.sarex.io |
zitadel |
IdP (аутентификация) | https://idp.dev.stage.sarex.io |
https://login.sarex.io |
Также определены окружения
local,preprodиcontour(относительные пути для изолированного контура). Вlocalсервисsarexпроксируется на/sarex-backend. Подключаемый удалённый модуль documentations описан отдельно вmodule/api/module-hosts.ts.
Эндпоинты по сервисам
transmittals — Сервис передачи документации
| Ключ | Метод | Путь | Назначение |
|---|---|---|---|
getTransmittals |
POST | api/v1/transmittals |
Список трансмитталов (пагинация по bookmark, фильтр по resource_id) |
getTransmittalStatuses |
POST | api/v1/transmittals/global_statuses |
Глобальные статусы по набору resource_ids |
getTransmittalById |
GET | api/v1/transmittals/{transmittalId} |
Трансмиттал по id |
getAct |
GET | api/v1/transmittals/{transmittalId}/act_available |
Доступность акта для трансмиттала |
downloadAct |
GET | api/v1/transmittals/{transmittalId}/download_act |
Скачивание акта |
createTransmittal |
POST | api/v1/transmittals/create |
Создание трансмиттала |
approveTransmittal |
PUT | api/v1/transmittals/{transmittalId}/approve |
Принять трансмиттал (с комментарием) |
declineTransmittal |
PUT | api/v1/transmittals/{transmittalId}/decline |
Отклонить трансмиттал (с комментарием) |
deleteTransmittal |
DELETE | api/v1/transmittals/{transmittalId} |
Удалить трансмиттал |
linkReviewToTransmittal |
POST | api/v1/transmittals/{transmittalId}/link_review |
Привязать review к трансмитталу |
getStatusTypes |
GET | api/v1/transmittals/status |
Справочник типов статусов |
getSearchProject |
POST | api/v1/transmittals/search |
Поиск/фильтрация трансмитталов в проекте |
getSearchProjects |
POST | api/v1/transmittals/search/resources |
Поиск/фильтрация по нескольким ресурсам |
getSteps |
GET | api/v1/steps |
Список шагов |
getStep |
GET | api/v1/steps/{id} |
Шаг по id |
getSearchTemplates |
POST | /api/v1/transmittal_templates |
Поиск шаблонов трансмитталов |
createTemplate |
POST | /api/v1/transmittal_templates/create |
Создать шаблон |
updateTemplate |
PATCH | /api/v1/transmittal_templates/{templateId} |
Обновить шаблон |
deleteTemplate |
DELETE | /api/v1/transmittal_templates/{templateId} |
Удалить шаблон |
getTemplateListForSelect |
GET | /api/v1/transmittal_templates/select?resource={resourceId} |
Список шаблонов для выбора |
getSingleTemplate |
GET | /api/v1/transmittal_templates/{templateId}?resource={resourceId} |
Шаблон по id |
documentations — Сервис документации
| Ключ | Метод | Путь | Назначение |
|---|---|---|---|
getDisks |
GET | api/v1/disks |
Список дисков |
getAllPermmission |
GET | api/v1/permissions |
Все права доступа |
getDocPermission |
GET | api/v1/documents/{id}/permissions |
Права доступа документа |
postPermission |
POST | api/v1/documents/{id}/permissions |
Выдать права сервисному аккаунту |
postBundle |
POST | api/v1/bundles |
Создать бандл |
postFile |
POST | api/v1/bundles/{bundleId}/{fileKey}?single_upload=1 |
Загрузить файл (single upload) |
uploadFolderStart |
POST | api/v1/bundles/{bundleId}/{key}/upload_multipart?upload_path={folderPath} |
Начать multipart-загрузку |
uploadPart |
PUT | api/v1/bundles/{bundleId}/{bundleKey}?part_number={partNumber} |
Загрузить часть файла |
bundleComplite |
POST | api/v1/bundles/{bundleId}/upload_finish |
Завершить загрузку бандла |
getFile |
GET | api/v1/bundles/{bundleId}/{bundleKey} |
Получить файл бандла |
getBundles |
GET | api/v1/documents/{id}/bundles |
Бандлы документа |
addBundle |
POST | api/v1/documents/{documentId}/add_bundle |
Привязать бандл к документу |
moveBundles |
PATCH | api/v1/documents/{documentId}/move_bundles |
Переместить бандлы |
removeBundle |
DELETE | api/v1/bundles/{id} |
Удалить бандл |
postWorkspace |
POST | api/v1/workspaces |
Создать рабочую область |
getDocumentById |
GET | api/v1/documents/{id} |
Документ по id |
getDocumentWithBundles |
GET | api/v1/documents/{id}?extend=bundles |
Документ с бандлами |
fetchBatchDocuments |
POST | /api/v1/documents/batch |
Пакетное получение документов |
changeDocument |
PATCH | api/v1/documents/{id} |
Переименовать документ |
updatePath |
PATCH | api/v1/documents/{id}/update-path |
Сменить родителя документа |
updateDocumentsPaths |
PATCH | api/v1/documents/update-path |
Массовая смена родителя |
deleteDocument |
DELETE | api/v1/documents/{id} |
Удалить документ |
deleteDocuments |
DELETE | api/v1/documents?document_ids={ids} |
Удалить несколько документов |
downloadFile |
GET | api/v1/bundles/{lastBundleId}/{key}/download |
Скачать файл |
downloadAllFiles |
GET | api/v1/bundles/{lastBundleId}/download |
Скачать все файлы бандла |
downloadFolder |
GET | api/v1/documents/{docId}/download?depth={depth} |
Скачать папку |
getFolderChildrenWithActiveProcesses |
POST | /api/v1/documents/flows |
Дети папки с активными процессами |
conversionFile |
POST | api/v1/conversion |
Конвертация документа (в IFC) |
addMarks |
PUT | api/v1/bundles/{bundleId}/marks |
Добавить штампы/QR/подписи |
sign |
POST | api/v1/bundles/{bundleId}/sign |
Подписать бандл |
cancelQrCode |
PATCH | api/v1/bundles/{bundleId}/cancel_qr |
Отменить QR-код |
restartWorkflow |
POST | api/v1/bundles/{bundleId}/restart |
Перезапустить workflow бандла |
getPublicLink |
GET | api/v1/public/documents/public_link/{public_link_id} |
Получить публичную ссылку |
deletePublicLink |
DELETE | api/v1/documents/public_link/{public_link_id} |
Удалить публичную ссылку |
removeDoc |
DELETE | api/v1/documents/bin?parent_id={id} |
Переместить в корзину |
recoveryDocument |
PATCH | api/v1/documents/bin/restore?parent_id={id} |
Восстановить из корзины |
copyFolderStructure |
POST | api/v1/documents/copy_structure |
Копировать структуру папок |
sarexApi — Gateway/API Sarex
| Ключ | Метод | Путь | Назначение |
|---|---|---|---|
getUsersWithTransmittalProjectPermissions |
GET | /gateway/api/v2/users/?...&resource_id={projectId}&permissions=... |
Пользователи с правами в проекте |
getDocuments |
GET | /gateway/api/v1/disks/{id}/documents?... |
Документы диска (с фильтрами/поиском) |
filterByAttributes |
GET | /gateway/api/v1/disks/{diskId}/documents?parent_id={rootDocumentId}&{params} |
Фильтрация документов по атрибутам |
getResources |
GET | /gateway/api/v1/resources |
Список ресурсов |
createDocument |
POST | /gateway/api/v1/documents |
Создать документ/папку/проект |
fetchDocumentAncestors |
POST | /gateway/api/v1/documents/ancestors |
Предки документов |
fetchDocumentsBundleVersions |
POST | /gateway/api/v1/documents/bundle_versions |
Версии бандлов документов |
getAttributesByDocumet |
GET | /gateway/api/v1/documents/{id}/attributes |
Атрибуты документа |
updateAttributes |
PUT | /gateway/api/v1/documents/{id}/attributes |
Обновить атрибуты документа |
addAttributes |
POST | /gateway/eav/api/v0/entity/ |
Создать сущность атрибутов (EAV) |
getDefaultAttributes |
GET | /eav/api/v0/schema/?model=document&company_id=...&type_identifier=... |
Схема атрибутов по типу |
getAttributes |
GET | /eav/api/v0/attribute/?company_id={params} |
Атрибуты компании |
getAttributesWithParams |
GET | /eav/api/v0/schema/?model=document&{params} |
Схема атрибутов с параметрами |
updateSubscription |
POST | /gateway/api/v1/subscription/ |
Создать/обновить подписку |
deleteSubscription |
DELETE | /gateway/api/v1/documents/{documentId}/subscription/ |
Удалить подписку |
getActivityLog |
GET | /gateway/api/v1/system_log/?... |
Журнал активности документа |
fetchDocumentByResourceId |
GET | /gateway/api/v1/resources-rpc/parent-document-by-resource-id/{resourceId}/ |
Родительский документ по resource id |
getRemovedDocuments |
GET | /gateway/api/v1/documents/bin?parent_id={id}{params} |
Удалённые документы в папке |
getRemovedFilteredDocuments |
GET | /gateway/api/v1/documents/bin{params} |
Удалённые документы (фильтр) |
getBindings |
GET | /cde/app/v1/bundles/{bundleId}/bindings |
Привязки бандла |
completeUpload |
POST | {uploadUrl}/complete |
Завершение загрузки (по переданному URL) |
sarex — Локальный сервис данных
| Ключ | Метод | Путь | Назначение |
|---|---|---|---|
getSettings |
GET | /api/client/settings/ |
Клиентские настройки (кешируется) |
getUser |
GET | /api/core/users/{userId}/ |
Пользователь по id |
getUsersByCompanyIds |
GET | /api/core/users/?company={ids}&limit=&offset=&show_inactive=true |
Пользователи компаний |
getTargets |
GET | /api/core/targets/ |
Список таргетов |
getCompanies |
GET | /api/core/companies/ |
Список компаний |
getDepartmentById |
GET | /api/core/admin/departments?company={companyId} |
Отделы компании |
getUsersPositionById |
GET | /api/core/admin/positions/?company={companyId} |
Должности компании |
getByFullUrl |
GET | {url} |
Запрос по произвольному URL |
processes — Сервис рабочих процессов (flows)
| Ключ | Метод | Путь | Назначение |
|---|---|---|---|
getProcesses |
GET | api/v1/flows/?{query} |
Список процессов (flows) |
createReview |
POST | api/v1/reviews/ |
Создать review |
deleteReview |
DELETE | api/v1/reviews/{id}/ |
Удалить review |
activateReview |
PATCH | api/v1/reviews/{id}/approve/ |
Активировать/утвердить review |
createReviewDocuments |
POST | api/v1/documents/ |
Добавить документы в review |
workflows — Сервис обработки документов
| Ключ | Метод | Путь | Назначение |
|---|---|---|---|
getWorkflow |
GET | api/v1/workflows/{workflowId} |
Workflow по id |
getWorkflows |
POST | api/v1/workflows/batch |
Пакетное получение workflow |
workspaces — Сервис рабочих областей
| Ключ | Метод | Путь | Назначение |
|---|---|---|---|
getWorkspaces |
GET | api/v1/workspaces/{uuid} |
Рабочая область по uuid |
remarks — Сервис замечаний
| Ключ | Метод | Путь | Назначение |
|---|---|---|---|
getRemarksTotalCount |
GET | api/v1/total_count |
Общее число замечаний |
files — Сервис файлов
| Ключ | Метод | Путь | Назначение |
|---|---|---|---|
downloadFiles |
GET | /api/v1/documents/{documentIds} |
Скачать документы по id |
downloadFileBundles |
POST | /api/v1/documents/ |
Скачать бандлы (ответ blob) |
Обработка ошибок
Коды ответов маппируются в сообщения (module/api/errors.ts): 400 — некорректный запрос, 404 — ресурс не найден, 500 (и прочие) — ошибка сервера. Для каждого сервиса задано человекочитаемое имя (напр. transmittals → «Сервис передачи документации»), которое подставляется в текст ошибки. По умолчанию у запросов включён показ уведомления об ошибке (showErrorNotification: true).