import { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { Card, Col, ConfigProvider, Layout, Row, Typography } from 'antd'; import SwaggerUI from 'swagger-ui-react'; import 'swagger-ui-react/swagger-ui.css'; import { useTheme } from '@/hooks/useTheme'; import AppSidebar from '@/layouts/AppSidebar'; import { EXAMPLES } from '@/generated/examples'; import { buildWebSocketEvents } from './websocket-events'; import './ApiDocsPage.css'; const basePath = window.X_UI_BASE_PATH || ''; const openApiUrl = `${basePath}panel/api/openapi.json`; const websocketEvents = buildWebSocketEvents(EXAMPLES); export default function ApiDocsPage() { const { isDark, isUltra, antdThemeConfig } = useTheme(); const { t } = useTranslation(); const pageClass = useMemo(() => { const classes = ['api-docs-page']; if (isDark) classes.push('is-dark'); if (isUltra) classes.push('is-ultra'); return classes.join(' '); }, [isDark, isUltra]); return (
WebSocket events After the cookie-authenticated GET /ws{' '} upgrade, every server message uses{' '} {'{ type, payload, time }'}. The time value is Unix milliseconds. {websocketEvents.map((event) => ( {event.type}}> {event.summary}
{JSON.stringify(event.example, null, 2)}
))}
); }