12 KiB
Admin API
1. Назначение документа
Этот документ фиксирует целевые HTTP-контракты административного API, через которое UI управляет workspace, operations, agents, platform access и observability.
Для потоковой модели детальные HTTP DTO вынесены отдельно в:
docs/streaming-admin-api.md
2. Общие правила API
- все payload по умолчанию в
JSON; - import/export конфигурации используют
YAML; - все основные ресурсы являются
workspace-scoped; - версии operation и agent адресуются явно;
- published operation и published agent - ссылки на конкретные version;
- ошибки валидации возвращаются отдельно от transport errors.
Базовый префикс:
/api/admin
3. Основные ресурсы
workspacesauthmembershipsinvitationsoperationssecretsauth-profilesagentsplatform-api-keyslogsusagesamplesdescriptorsconfig import/export
4. Workspace-scoped routing
Канонический префикс для UI-driven сценариев:
/api/admin/workspaces/{workspace_id}
5. Группы endpoints
5.1. Workspaces and members
GET /api/admin/workspacesPOST /api/admin/workspacesGET /api/admin/workspaces/{workspace_id}PATCH /api/admin/workspaces/{workspace_id}DELETE /api/admin/workspaces/{workspace_id}GET /api/admin/workspaces/{workspace_id}/membersPATCH /api/admin/workspaces/{workspace_id}/members/{user_id}DELETE /api/admin/workspaces/{workspace_id}/members/{user_id}GET /api/admin/workspaces/{workspace_id}/invitationsPOST /api/admin/workspaces/{workspace_id}/invitationsDELETE /api/admin/workspaces/{workspace_id}/invitations/{invitation_id}GET /api/admin/workspaces/{workspace_id}/export
Контракт:
POST /invitationsвозвращает metadata invitation и одноразовыйinvite_token;invite_tokenдоступен только в create-response и не возвращается повторно в list endpoints;PATCH /members/{user_id}меняет роль участника;DELETE /members/{user_id}удаляет участника из workspace;GET /exportвозвращает JSON snapshot workspace lifecycle-данных;DELETE /workspaces/{workspace_id}разрешен толькоowner.
5.2. Auth and session
POST /api/auth/loginPOST /api/auth/logoutGET /api/auth/sessionGET /api/auth/profilePATCH /api/auth/profilePOST /api/auth/current-workspacePOST /api/auth/password
Контракт:
POST /loginпринимаетemailиpassword;- при успешном логине backend выставляет
HttpOnlysession cookie; GET /sessionвозвращает текущего пользователя, memberships иcurrent_workspace_id;GET /profileвозвращает текущего пользователя, memberships иcurrent_workspace_idдля settings UI;PATCH /profileобновляетdisplay_nameиemailтекущего пользователя;POST /current-workspaceпереключает текущий workspace внутри текущей authenticated session;POST /passwordменяет пароль текущего пользователя после проверкиcurrent_password;POST /logoutинвалидирует текущую session.
5.3. Operations
GET /api/admin/workspaces/{workspace_id}/operationsPOST /api/admin/workspaces/{workspace_id}/operationsGET /api/admin/workspaces/{workspace_id}/operations/{operation_id}PATCH /api/admin/workspaces/{workspace_id}/operations/{operation_id}DELETE /api/admin/workspaces/{workspace_id}/operations/{operation_id}POST /api/admin/workspaces/{workspace_id}/operations/{operation_id}/versionsGET /api/admin/workspaces/{workspace_id}/operations/{operation_id}/versions/{version}POST /api/admin/workspaces/{workspace_id}/operations/{operation_id}/publishPOST /api/admin/workspaces/{workspace_id}/operations/{operation_id}/archivePOST /api/admin/workspaces/{workspace_id}/operations/{operation_id}/test-runsGET /api/admin/workspaces/{workspace_id}/operations/{operation_id}/exportPOST /api/admin/workspaces/{workspace_id}/operations/import
5.4. Samples and descriptors
POST /api/admin/workspaces/{workspace_id}/operations/{operation_id}/samples/input-jsonPOST /api/admin/workspaces/{workspace_id}/operations/{operation_id}/samples/output-jsonPOST /api/admin/workspaces/{workspace_id}/operations/{operation_id}/drafts/generatePOST /api/admin/workspaces/{workspace_id}/operations/{operation_id}/descriptors/protoPOST /api/admin/workspaces/{workspace_id}/operations/{operation_id}/descriptors/descriptor-setPOST /api/admin/workspaces/{workspace_id}/operations/{operation_id}/descriptors/wsdlPOST /api/admin/workspaces/{workspace_id}/operations/{operation_id}/descriptors/xsdGET /api/admin/workspaces/{workspace_id}/operations/{operation_id}/grpc/servicesGET /api/admin/workspaces/{workspace_id}/operations/{operation_id}/soap/services
Контракт:
POST /descriptors/wsdlпринимает raw WSDL payload и сохраняет inspection metadata для SOAP;POST /descriptors/xsdпринимает supporting XSD artifacts для SOAP operation;GET /soap/servicesвозвращает нормализованный списокservice -> port -> operationиз последнего WSDL текущего draft version.
5.5. Upstream auth profiles
-
GET /api/admin/workspaces/{workspace_id}/secrets -
POST /api/admin/workspaces/{workspace_id}/secrets -
GET /api/admin/workspaces/{workspace_id}/secrets/{secret_id} -
POST /api/admin/workspaces/{workspace_id}/secrets/{secret_id}/rotate -
DELETE /api/admin/workspaces/{workspace_id}/secrets/{secret_id} -
GET /api/admin/workspaces/{workspace_id}/auth-profiles -
POST /api/admin/workspaces/{workspace_id}/auth-profiles -
GET /api/admin/workspaces/{workspace_id}/auth-profiles/{auth_profile_id} -
PATCH /api/admin/workspaces/{workspace_id}/auth-profiles/{auth_profile_id} -
DELETE /api/admin/workspaces/{workspace_id}/auth-profiles/{auth_profile_id}
Контракт:
POST /secretsпринимает metadata и plaintext value, но create-response возвращает только metadata;GET /secretsиGET /secrets/{secret_id}возвращают только metadata,kind,status,current_version,created_at,updated_at,last_used_atпри наличии;POST /secrets/{secret_id}/rotateсоздает новую secret version;DELETE /secrets/{secret_id}в secret foundation удаляет secret без reference checks; валидация ссылок добавляется вfeat/auth-profile-secret-resolution;AuthProfile.configхранит ссылки наsecret_id, а не placeholder-строки${secrets.*}.
5.6. Agents
GET /api/admin/workspaces/{workspace_id}/agentsPOST /api/admin/workspaces/{workspace_id}/agentsGET /api/admin/workspaces/{workspace_id}/agents/{agent_id}PATCH /api/admin/workspaces/{workspace_id}/agents/{agent_id}DELETE /api/admin/workspaces/{workspace_id}/agents/{agent_id}POST /api/admin/workspaces/{workspace_id}/agents/{agent_id}/versionsGET /api/admin/workspaces/{workspace_id}/agents/{agent_id}/versions/{version}POST /api/admin/workspaces/{workspace_id}/agents/{agent_id}/publishPOST /api/admin/workspaces/{workspace_id}/agents/{agent_id}/unpublishPOST /api/admin/workspaces/{workspace_id}/agents/{agent_id}/archivePOST /api/admin/workspaces/{workspace_id}/agents/{agent_id}/bindingsDELETE /api/admin/workspaces/{workspace_id}/agents/{agent_id}/bindings/{operation_id}
5.7. Platform API keys
GET /api/admin/workspaces/{workspace_id}/platform-api-keysPOST /api/admin/workspaces/{workspace_id}/platform-api-keysPOST /api/admin/workspaces/{workspace_id}/platform-api-keys/{key_id}/revokeDELETE /api/admin/workspaces/{workspace_id}/platform-api-keys/{key_id}
Контракт:
POST /platform-api-keysвозвращает metadata ключа и одноразовыйsecret;secretдоступен только в create-response;- list endpoints возвращают только metadata,
prefix,status,scopesиlast_used_at. last_used_atобновляется при успешной machine-auth аутентификации этим ключом вmcp-server.
5.8. Observability
GET /api/admin/workspaces/{workspace_id}/logsGET /api/admin/workspaces/{workspace_id}/logs/{log_id}GET /api/admin/workspaces/{workspace_id}/usageGET /api/admin/workspaces/{workspace_id}/usage/operations/{operation_id}GET /api/admin/workspaces/{workspace_id}/usage/agents/{agent_id}
Контракт:
GET /logsподдерживаетlevel,search,source,operation_id,agent_id,period,limit;periodиспользует UI-friendly значения30m,1h,6h,24h,7d,30d,90d,this_month;sourceразличаетadmin_test_runиagent_tool_call;GET /usageвозвращаетsummary,timeline,operations,agentsодним ответом;- detail endpoints по operation и agent возвращают rollup для выбранного периода.
6. Page-to-endpoint mapping
Operations catalog
Нужны:
- список операций;
- удаление операции;
- edit/open operation;
- publish/archive;
- usage summary для карточек и фильтров.
Wizard
Нужны:
- create/update version;
- test run;
- samples;
- draft generation;
- gRPC descriptor upload и discovery.
- upstream auth selector;
- quick-create secret / auth profile modal.
- execution mode selector;
- streaming config blocks;
- stream test-runs;
- tool family preview.
Детальные DTO и response shapes для экранов Operations и Wizard зафиксированы отдельно в:
docs/operations-workspace-contracts.md
Agents
Нужны:
- CRUD агентов;
- bindings к operations;
- publish agent;
- выдача MCP endpoint metadata.
API Keys
Нужны:
- list/create/revoke/delete platform API keys;
- one-time reveal значения ключа при создании.
Secrets
Нужны:
- list/create/rotate/delete upstream secrets;
- metadata-only retrieval после создания;
- связь с auth profiles;
- usage references, чтобы оператор видел, где секрет используется.
Logs
Нужны:
- list logs с фильтрами;
- log detail;
- polling или live refresh strategy.
Usage
Нужны:
- агрегаты по периодам;
- breakdown по operation;
- breakdown по agent;
- CSV export.
Текущая реализация:
- summary и breakdown считаются по
invocation_logs; - materialized
usage_rollupsостаются совместимым storage-слоем для дальнейшей оптимизации, но не являются единственным source of truth в MVP.
7. Принцип совместимости
Если UI расходится с текущим backend, приоритет отдается целевой продуктовой модели, но конфликт должен быть явно разобран в docs/as-is-to-be.md до начала реализации.