Разработчикам

Интеграция с API

Базовый адрес, авторизация, основные маршруты API и восстановление принятого задания.

Подключение

Базовый адрес: https://siharness.dev. API интеграций использует Bearer-ключ и заголовки области доступа. Идентификаторы организации, проекта и окружения предоставляет администратор.

ЗаголовокЗначение
AuthorizationBearer <ключ>
X-AI-Organization-IDИдентификатор организации
X-AI-Project-IDИдентификатор проекта
X-AI-Environment-IDРазрешённое окружение

Ключ и заголовки должны соответствовать друг другу. Доступ к маршрутам определяется ролью сервисной учётной записи.

Пример чтения

Пример запрашивает каталог решений и не создаёт запуск. Переменные заполняются значениями вашей учётной записи. Для этого маршрута нужны права чтения каталога.

curl --fail-with-body 'https://siharness.dev/v1/solutions' \
  -H "Authorization: Bearer $HARNESS_API_KEY" \
  -H "X-AI-Organization-ID: $HARNESS_ORGANIZATION_ID" \
  -H "X-AI-Project-ID: $HARNESS_PROJECT_ID" \
  -H "X-AI-Environment-ID: $HARNESS_ENVIRONMENT_ID"

Интеграционный ключ отдельного продукта может не иметь доступа к общему каталогу. Используйте разрешённые ему продуктовые маршруты.

Основные маршруты

МаршрутНазначение
GET /v1/solutionsКаталог доступных решений
POST /v1/tasks/quoteПредварительные условия запуска и бюджет
POST /v1/tasksСоздание задания решения
GET /v1/tasks/{taskID}Состояние принятого задания
GET /v1/tasks/{taskID}/resultСохранённый результат
GET /v1/tasks/{taskID}/financeУчтённые расходы и полнота стоимости
GET /v1/runs/{runID}/eventsСобытия исполнения агента
GET /v1/runs/{runID}/usageУчёт физических попыток

Специализированные интеграции используют выделенные маршруты API. Администратор предоставляет разрешённые маршруты и параметры подключения; операции и результаты доступны владельцу интеграции.

Повторы и восстановление

Для создания задания передавайте стабильный Idempotency-Key длиной от 16 до 128 символов. Если ответ потерян, сначала найдите принятое задание по этому ключу: GET /v1/tasks/by-idempotency-key?solutionId=<solutionId> с тем же заголовком и областью доступа.

Повтор с тем же ключом и тем же содержимым возвращает принятую операцию. Другое содержимое под тем же ключом вызывает конфликт. Не меняйте ключ при транспортном повторе: новый ключ может означать новую оплачиваемую работу.

Что появится дальше

Python и TypeScript SDK, клиентский CLI, webhooks и локальный запуск описаны в плане развития. Сейчас эта инструкция относится к HTTP API.