docs(api): daily audit 2026-09-29 — RUM remote-config error-session switches, channel filter UTF-8 note - #581
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
…ion switches, note channel filter UTF-8 validation
This was referenced Sep 30, 2026
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.
api-review daily audit — 2026-09-29
--mode generate --scope all --auto. Registry baseline:fc-pgy/logic/api/api_test.go@a127bd54— the file is unchanged sincebb995eff(2026-09-26), i.e. no row was added or removed since the 2026-09-28 run. Docs base:b1518a5.Operations changed
No path was added or removed, so
docs.jsonand{en,zh}/openapi/api-catalog.mdxare deliberately untouched (the reconcile step only applies when the operation set changes).1. rum —
RemoteConfigValuesgains two optional switches (schema update)fc-rumtypes/remote_config.gogainedSessionOnErrorandSessionReplayOnError(both*bool,json:"…,omitempty"), merged to main in46ca410/bda5eb0on 2026-09-28. Per the Go doc comments:sessionOnErrorkeeps the sessions the session sample rate did not draw when they report an error (a session that never errors is never stored), and it only affects what that rate missed, so it does nothing alongside a rate of 100;sessionReplayOnErroris the same switch for Session Replay.The switches are reachable from five public operations:
POST /rum/application/remote-config/get(responseconfig.default/config.rules[].set)POST /rum/application/remote-config/update(requestconfig)POST /rum/application/remote-config/preview(requestconfig, responsevalues)POST /rum/application/remote-config/history/list(responseitems[].config)POST /rum/application/remote-config/history/revertBoth are emitted as
"type": ["boolean", "null"], mirroring the nullability form already used by the sibling*int/*stringknobs in the same schema. Optional, nodefault, noenum: the Go tags carry no constraint, and none was invented from the handler logic.2. on-call —
/channel/listfilters are now UTF-8-validated (description update)fc-eventcmd/server/controller/channel/channel.go@4d425894(PR #2411 "channel-list-utf8-query") added a check inlistChannelInput.Validate():queryandchannel_nameare embedded into Mongo queries verbatim, so invalid UTF-8 (for example a GBK-encoded keyword) made the server reject the whole query withLocation51091— which surfaced as a 500 rather than a client error. It is now rejected withInvalidParameter. Description-only change: no OpenAPI keyword expresses UTF-8 validity, so the constraint is stated in prose next to the existing "invalid regex falls back to a literal match" note.Files changed (6)
Verification
python3 -c "import json; json.load(open(path))".api-reference/againstHEAD: exactly 16 changed leaf paths, all intended (/components/schemas/RemoteConfigValues/properties/{sessionOnError,sessionReplayOnError}plus+;ListChannelsRequest.properties.{query,channel_name}.descriptionplus~, in each of the relevant files). Nothing else in any of the 12 non-legacy spec files differs.RemoteConfigValuesandListChannelsRequestare byte-identical (after key sort) between the module split files and the consolidated files.git diffis 64 insertions / 8 deletions.api-reference/openapi.legacy.zh.jsonuntouched (read-only reference).unresolved (2)
POST /channel/incident/daily-counts(registry namechannel:read:incidentDailyCounts) — no handler exists anywhere infc-eventmain (grepped for the path,daily-countsandDailyCounts). Left undocumented rather than guessed, same as the previous round.POST /integration/*rows — public, but no non-hidden module in the skill'smapping.yamlclaims the/integrationprefix, so the generator cannot pick them up; they are already documented by the still-open PR docs(api): daily audit 2026-09-25 — document the new /integration API family #472 and are not duplicated here.Ruled out this round
fc-rumdocs(rum): align Flutter integration with production #227 session error markers (types/datadog/rum.goSampledForError/SampledForErrorReplay,cmd/engine/controller/event/view.go,model/session/session.go): ingest-side only./rum/session-replay/metadatadecodes the event and reads onlyeve.View.InForegroundPeriods, returningtypes.ReplayMetaItem, so no public response schema changes. Verified by readingcmd/server/controller/replay/metadata.go.fc-event#2411: validation-only, covered by change 2 above.Examples
No operation was added, and no 200 response example was re-captured:
FLASHDUTY_APP_KEYis not readable from this environment, so dev-API capture was not possible. The affected operations keep their existing hand-checked examples. The two new switches are intentionally not inserted into theremote-config/updaterequest example — the example is a minimal payload and both switches are optional. Nothing in this diff is a machine-fabricated example value; the only authored prose is the two field descriptions, derived from the Go doc comments, plus the two UTF-8 clauses.How this diff was produced — please read
The documented pipeline (
scripts/generate_openapi.py) could not be run this round. It consumes per-module data files at.api-review/modules/*.json, which are gitignored and not present in the repo, and the team knowledge pack's restore procedure (runbooks/api-review-daily.md) together with its baseline-fidelity patch script (runbooks/api-review-apply-patches.py) are both absent — this is the 9th consecutive round blocked this way. Running the generator without those inputs drops committed paths and aborts onguard_no_path_drop(), so it was not run rather than run unsafely.Instead the edits were applied as a verified minimal diff. Before writing,
json.dumps(obj, indent=2, ensure_ascii=False)was confirmed to reproduce all six files byte-for-byte; after writing, the whole tree was deep-compared againstHEAD(see Verification). The minimum-diff acceptance line is therefore met by construction. A reviewer who wants the change re-derived by the generator should expect it to emit the same two properties from the same Go source.Script used:
/opt/scripts/api-review-20260929-patch.py(dry-run by default,--applyto write).