Repository navigation
docs(api-reference): daily api-review 2026-10-23 — incident labels, invite schedule_id, reorder example - #1128
Open
flashduty[bot] wants to merge 1 commit into
Open
flashduty[bot] wants to merge 1 commit into
flashduty[bot] wants to merge 1 commit into
Conversation
…nvite schedule_id, reorder example Baseline docs main fb16440 (2026-10-23T06:31:16Z); public surface re-verified against fc-pgy registry (385 auth=all rows, non /event/push/) and every implementation repo at origin/main. - on-call: POST /incident/create accepts `labels` (fc-event c85709d1f). - platform: POST /member/invite accepts `schedule_id` (fc-pgy f91ce88b). - on-call: POST /channel/escalate/rule/reorder gained the request example the lint gate requires; the operation became public in fc-pgy 67e776e8 (Auth jwt -> all). - docs.json: regenerate the bare-path redirect for /channel/escalate/rule/reorder, which was left stale when the page was added in #1126 (scripts/api_path_redirects.py --check failed on main before this commit). No operations added or removed (384 documented = 385 public rows minus the unresolved POST /channel/incident/daily-counts).
This branch has not been deployed
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.
Daily api-review (
--mode generate --scope all --auto). Baseline docsmainfb16440 (2026-10-23T06:31:16Z). The public surface was re-verified againstfc-pgylogic/api/api_test.goat 67e776e8 (385auth=allrows outside/event/push/) and every implementation repo atorigin/main.Operation changes per module
Documented operations stay at 384 (385 public registry rows minus the one unresolved row below), so
docs.jsonnavigation and bothapi-catalog.mdxindexes need no new rows — the path-coverage check reportsnonefor all five modules in nav and in both catalogs.What changed and the Go evidence
on-call ·
POST /incident/creategainslabels—fc-eventc85709d1f,cmd/server/controller/incident/action.go:createInput.Labels map[string]string \json:"labels"`. Constraints taken from the handler, not guessed:structs.ValidateLabelCountrejects more than 50 labels,structs.NormalizeLabelsdrops blank values, rewrites keys throughLabelFormat(^[a-zA-Z_][a-zA-Z0-9_]*$, other characters become_) and truncates values atmaxLenOfLabel= 8 KiB. HencemaxProperties: 50` and the normalization wording. Also added to the request example.platform ·
POST /member/invitegainsschedule_id—fc-pgyf91ce88b,cmd/server/controller/member/member.go:ScheduleID uint64 \json:"schedule_id,omitempty"`. Behaviour fromlogic/invite/schedule.go: the schedule is remembered at invite time and the join runs as the inviter, so the caller must be allowed to edit that schedule; a deleted schedule or one with no joinable layer is skipped quietly (permanentJoinMarker). Also added to the request example (5789640530410`, the schedule ID already used elsewhere in the reference).on-call ·
POST /channel/escalate/rule/reordergains its request-body example — the operation became public whenfc-pgy67e776e8flipped its registry rowAuthfromjwttoall.scripts/lint_openapi.pyfailed withmissing-exampleon all four files that carry the operation. Note: open PR docs(api): add request body example for escalation rule reorder #1127 ("docs(api): add request body example for escalation rule reorder") fixes the same four spots with different ID values; this PR is self-contained and green, so if both land, take either set — if docs(api): add request body example for escalation rule reorder #1127 merges first this branch needs a trivial rebase on those four hunks, otherwise docs(api): add request body example for escalation rule reorder #1127 can be closed as superseded.docs.json: one regenerated bare-path redirect for/channel/escalate/rule/reorder. This is the third surface that a new operation must reach:scripts/api_path_redirects.py --checkwas already failing onmainbecause the page was added in docs(api): add escalation rule reorder endpoint #1126 without re-running the script. That is also why docs(api): add request body example for escalation rule reorder #1127's lint job is red today — the check runs in the same workflow. The entry was produced by the in-repo script (not hand-appended, so the ordering stays canonical) and--checknow exits 0.Unresolved (not written into any spec)
POST /channel/incident/daily-counts(channel:read:incidentDailyCounts,Auth: all): still no handler or route onfc-eventorigin/main— the controller exists only onorigin/dev. Unchanged from previous rounds.Examples
This environment cannot call the dev API (no way to reference the credential env var directly), so every example added or touched here is constructed from the schema and the handler, with realistic values rather than placeholders. Nothing in this PR was captured from a live response.
Deliberately not changed (recorded for a human)
DutyErrorsplit vs consolidated: the consolidated copies carryreasonunder thex-flashduty-preserve-absencehand-edit marker, the split copies do not. Left alone per the standing convention.safari's threeartifact/galleryoperations andmonitors'POST /monit/rule/moveuse Chinese values inresponses.200examples (张伟,移动成功) where the EN file has English ones. Introduced by4eaf43dfand kept since; the bilingual contract says examples carry the same values in both languages. Fixing it is a pure text revert of that pass, so it needs a maintainer's call rather than this round.AlertRule(referenced only byRuleImportRequest, whose/monit/rule/bundle/import/*rows arejwt),AlertEvent(the/event/push/payload) andMetricProbe*-style leftovers have no path referencing them.AlertRulealso lacksinvestigation_targets, whichmodel/alert_rule.goserializes — correct as long as no public operation returns it, so it was not touched. Garbage-collecting them belongs to a regeneration of those scopes.AQps/AQpmgap that needs a policy decision before a bulk rewrite.Verification
python3 -c "import json; json.load(open(...))"on all six spec files plusdocs.json— all parse.python3 scripts/lint_openapi.py→OK: 12 spec files, no violations.python3 scripts/api_path_redirects.py --check→ exit 0 (was exit 1 onmain).labels,schedule_id, the reorder example, its request-example key); no key was removed, reordered or rewritten, and the pre-existing key order of each file is preserved as a subsequence.git difftotals 104 insertions / 4 deletions across 7 files, and the deletions are only the four lines that had to gain a trailing comma.mint broken-linkscould not be run:mintis not installed in this environment. No path, tag or nav entry changed, so no new link can be produced.