Skip to content

Describe the undocumented fields Confluence returns - #157

Merged
MrRefactoring merged 4 commits into
masterfrom
develop
Jul 21, 2026
Merged

Describe the undocumented fields Confluence returns#157
MrRefactoring merged 4 commits into
masterfrom
develop

Conversation

@MrRefactoring

Copy link
Copy Markdown
Owner

Promotes the schema-drift work to master for the next release.

What's here

  • Describe the undocumented fields Confluence returns. The audit shipped last release found 161 undocumented fields across 93 endpoints — keys the API sends at runtime that the published types hid. This adds 154 of them into the types; the remaining 7 sit behind inline or collection schemas and are tracked separately (the nightly audit keeps reporting them). All additions are optional and additive: nothing that used to type-check stops doing so, runtime validation is unchanged, and no field is renamed or removed.

  • Changeset describing the above for the changelog, so the improvement is visible to consumers rather than folding silently into the release.

  • CI: create the release tag the changesets action misses under pnpm. changesets/action only tags and releases packages it detects as published, and it detects them by grepping the publish command's stdout for the New tag: lines that only changeset publish prints — never pnpm publish. So the last publish uploaded to npm but left no tag, and v3.0.0 had to be tagged by hand. A follow-up step now creates the tag and GitHub release itself, without touching the known-good pnpm publish --provenance command. It tells the version-PR path from the publish path by whether changesets remain, and is idempotent — a re-run cannot double-tag.

Release impact

Once merged, the release workflow updates the open Version Packages PR to 3.0.1, folding in both the audit changeset and this one. Merging that PR publishes 3.0.1 — and with this fix, it will finally carry its own v3.0.1 tag and GitHub release.

Closes the uniform half of what the schema audit found: 161 -> 83
undocumented fields, 93 -> 50 endpoints, with the suite still passing.

The `_links` group is gone entirely, and it was the bulk — 61 fields,
57% of all occurrences. v1 declared its links object with no properties
at all while using it for every entity, so `_links.webui` existed at
runtime and nowhere in the types. Now it is typed.

`version.ncsStepVersion` and `version.contributorIds` follow, along with
the `_expandable` keys Confluence has grown since the spec was written.

Types are what the API actually returned. `ncsStepVersion` is nullable
because responses came back null; `contributorIds` keeps an open element
type because every array observed was empty, and a guessed element type
would read as breakage rather than as drift.

79 fields remain, with no shape in common — `ari`, `operations`, the
`container` group, user fields like `locale`. Each needs deciding which
schema owns it, so they are a separate pass.
161 undocumented fields across 93 endpoints down to 7 across 5, with the
suite passing 493/493.

This is the long tail the first pass deliberately left: fields with no
shape in common, each needing a decision about which schema owns it.

`Container` turned out to be a second empty schema, like the links one
before it — declared with no properties at all while naming the parent
of every piece of content. Ten fields, including its own `_links`.

The rest are one-offs: `ari` and `base64EncodedAri`, `accountStatus` and
`locale` across the three separate user schemas that each lag
differently, `resolutionStatus` on comments, `operations` and
`properties` on the newer v2 entities.

Seven remain. Each sits either behind an inline response schema with no
name to target, or behind a collection whose item schema differs from
the single-entity one — both want a proper look rather than a guess, and
the audit will keep reporting them until they get one.
@MrRefactoring
MrRefactoring merged commit ce62e61 into master Jul 21, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant