Files
Ilker ManapandClaude Opus 5.5 fd3c7bda32
CI / test (push) Failing after 6m12s
The client API described in OpenAPI, and both APIs in Swagger UI
/v1/openapi.json is the API clients use — OpenAI's endpoints, Anthropic's,
and what llmgw adds — in OpenAPI 3.1, generated from internal/clientapi's
route table by the generator the admin API's document comes from, now
told each document's title, server, token and error. A test reads the
router's mux.HandleFunc calls and refuses a route described and not
mounted, or mounted and not described. Asked for before there is a key,
so it needs none.

/docs/api shows it in Swagger UI 5.33.1 (Apache 2.0, served from the
gateway as the page's policy requires): Authorize takes a key, Try it out
sends to this gateway. Staff are offered the admin API's document too,
from /docs/api/admin.json, which nobody else is given.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-10 20:22:48 +02:00

66 lines
2.3 KiB
HTML

{{/* The docs portal: the manual the binary carries, as a website. No script
at all — a sidebar of links and a rendered document need none, and the
policy then has nothing to allow. */}}
{{define "docs"}}<!doctype html>
<html lang="{{lang}}"><head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>{{if .Doc}}{{.Doc.Title}} · {{end}}{{t "docs.title"}}</title>
<meta name="description" content="{{t "docs.description"}}">
<link rel="stylesheet" href="{{stylesheet}}">
<link rel="stylesheet" href="{{asset "docs.css"}}">
</head><body><div class="wrap">
<header class="docs-head">
<p class="docs-brand"><a href="/docs">{{t "docs.title"}}</a></p>
{{if .SignedIn}}{{template "nav" .Nav}}{{else}}
<nav class="menu" aria-label="{{t "nav.aria"}}">
<a href="/">{{t "docs.this_gateway"}}</a>
<a href="/docs"{{if not .Doc}} aria-current="page"{{end}}>{{t "nav.docs"}}</a>
<a href="/about">{{t "docs.about"}}</a>
{{if .SignIn}}<a href="/login">{{t "landing.sign_in"}}</a>{{end}}
</nav>{{end}}
</header>
<div class="docs">
<aside class="docs-side" aria-label="{{t "docs.documents"}}">
<ul>
<li><a href="/docs/api">{{t "docs.api_title"}}</a></li>
{{range .Docs}}
<li><a href="/docs/{{.Key}}"{{if and $.Doc (eq $.Doc.Key .Key)}} aria-current="page"{{end}}>{{.Title}}</a>
{{- if and $.Doc (eq $.Doc.Key .Key) $.Doc.Sections}}
<ul class="sections">{{range $.Doc.Sections}}
<li><a href="#{{.ID}}">{{.Title}}</a></li>{{end}}
</ul>
{{- end}}</li>
{{end}}
</ul>
</aside>
<main class="doc">
{{if .Doc}}
{{.Doc.Body}}
{{else}}
<h1>{{t "docs.title"}}</h1>
<p class="sub">{{th "docs.sub"}}</p>
{{with .Clients}}
<section class="docs-lead">
<h2>{{t "docs.from_code"}}</h2>
<p>{{th "docs.from_code_text" .Key .Title}}</p>
</section>
{{end}}
<p><a href="/docs/api">{{t "docs.api_link"}}</a></p>
<h2>{{t "docs.every"}}</h2>
<ul class="docs-index">
{{range .Docs}} <li><a href="/docs/{{.Key}}">{{.Title}}</a></li>
{{end}}</ul>
<p class="note">{{t "docs.general"}}</p>
{{with t "docs.english_only"}}<p class="note">{{.}}</p>{{end}}
{{end}}
</main>
</div>
<footer><span><a href="/about">llmgw {{.Version}}</a></span><span><a href="/docs">{{t "docs.footer"}}</a></span>{{template "langs"}}</footer>
</div></body></html>{{end}}