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

Справочник по API

Canopy предоставляет полноценный REST API, который лежит в основе всего, что можно сделать в веб-интерфейсе. Вы можете использовать его для автоматизации обновлений инвентаря, интеграции с CI/CD-конвейерами, создания пользовательских панелей мониторинга или выгрузки данных EA в другие инструменты (BI, GRC, ITSM, электронные таблицы).

Полная спецификация OpenAPI 3.1 доступна в разделе Конечные точки API боковой панели — каждая конечная точка, параметр и схема ответа, генерируемая из исходного кода бэкенда при каждом выпуске.


Базовый URL

Все конечные точки API находятся под префиксом /api/v1. URL вашей среды Canopy соответствует следующему шаблону:

https://{ваш-slug}-canopy.rhizo-tech.org/api/v1

Замените {ваш-slug} на slug вашей организации, который отображается в вашем аккаунте Rhizo и в URL, который вы используете для доступа к Canopy.

Единственным исключением является конечная точка проверки работоспособности, которая монтируется по адресу /api/health (без префикса версии).


Интерактивный справочник API

Полная спецификация OpenAPI 3.1 доступна в разделе Конечные точки API боковой панели. Каждая страница конечной точки включает интерактивную площадку, где вы можете ввести bearer-токен и выполнять реальные запросы к вашей среде Canopy.

Необработанная спецификация также доступна для загрузки генераторами кода:

https://docs.rhizo-tech.org/api/openapi.json
примечание

Чтобы воспользоваться интерактивной площадкой, откройте любую страницу конечной точки в разделе Конечные точки API боковой панели, введите bearer-токен в поле Authorization, заполните параметры и нажмите Send.


Аутентификация

Все конечные точки, кроме /auth/*, проверки работоспособности и публичных веб-порталов, требуют наличия JSON Web Token в заголовке Authorization:

Authorization: Bearer <access_token>

Получение токена

POST /api/v1/auth/login с вашим email и паролем:

curl -X POST https://{ваш-slug}-canopy.rhizo-tech.org/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]", "password": "your-password"}'

Ответ содержит access_token:

{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "bearer"
}

Токены действительны в течение 24 часов. Используйте POST /api/v1/auth/refresh для продления сессии без повторного ввода учётных данных.

Пользователи SSO

Если ваша организация использует единый вход (SSO), вы не можете войти с email и паролем через API. Попросите администратора Canopy создать выделенный сервисный аккаунт с локальным паролем для автоматизации.

Использование токена

curl https://{ваш-slug}-canopy.rhizo-tech.org/api/v1/cards \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

Права доступа

API применяет те же правила RBAC, что и веб-интерфейс. Каждая мутирующая конечная точка проверяет как роль вызывающего на уровне приложения, так и роли заинтересованных сторон, которые он занимает на затронутой карточке. Отдельных «разрешений API» или обходных путей для сервисных аккаунтов не существует — скрипты автоматизации выполняются с правами пользователя, чей токен они используют.

Если запрос завершается с ошибкой 403 Forbidden, токен действителен, но у пользователя отсутствует необходимое разрешение. Перейдите на страницу Пользователи и роли для ознакомления с реестром разрешений.


Распространённые группы конечных точек

Справочник в боковой панели является полным источником истины; таблица ниже — быстрый обзор наиболее используемых групп:

ПрефиксНазначение
/authВход, регистрация, обратный вызов SSO, обновление токена, информация о текущем пользователе
/cardsCRUD карточек (основная сущность), иерархия, история, утверждение, экспорт CSV
/relationsCRUD связей между карточками
/metamodelТипы карточек, поля, разделы, подтипы, типы связей
/reportsKPI панели, портфель, матрица, жизненный цикл, зависимости, стоимость, качество данных
/bpmУправление бизнес-процессами — диаграммы, элементы, версии потока, оценки
/ppmУправление портфелем проектов — инициативы, статус-отчёты, WBS, задачи, затраты, риски
/turbolensАнализ на основе ИИ (поставщики, дубликаты, архитектурный ИИ)
/risksРеестр рисков EA (фаза G TOGAF)
/diagramsДиаграммы DrawIO
/soawДокументы «Заявление об архитектурных работах»
/adrЗаписи архитектурных решений
/users, /rolesУправление пользователями и ролями (только для администраторов)
/settingsНастройки приложения (логотип, валюта, SMTP, ИИ, переключатели модулей)
/servicenowДвунаправленная синхронизация с ServiceNow CMDB
/events, /notificationsЖурнал аудита и уведомления пользователей (включая поток SSE)

Пагинация, фильтрация и сортировка

Конечные точки списков принимают единый набор параметров запроса:

ПараметрОписание
pageНомер страницы (с 1)
page_sizeЭлементов на странице (по умолчанию 50, максимум 200)
sort_byПоле для сортировки (например, name, updated_at)
sort_dirasc или desc
searchФильтр свободного текста (там, где поддерживается)

Фильтры, специфичные для ресурсов, задокументированы для каждой конечной точки в справочнике боковой панели (например, /cards принимает type, status, parent_id, approval_status).


События в реальном времени (Server-Sent Events)

GET /api/v1/events/stream — долгоживущее SSE-соединение, которое отправляет события по мере их возникновения (карточка создана, обновлена, утверждена и т.д.). Веб-интерфейс использует его для обновления значков и списков без опроса. Любой HTTP-клиент с поддержкой SSE может подписаться — полезно для создания панелей реального времени или внешних мостов уведомлений.


Генерация кода

Поскольку API полностью описан спецификацией OpenAPI 3.1, вы можете генерировать типобезопасные клиенты на любом основном языке:

# Загрузить схему
curl https://docs.rhizo-tech.org/api/openapi.json -o canopy-openapi.json

# Сгенерировать Python-клиент
openapi-generator-cli generate \
-i canopy-openapi.json \
-g python \
-o ./canopy-client-py

# ...или TypeScript, Go, Java, C# и т.д.

Для автоматизации на Python простейший путь — использовать httpx или requests с ручными вызовами — API достаточно мал, чтобы генератор редко оправдывал введение зависимости.


Ограничение частоты запросов

Конечные точки, чувствительные к аутентификации (вход, регистрация, сброс пароля), ограничены по частоте для защиты от атак перебором. Другие конечные точки в настоящее время не ограничены; для интенсивных скриптов автоматизации реализуйте ограничение на стороне клиента.


Версионирование и стабильность

  • API версионируется через префикс /api/v1. Несовместимое изменение повлечёт введение /api/v2 параллельно.
  • Внутри v1 аддитивные изменения (новые конечные точки, новые необязательные поля) могут выходить в минорных и патч-релизах. Удаления или изменения контрактов зарезервированы для увеличения мажорной версии.
  • Текущая версия передаётся в GET /api/health, что позволяет обнаруживать обновления из автоматизации.

Устранение неполадок

ПроблемаРешение
401 UnauthorizedТокен отсутствует, имеет неверный формат или истёк срок действия. Повторно аутентифицируйтесь через /auth/login или /auth/refresh.
403 ForbiddenТокен действителен, но у пользователя недостаточно прав. Проверьте роль пользователя в разделе Пользователи и роли.
422 Unprocessable EntityОшибка валидации Pydantic. Тело ответа содержит список некорректных полей с объяснением причин.