Skip to content

feat(spec): absorb Google Health API Discovery revision 20261113 - #128

Merged
kkdev92 merged 1 commit into
mainfrom
feat/spec-20261113
Nov 14, 2026
Merged

kkdev92 merged 1 commit into
mainfrom
feat/spec-20261113

Conversation

@kkdev92

@kkdev92 kkdev92 commented Nov 14, 2026

Copy link
Copy Markdown
Owner

Closes #127.

Absorbs Google Health API Discovery revision 20261113. OvulationTest gains an optional TestType, its result gains OwnMethod, and Symptoms gains three values; no operation, schema, scope or parameter changed.

Why

spec-check reported on #127 that the live Discovery document moved from 20261102, with five additive changes: OvulationTest.testType added, OWN_METHOD added to OvulationTest.result, and LIMBS_SWELLING, FACE_SWELLING and NASAL_CONGESTION added to Symptoms.symptoms. The issue was opened at revision 20261111; the live document is now 20261113, and comparing the committed snapshot with it leaf by leaf finds the same five changes and nothing else. Until the snapshot moves, a testType in a response is dropped as an unknown property, and a request cannot carry one.

What changed

  • OvulationTest.TestType. A new optional property, typed as the new open enum OvulationTest.Types.TestType with TestTypeUnspecified, Strip, Digital and OwnMethod.
  • Named values on existing open enums. OvulationTest.Types.Result.OwnMethod, for an ovulation day the user identified by their own method rather than with a test kit, and Symptoms.Types.Symptoms.LimbsSwelling, FaceSwelling and NasalCongestion. Being open enums, they already round-tripped these strings; now they have names.
  • Serializer registration. The generated HealthDataJsonContext registers the new enum, which adds OvulationTestTestType and NullableOvulationTestTestType. With the members above, that is the whole change to the approved public API surface.
  • Where it is documented. Discovery is the only source so far. The REST reference for the data point resource (last updated 2026-10-01) and the RPC reference (2026-10-29) list the existing values of both enums but none of the new ones, the Women's Health guide (2026-11-11) shows no testType in its examples, and the release notes end at an entry for 2026-10-14.
  • Documentation. The documents that name the current revision now name 20261113: the README, the NuGet package README, and the architecture, authentication, code-generation, compatibility, data-points, operations and references pages. The README and docs/code-generation.md now count 59 open enums. The CHANGELOG [Unreleased] section gains an Added entry, and its Changed entry names the new revision.
  • Scope cross-check. Redone against the new revision, and it still holds: the Scopes guide (updated 2026-11-11) lists nutrition.readonly but neither the three Women's Health .readonly scopes nor location.writeonly; the users.getIdentity page still lists eleven scopes; the data type page still documents create, update and batchDelete only for the Women's Health types; and the dailyRollUp pages still show no response page token. comparedOn in semantics.json and the verification dates in the documentation move with it.

Verification

  • codegen generate accepted the new snapshot with the existing semantics.json and regenerated all 236 files. Outside the provenance header, the code that changes is the revision constants, OvulationTest, its Types container, Symptoms.Types.Symptoms and the serializer context. codegen verify confirms the committed sources match.
  • The old and new Discovery documents were compared leaf by leaf: the five changes and the revision are the only differences, and nothing was removed.
  • A new test reads a testType and a result of OWN_METHOD from JSON and writes testType back. Renaming the generated property's wire name fails it; restoring the file passes it.
  • GeneratorTests checked the revision in the generated headers and counted 58 open enums; both expectations move. The public API surface was re-approved, and its diff is the members listed above.
  • dotnet build -c Release reports no warnings, dotnet test passes with the live-API smoke test skipped for want of a credential, and dotnet format --verify-no-changes is clean.
  • eng/check-verified-facts.py reports no drift against the per-method reference pages.

Not checked:

  • The live service was not called, so whether it accepts and returns testType and the new values has not been observed.
  • The packages were not packed or tested locally; the Category=Package tests and the Native AOT checks are left to CI.

🤖 Generated with Claude Code

The contract moved from revision 20261102 to 20261113. Every change is
additive and sits in two Women's Health schemas. OvulationTest gains an
optional testType, an enum of TEST_TYPE_UNSPECIFIED, STRIP, DIGITAL and
OWN_METHOD, and its result gains OWN_METHOD, for an ovulation day the
user identified by their own method rather than with a test kit.
Symptoms gains LIMBS_SWELLING, FACE_SWELLING and NASAL_CONGESTION. No
operation, schema, scope or parameter changed, and no existing
description moved.

Generation took the new snapshot as it was. OvulationTest now carries
TestType, typed as the new open enum OvulationTest.Types.TestType, and
Result and Symptoms gain named values for strings they already
round-tripped as unrecognised ones. The generated serializer context
registers the new enum, which adds two type-information properties to
HealthDataJsonContext; the approved public API surface records all of
it. Until now a testType in a response was dropped as an unknown
property, and a request could not carry one.

Google's reference pages do not document the change yet. The REST page
for the data point resource, last updated on 2026-10-01, and the RPC
reference, last updated on 2026-10-29, list the existing values of both
enums but neither testType nor any of the four new values. The Women's
Health guide, updated on 2026-11-11, shows no testType in its examples,
and the release notes end at an entry for 2026-10-14.

The scope cross-check was redone. Discovery declares the same scopes and
parameters on every operation as before, and eng/check-verified-facts.py
reports no drift against the reference pages it reads. The Scopes guide,
updated on 2026-11-11, still lists nutrition.readonly but not the three
Women's Health readonly scopes or location.writeonly; the
users.getIdentity page still lists eleven scopes and was last updated on
2026-10-01; the data type page still documents create, update and
batchDelete only for the Women's Health types; and the dailyRollUp pages
still show no response page token. The documents that state the current
revision or the open enum count follow, and so do the verification
dates.

A new test reads testType and the new result value from JSON and writes
testType back. Renaming the generated property's wire name fails it, and
restoring the file passes it. GeneratorTests checked the revision in the
generated headers and counted 58 open enums, so both expectations move.

Closes #127.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kkdev92
kkdev92 merged commit 95ce81a into main Nov 14, 2026
10 checks passed
@kkdev92
kkdev92 deleted the feat/spec-20261113 branch November 14, 2026 07:51
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.

Google Health API contract change detected

1 participant