iac/apps/transmittal/ENDPOINTS.md

17 KiB
Raw Blame History

Эндпоинты, с которыми взаимодействует 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).