9.0 KiB
9.0 KiB
Admin API
1. Назначение документа
Этот документ фиксирует целевые HTTP-контракты административного API, через которое UI управляет workspace, operations, agents, platform access и observability.
2. Общие правила API
- все payload по умолчанию в
JSON; - import/export конфигурации используют
YAML; - все основные ресурсы являются
workspace-scoped; - версии operation и agent адресуются явно;
- published operation и published agent - ссылки на конкретные version;
- ошибки валидации возвращаются отдельно от transport errors.
Базовый префикс:
/api/admin
3. Основные ресурсы
workspacesauthmembershipsinvitationsoperationsauth-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/password
Контракт:
POST /loginпринимаетemailиpassword;- при успешном логине backend выставляет
HttpOnlysession cookie; GET /sessionвозвращает текущего пользователя и memberships;GET /profileвозвращает текущего пользователя и memberships для settings UI;PATCH /profileобновляетdisplay_nameиemailтекущего пользователя;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-setGET /api/admin/workspaces/{workspace_id}/operations/{operation_id}/grpc/services
5.5. Upstream auth profiles
GET /api/admin/workspaces/{workspace_id}/auth-profilesPOST /api/admin/workspaces/{workspace_id}/auth-profilesGET /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}
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}/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.
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.
Детальные 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 значения ключа при создании.
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 до начала реализации.