Complete markdown documentation
Deploy / deploy (push) Successful in 37s
CI / Rust Checks (push) Successful in 27m22s
CI / UI Checks (push) Successful in 6s
CI / Deployment Manifests (push) Successful in 3s
CI / Frontend E2E (push) Successful in 20m44s

This commit is contained in:
github-ops
2026-06-21 12:49:56 +00:00
parent c77065756d
commit 9331ee1d89
11 changed files with 680 additions and 135 deletions
+159 -19
View File
@@ -1,6 +1,6 @@
# Admin API
Admin API используется UI для управления Crank Community.
Admin API используется веб-интерфейсом Crank. Его можно использовать и напрямую для автоматизации настройки.
Base path:
@@ -8,7 +8,33 @@ Base path:
/api/admin
```
## Auth
Auth path:
```text
/api/auth
```
## Авторизация
Администратор входит по email и паролю. После входа сервер устанавливает HttpOnly session cookie.
```bash
curl -i https://crank.example.com/api/auth/login \
-H 'Content-Type: application/json' \
--data '{
"email": "owner@example.com",
"password": "change-me"
}'
```
Дальше используйте cookie из ответа:
```bash
curl https://crank.example.com/api/auth/session \
-b 'crank_session=<cookie_value>'
```
Endpoints:
- `POST /api/auth/login`
- `POST /api/auth/logout`
@@ -17,30 +43,60 @@ Base path:
- `PATCH /api/auth/profile`
- `POST /api/auth/password`
Авторизация основана на email/password и HttpOnly session cookie.
## Capabilities
- `GET /api/admin/capabilities`
```bash
curl https://crank.example.com/api/admin/capabilities \
-b 'crank_session=<cookie_value>'
```
Community capabilities:
- supported protocol: `rest`
- supported security level: `standard`
- machine access mode: static agent key
- protocol: `rest`;
- operation security level: `standard`;
- machine access: static agent API keys.
## Workspaces
Community работает с одним workspace.
- `GET /api/admin/workspaces`
- `GET /api/admin/workspaces/{workspace_id}`
- `PATCH /api/admin/workspaces/{workspace_id}`
Community работает с одним bootstrap workspace. API не поддерживает создание
дополнительных workspace-ов, переключение текущего workspace-а, приглашения
пользователей и управление ролями.
Пример:
```bash
curl https://crank.example.com/api/admin/workspaces \
-b 'crank_session=<cookie_value>'
```
## Upstreams
Upstream хранит базовый URL внешнего REST API и необязательные статические заголовки.
- `GET /api/admin/workspaces/{workspace_id}/upstreams`
- `POST /api/admin/workspaces/{workspace_id}/upstreams`
- `PATCH /api/admin/workspaces/{workspace_id}/upstreams/{upstream_id}`
Пример создания:
```bash
curl https://crank.example.com/api/admin/workspaces/ws_default/upstreams \
-b 'crank_session=<cookie_value>' \
-H 'Content-Type: application/json' \
--data '{
"name": "Frankfurter",
"base_url": "https://api.frankfurter.dev",
"static_headers": {},
"auth_profile_id": null
}'
```
## Operations
Операция описывает один REST endpoint как MCP-инструмент.
- `GET /api/admin/workspaces/{workspace_id}/operations`
- `POST /api/admin/workspaces/{workspace_id}/operations`
- `POST /api/admin/workspaces/{workspace_id}/operations/analyze-quality`
@@ -53,8 +109,33 @@ Community работает с одним bootstrap workspace. API не подд
- `POST /api/admin/workspaces/{workspace_id}/operations/{operation_id}/archive`
- `POST /api/admin/workspaces/{workspace_id}/operations/{operation_id}/test-runs`
- `GET /api/admin/workspaces/{workspace_id}/operations/{operation_id}/export`
- `POST /api/admin/workspaces/{workspace_id}/operations/import`
`analyze-quality` принимает такой же draft payload, как создание операции, и возвращает отчет:
Пример тестового запуска:
```bash
curl https://crank.example.com/api/admin/workspaces/ws_default/operations/<operation_id>/test-runs \
-b 'crank_session=<cookie_value>' \
-H 'Content-Type: application/json' \
--data '{
"version": 1,
"input": {
"base": "USD",
"quote": "EUR"
}
}'
```
Пример публикации:
```bash
curl https://crank.example.com/api/admin/workspaces/ws_default/operations/<operation_id>/publish \
-b 'crank_session=<cookie_value>' \
-H 'Content-Type: application/json' \
--data '{ "version": 1 }'
```
`analyze-quality` принимает payload операции и возвращает рекомендации:
```json
{
@@ -70,9 +151,6 @@ Community работает с одним bootstrap workspace. API не подд
]
}
```
- `POST /api/admin/workspaces/{workspace_id}/operations/import`
Community принимает только `protocol = rest`.
## Samples
@@ -80,6 +158,8 @@ Community принимает только `protocol = rest`.
- `POST /api/admin/workspaces/{workspace_id}/operations/{operation_id}/samples/output-json`
- `POST /api/admin/workspaces/{workspace_id}/operations/{operation_id}/drafts/generate`
Samples используются для генерации схемы, стартового маппинга и сохранения тестовых примеров wizard-а.
## Secrets
- `GET /api/admin/workspaces/{workspace_id}/secrets`
@@ -88,8 +168,20 @@ Community принимает только `protocol = rest`.
- `POST /api/admin/workspaces/{workspace_id}/secrets/{secret_id}/rotate`
- `DELETE /api/admin/workspaces/{workspace_id}/secrets/{secret_id}`
Create-response может вернуть plaintext secret только один раз. List/read endpoints
возвращают только metadata.
Пример создания token secret:
```bash
curl https://crank.example.com/api/admin/workspaces/ws_default/secrets \
-b 'crank_session=<cookie_value>' \
-H 'Content-Type: application/json' \
--data '{
"name": "production-api-token",
"kind": "token",
"value": "secret-token-value"
}'
```
После создания или ротации API возвращает только metadata. Значение секрета нельзя прочитать повторно.
## Auth profiles
@@ -99,7 +191,7 @@ Create-response может вернуть plaintext secret только один
- `PATCH /api/admin/workspaces/{workspace_id}/auth-profiles/{auth_profile_id}`
- `DELETE /api/admin/workspaces/{workspace_id}/auth-profiles/{auth_profile_id}`
Auth profile хранит ссылки на secrets и способ применения credential к REST request.
Auth profile хранит ссылки на secrets и способ применения секрета к REST-запросу.
## Agents
@@ -116,6 +208,21 @@ Auth profile хранит ссылки на secrets и способ примен
- `POST /api/admin/workspaces/{workspace_id}/agents/{agent_id}/bindings`
- `DELETE /api/admin/workspaces/{workspace_id}/agents/{agent_id}/bindings/{operation_id}`
Пример создания агента:
```bash
curl https://crank.example.com/api/admin/workspaces/ws_default/agents \
-b 'crank_session=<cookie_value>' \
-H 'Content-Type: application/json' \
--data '{
"slug": "currency-rates",
"display_name": "Курсы валют",
"description": "Агент с инструментами для получения курсов валют.",
"instructions": {},
"tool_selection_policy": {}
}'
```
## Agent API keys
- `GET /api/admin/workspaces/{workspace_id}/agents/{agent_id}/platform-api-keys`
@@ -123,9 +230,42 @@ Auth profile хранит ссылки на secrets и способ примен
- `POST /api/admin/workspaces/{workspace_id}/agents/{agent_id}/platform-api-keys/{key_id}/revoke`
- `DELETE /api/admin/workspaces/{workspace_id}/agents/{agent_id}/platform-api-keys/{key_id}`
Полное значение ключа доступно только в create-response.
Пример создания ключа:
```bash
curl https://crank.example.com/api/admin/workspaces/ws_default/agents/<agent_id>/platform-api-keys \
-b 'crank_session=<cookie_value>' \
-H 'Content-Type: application/json' \
--data '{
"name": "Demo MCP client",
"scopes": ["read", "write"]
}'
```
Полное значение ключа доступно только в create response.
## Logs и usage
- `GET /api/admin/workspaces/{workspace_id}/logs`
- `GET /api/admin/workspaces/{workspace_id}/usage`
Пример:
```bash
curl 'https://crank.example.com/api/admin/workspaces/ws_default/logs?limit=20' \
-b 'crank_session=<cookie_value>'
```
## Ошибки
Admin API возвращает JSON-ошибки с человекочитаемым сообщением и контекстом, если он доступен.
Частые HTTP-коды:
- `400` - неверный payload;
- `401` - нет сессии;
- `403` - действие запрещено;
- `404` - сущность не найдена;
- `409` - конфликт состояния;
- `429` - rate limit;
- `500` - внутренняя ошибка.