Repository navigation
docs(api-reference): document the 9 RUM custom dashboard endpoints - #1077
Merged
Merged
Conversation
Add the nine app_key-callable /rum/dashboard/* operations generated from fc-rum main (cmd/server/controller/dashboard + types/dashboard), and reconcile the RUM nav group and both API catalogs.
… and examples Fix write rate limits, decimals range, restore/delete revision semantics and example revisions, list query matching, query argument requirements, and panel/variable validation limits. Document 404/409/410/413/422 responses, align the zh pages with the zh template and the console term, and add redirects for the new dashboard paths.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
api-review —
--mode generate --scope all --autoBaseline:
flashduty-docs@08f8d09a(docsorigin/main), sources read from each repo'sorigin/main(
fc-pgy@051165ca,fc-event@c86657206,fc-oncall@a7bd73d,fc-rum@6755d73,fc-statuspage@cd4aa20,monit-webapi@d73080d,monit-edge@59c212a,fc-datasource@c533b9e,go-pkg@fe26f4e, plusfc-safari@fb7df050which--scope allalso needs).Operation changes per module
safari)The nine new operations are the RUM custom-dashboard console API, registered in the pgy registry
with
Auth: "all"but never documented:POST /rum/dashboard/{create,get,list,update,delete,restore,trash/list,revisions/list,revisions/get}Handlers:
fc-rum@origin/main→cmd/server/controller/dashboard/dashboard.go, routes incmd/server/routes.go:65-75(dashboardG := restSrv.Engine.Group("/rum/dashboard/", cmd.BackAuth())).Types:
types/dashboard/contract.go,variants.go,validate.go; permission factor setrumDashboard:write:{create,update,delete,restore}+rumDashboard:read:trashList(
fc-pgy/logic/permission/permission_test.go, entry id 2012 "Dashboards Manage" / class "Insights",scope
rum).New tag/folder
RUM/Dashboards(RUM/仪表盘), new nav subgroupDashboards/仪表盘insertedafter the RUM Data query group in both language trees, 50 new schemas
(
RumDashboard*), and rows in bothapi-catalog.mdxfiles.Registry ↔ docs reconciliation
380 public registry rows (
auth == "all", non-/event/push/) vs 370 documented operations beforethis round. The gap was exactly ten paths:
/rum/dashboard/*above — added by this PR;POST /channel/incident/daily-counts— still unresolved, see below.After this PR: 379 documented operations, 380 registry rows, difference = the one unresolved path.
Unresolved (not written to any spec)
POST /channel/incident/daily-counts(channel:read:incidentDailyCounts,Auth: "all").No handler and no route on
fc-event@origin/main(git grepovercmd/**,logic/**returnsnothing);
cmd/server/routes.goonorigin/devstill carries the route. Same finding as the2026-10-12/10-15 rounds — needs a handler shipped or the registry
Authchanged.Recorded, deliberately not changed
/monit/folder/{health,create,update,delete,move}moved fromAuth: "jwt"toAuth: "all"inthis window (
fc-pgy@e80eec47). All five are already documented, so no spec change is needed —noted because the surface they belong to is now app_key-callable.
/monit/dashboard/panel/{preview,run}account quota changedAQps: 16 → 32in the same commit.The published rate-limit cells are a separate, systemic caliber question (147 mismatches against
the registry as of the 2026-10-12 sweep) and are not fixed piecemeal here.
DutyErrordiffers between the split specs and the consolidated copies (consolidated carriesreason, splits do not). That is a hand edit markedx-flashduty-preserve-absence: true; leftuntouched per the standing convention.
components.responsesin the safari split keep their safari-specificBadRequestexample(
skill_id); intentional customization, unchanged.Pre-existing count drift corrected in both catalogs
en/zhapi-catalog.mdxdeclared 372 endpoints, while the specs held 370. The AI SREaccordion says 55 while its spec and its own table both have 53 rows (
/safari/*specs contain 53operations, all 53 listed). This PR sets AI SRE to 53, RUM 41 → 50, and the total to 379.
Examples
api-dev.flashcat.cloudis not reachable from this environment (noFLASHDUTY_APP_KEY), so allnine request and response examples are constructed from the Go types: canonical UUIDv7 IDs,
qLpu24Dz4CAzWsESPbJYWAreused from the existing RUM application examples, Unix-millisecondtimestamps, and a coherent two-panel dashboard body shared by create/update/get/revisions. They are
schema-valid (required fields present, enums honoured) but not captured from a live call.
Diff discipline
git show HEAD:<path>) after verifying thatjson.dumps(json.loads(blob), ensure_ascii=False, indent=2) + "\n"reproduces the blob byte forbyte (trailing newline verified per file), so only intended changes can appear.
paths, 1 added tag — no removals, no changes to existing keys, values or ordering.
git diff --diff-algorithm=patience(alsohistogram/minimal) shows3876 / 0per spec file —pure insertions. The default Myers diff mis-aligns this file into ~11k deleted lines; please
review with
--diff-algorithm=patience.docs.json: +30 lines, two nav subgroups only; no reordering.budget does not apply.
Validation
json.load),paths50/50/379/379,schemas153/153/881/881.description/x-enumDescriptionsdiffer, as intended). Examples are identical in both languages.$ref(schemas or responses) in any of the four files.docs.jsonand from bothapi-catalog.mdxfiles(
NAV MISSING: none,catalog missing: none).Unix timestamp in milliseconds(created_at,updated_at,deleted_at, revisioncreated_at); duration fields (min_step_seconds) deliberately do not.mint broken-linkscould not be run (mintis not installed here). Only existing paths wereedited and new links point at generated operationId slugs; the nav/catalog coverage check above
is the substitute evidence.
Skill gap worth fixing
skills/api-review/mapping.yamlhas norum/dashboardscope, so a strict--scope allrun mapsthese nine rows to no module and silently skips them (same failure mode as the
on-call/calendarprovider mismatch recorded on 2026-10-15). This run used a local scope definition
(provider
rum, repofc-rum, pathscontroller/dashboard,logic/dashboard,types/dashboard,tag
RUM/Dashboards). The mapping file is not modified by this PR — it needs an owner decision.