import api from './client'; export interface TokenRow { token_id: number; token_prefix: string; token_plain: string | null; client_id: string; service_scope: string; service_url: string | null; status: string; expires_at: string | null; description: string | null; created_at: string | null; created_by: string; revoked_at: string | null; revoke_reason: string | null; last_used_at: string | null; last_used_svc: string | null; } export interface TokenCreate { client_id: string; service_scope: string; description?: string; expires_at?: string | null; } export interface CreateResult { token: string; token_id: number; token_prefix: string; client_id: string; service_scope: string; message: string; } export async function listTokens(params?: { client_id?: string; status?: string; service_scope?: string; }) { const { data } = await api.get('/tokens', { params }); return data as { total: number; tokens: TokenRow[] }; } export async function createToken(payload: TokenCreate) { const { data } = await api.post('/tokens', payload); return data as CreateResult; } export async function revokeToken(token_id: number, reason?: string) { const { data } = await api.put(`/tokens/${token_id}/revoke`, { reason }); return data; } export async function enableToken(token_id: number) { const { data } = await api.put(`/tokens/${token_id}/enable`); return data; } export async function deleteToken(token_id: number) { const { data } = await api.delete(`/tokens/${token_id}`); return data; } export async function updateToken( token_id: number, payload: { description?: string; expires_at?: string | null }, ) { const { data } = await api.patch(`/tokens/${token_id}`, payload); return data; } export async function tokenLogs(token_id: number) { const { data } = await api.get(`/tokens/${token_id}/logs`); return data as { total: number; logs: Array<{ log_id: number; event: string; service: string | null; client_ip: string | null; occurred_at: string | null; detail: unknown; }>; }; } export async function getStats() { const { data } = await api.get('/stats'); return data as { total: number; active: number; revoked: number; by_scope: Record; calls_24h: number; clients_24h: number; recent: Array<{ token_prefix: string; client_id: string; service: string | null; last_used_at: string | null; }>; }; } // ==================== MCP 服务管理 ==================== export interface ServiceRow { service_id: number; service_name: string; service_url: string; api_key: string; description: string | null; status: string; created_at: string | null; created_by: string; revoked_at: string | null; last_used_at: string | null; } export interface ServiceCreate { service_name: string; service_url: string; description?: string; } export interface ServiceCreateResult { api_key: string; service_id: number; service_name: string; message: string; } export async function listServices(params?: { status?: string }) { const { data } = await api.get('/services', { params }); return data as { total: number; services: ServiceRow[] }; } export async function registerService(payload: ServiceCreate) { const { data } = await api.post('/services', payload); return data as ServiceCreateResult; } export async function revokeService(service_id: number) { const { data } = await api.patch(`/services/${service_id}/revoke`); return data; } export async function enableService(service_id: number) { const { data } = await api.patch(`/services/${service_id}/enable`); return data; } export async function deleteService(service_id: number) { const { data } = await api.delete(`/services/${service_id}`); return data; }