Show the API reference with Redoc
Replace the hand-built reference page with Redoc rendering the generated OpenAPI document. The bundle is fetched by package.nix (pinned hash) and served from the UI's own address; only that page gets a style nonce and worker-src blob: in its CSP. The spec now explains authentication, saved-not-applied, ETags (If-Match, 409) and errors, documents the ETag header, gives each operation a curl sample, and no longer names MCP tools. Area GETs no longer emit "parameters": null, which Redoc could not render. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AeFqV9dZrK6nipHkPfyM4F
This commit is contained in:
@@ -223,7 +223,7 @@ func areaPaths(schema map[string]any) map[string]any {
|
||||
path := "/api/v1/settings/" + strings.Join(parts, "/")
|
||||
node := unwrapNullable(s)
|
||||
id := strings.NewReplacer("/", "_", "{", "", "}", "").Replace(strings.Join(parts, "_"))
|
||||
var params []any
|
||||
params := []any{}
|
||||
for _, p := range parts {
|
||||
if p == "{name}" {
|
||||
params = append(params, map[string]any{"name": "name", "in": "path", "required": true, "schema": map[string]any{"type": "string"}, "description": "The name of the entry (the key in the map)."})
|
||||
@@ -237,13 +237,13 @@ func areaPaths(schema map[string]any) map[string]any {
|
||||
}
|
||||
return m
|
||||
}
|
||||
ifMatch := map[string]any{"name": "If-Match", "in": "header", "required": true, "schema": map[string]any{"type": "string"}, "description": "The ETag of the settings (GET /api/v1/settings or any area)."}
|
||||
ifMatch := map[string]any{"name": "If-Match", "in": "header", "required": true, "schema": map[string]any{"type": "string"}, "description": "The ETag from the last read of the settings or of any part of them (the `ETag` header). The edit is refused with 409 if the settings changed since."}
|
||||
jsonBody := func(sch map[string]any) map[string]any {
|
||||
return map[string]any{"required": true, "content": map[string]any{"application/json": map[string]any{"schema": sch}}}
|
||||
}
|
||||
ok200 := func(desc string, sch map[string]any) map[string]any {
|
||||
r := errs("400", "404", "409")
|
||||
r["200"] = map[string]any{"description": desc, "content": map[string]any{"application/json": map[string]any{"schema": sch}}}
|
||||
r["200"] = map[string]any{"description": desc, "headers": etagHeader, "content": map[string]any{"application/json": map[string]any{"schema": sch}}}
|
||||
return r
|
||||
}
|
||||
sec := []any{map[string]any{"bearer": []string{}}}
|
||||
|
||||
Reference in New Issue
Block a user