Эндпоинты, с которыми взаимодействует documentations-api-v2
Документ описывает HTTP-эндпоинты внешних сервисов, к которым обращается Go-сервис documentation-api-v2 (pdm/documentation-api-v2).
Как устроено взаимодействие
Внешние вызовы выполняются типизированными клиентами в pkg/clients/* и pkg/django. Каждый клиент строится на github.com/go-resty/resty/v2 с SetBaseURL(<URL>), ретраями и (опционально) OTEL-трассировкой. Базовый URL берётся из переменной окружения (см. api-v2.CONFIGURATION.md); итоговый URL = <базовый URL> + путь, указанный в коде метода клиента.
Клиенты создаются в internal/api/httpserver/server.go (App.Run) и передаются в репозитории/юзкейсы. Аутентификация к внешним сервисам:
- Django и flows используют Basic-auth из
DJANGO_BASIC_AUTH;
- workspace (
Archive) пробрасывает пользовательский Bearer-токен (SetAuthToken);
- прочие внутренние сервисы вызываются по кластерным адресам без явной авторизации на уровне клиента.
Базовые адреса по сервисам
Клиент (pkg/...) |
Переменная базового URL |
Назначение |
django |
DJANGO_HOST |
Монолит/IAM: пользователи, компании, сервис-аккаунты, настройки |
clients/workspace |
WORKSPACE_URL |
Сервис рабочих областей |
clients/workflows |
WORKFLOW_URL |
Запуск workflow-обработки |
clients/bimv1 |
BIM_API_URL |
BIM API v1 |
clients/bimv2 |
BIM_API_V2_URL |
BIM API v2 (bim-core) |
clients/flows |
FLOWS_URL |
Сервис flows (процессы) |
clients/marks |
MARKS_PROCESSING_URL |
Сервис PDF-маркировок |
clients/system_log |
SYSTEM_LOG_URL |
Сервис журналирования |
Эндпоинты по сервисам
django — монолит/IAM (pkg/django)
| Метод |
Путь |
Назначение |
| GET |
api/client/settings/ |
Клиентские настройки |
| GET |
/api/core/companies/ |
Список компаний |
| GET |
/api/core/users/ |
Список пользователей |
| GET |
api/core/users/{user_id}/introspect |
Интроспекция пользователя |
| GET |
/api/core/service_accounts/ |
Сервис-аккаунты |
| GET |
/api/core/service-accounts/personalized/ |
Персонализированные сервис-аккаунты |
workspace — рабочие области (pkg/clients/workspace)
| Метод |
Путь |
Назначение |
| POST |
internal/v2/workspaces |
Создать рабочую область |
| DELETE |
internal/v2/documents/{document_ids} |
Удалить документы из рабочих областей; возвращает id опустевших областей |
| POST |
api/v1/workspaces/{workspace_id}/archive |
Архивировать рабочую область (с пользовательским Bearer-токеном) |
workflows — workflow-обработка (pkg/clients/workflows)
| Метод |
Путь |
Назначение |
| POST |
internal/v1/companies/{company_id}/workflows |
Создать/запустить workflow для компании |
bimv1 — BIM API v1 (pkg/clients/bimv1)
| Метод |
Путь |
Назначение |
| POST |
/internal/v1/targets/{target_id}/bims-pdm |
Зарегистрировать новый BIM (v1) |
| POST |
/internal/v1/targets/{target_id}/bims-v2-pdm |
Зарегистрировать новый BIM (v2) |
bimv2 — BIM API v2 (pkg/clients/bimv2)
| Метод |
Путь |
Назначение |
| POST |
/internal/v1/projects/{project_id}/bims |
Создать BIM в проекте |
flows — процессы (pkg/clients/flows)
| Метод |
Путь |
Назначение |
| GET |
api/v1/documents/?full=true&document_ids={id} |
Документы процессов по id |
marks — PDF-маркировки (pkg/clients/marks)
| Метод |
Путь |
Назначение |
| POST |
/api/v1/marks/{bundle_id} |
Массовое создание маркировок для бандла |
system_log — журналирование (pkg/clients/system_log)
| Метод |
Путь |
Назначение |
| POST |
/api/v0/system_log |
Отправка пакета записей журнала |
Обработка ошибок
Клиенты проверяют HTTP-статус ответа и при коде, отличном от ожидаемого (обычно 200), оборачивают ошибку через github.com/rotisserie/eris с указанием имени метода клиента (напр. bimapi.addNewBim: invalid response code %d expected 200). Транспортные ошибки resty также оборачиваются eris.Wrap. Настроены ретраи (напр. клиент workspace — 5 попыток с паузой 1 c, таймаут 10 c).