import { Link, useParams } from "react-router"; import type { Endpoint, ExecutionRow, Project, Variable } from "../api"; import { useFetch, fmtDate } from "../hooks"; import { Badge, ErrorBox, KV, Loading, Td } from "../components/ui"; import { EndpointRow } from "../components/shared"; type E = Endpoint & { api_version_id: string; version: string; api_id: string; api_name: string; base_url: string | null; variables: Variable[]; executions: ExecutionRow[] }; export default function EndpointDetail() { const { id } = useParams(); const { data, error, loading } = useFetch(`endpoints/${id}`); const projects = useFetch<{ projects: Project[] }>("projects"); if (loading) return ; if (error) return ; if (!data) return null; return (

{data.method} {data.path}

{data.api_name}], ["Version", {data.version}], ["Operation", data.operation_id], ["Base URL", {data.base_url}], ["Summary", data.summary ?? "—"], ["Description", data.description ?? "—"], ["Evidence", data.inferred ? : ]]} />
({ slug: p.slug, name: `${p.name} (${p.policy_mode})` })) ?? [{ slug: "default", name: "default" }]} />

Variables

{data.variables.length ? {data.variables.map((v) => )}
NamePathTypeUnit
{v.name}{v.json_path}{v.data_type}{v.unit ?? "—"}
: none}

Recent executions

{data.executions.length ? data.executions.map((e) =>
{fmtDate(e.created_at)} {e.status_code ?? "—"} · {e.duration_ms ?? "—"} ms
) : none}
); }