Skip to content

schemas(reporting-webhook, auth-scheme): deprecate HMAC-SHA256 recommendation, point at RFC 9421#4273

Closed
EvgenyAndroid wants to merge 1 commit intoadcontextprotocol:mainfrom
EvgenyAndroid:4270-deprecate-hmac-recommendation-in-schemas
Closed

schemas(reporting-webhook, auth-scheme): deprecate HMAC-SHA256 recommendation, point at RFC 9421#4273
EvgenyAndroid wants to merge 1 commit intoadcontextprotocol:mainfrom
EvgenyAndroid:4270-deprecate-hmac-recommendation-in-schemas

Conversation

@EvgenyAndroid
Copy link
Copy Markdown

First pass on the schema-description sub-item of #4270 (storyboard / SDK-skill on-ramp inventory). Surgical, source-only, no normative change — mirrors precedent #2506.

Why

push-notification-config.json's authentication field was already updated in #2506 to mark Bearer / HMAC-SHA256 as the deprecated legacy fallback removed in AdCP 4.0, with RFC 9421 as the default. Two adjacent schemas were left out of that pass and still steer new buyers toward the HMAC on-ramp:

  • static/schemas/source/core/reporting-webhook.jsonauthentication.schemes description literally says HMAC-SHA256 is "recommended for production". Contradicts push-notification-config.json. Active mis-direction for any new buyer reading the schema in isolation.
  • static/schemas/source/enums/auth-scheme.json — enum-level description doesn't mention deprecation at all. SDK authors loading the enum without cross-referencing push-notification-config.json have no signal these are legacy options.

What this PR does

  1. reporting-webhook.json (1 line): replace "['HMAC-SHA256'] for signature verification (recommended for production)" with the same "both deprecated, removed in 4.0, see push-notification-config" framing already used in push-notification-config.json.
  2. auth-scheme.json (1 line): extend the description to state these enum values are scoped to the legacy authentication block and point readers at the RFC 9421 default.
  3. .changeset/4270-deprecate-hmac-recommendation-in-schemas.md: changeset entry.

No dist/ regen; static/schemas/source/ is the source of truth and build:schemas regenerates dist/ at release.

What's NOT in this PR (deliberately scoped out — maintainer call)

reporting-webhook.json has authentication in required: [...]. That's a structural asymmetry vs push-notification-config.json (where the block is optional and absence selects 9421). Today there is no opt-in path to RFC 9421 for reporting webhooks — every reporting buyer is forced through the legacy auth block.

That's a normative question, not a description fix, so it stays in #4270 for triage. If the spec intends symmetry with push-notification-config.json, follow-up PR drops \"authentication\" from the required array and mirrors push-notification-config's framing on the field. Happy to take that as a follow-up if maintainers triage favorably.

Test plan

  • static/schemas/source/core/reporting-webhook.json parses (JSON syntactically valid, no schema shape change)
  • static/schemas/source/enums/auth-scheme.json parses
  • No dist/ files modified — release build regenerates from source
  • CI: schema-validation, json-schema-validation, lint-schema-links (will run on PR)

Cross-references

I have read the IPR Policy

…endation, point at RFC 9421

Two schema-description-only edits, no normative change. Surfaces existing
push-notification-config.json framing at adjacent schemas where SDK authors
actually read them.

reporting-webhook.json — the authentication.schemes description previously
said HMAC-SHA256 was "recommended for production", contradicting
push-notification-config.json's framing (both Bearer + HMAC-SHA256 are
deprecated legacy fallback, removed in AdCP 4.0). New buyers reading the
schema in isolation were being steered toward the legacy on-ramp. Description
now mirrors push-notification-config — both schemes deprecated, removed in
4.0, see push-notification-config for the precedence model.

auth-scheme.json — the enum's description was silent about deprecation. SDK
authors loading the enum in isolation had no signal these were legacy
options. Description now states the values are scoped to the legacy
authentication block and points readers at the RFC 9421 default.

Out of scope (surfaced for maintainer triage in adcontextprotocol#4270): reporting-webhook
still has authentication in `required`, which means reporting webhooks have
no opt-in path to RFC 9421 today. Mirroring push-notification-config's
structural shape (auth block optional, omitted = 9421 default) is a
separate normative question.

Closes the schema-description sub-item of adcontextprotocol#4270.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@EvgenyAndroid
Copy link
Copy Markdown
Author

I have read the IPR Policy

@aao-ipr-bot
Copy link
Copy Markdown

aao-ipr-bot Bot commented May 8, 2026

IPR Policy Agreement Required

@EvgenyAndroid — thanks for the contribution. Before this PR can be merged, the AgenticAdvertising.Org IPR Policy requires your agreement.

To agree, post a new comment on this PR with the exact phrase:

I have read the IPR Policy

Your signature is recorded once and covers all contributions to AAO repositories. See signatures/README.md for what gets recorded and why.

@EvgenyAndroid
Copy link
Copy Markdown
Author

I have read the IPR Policy

@aao-ipr-bot
Copy link
Copy Markdown

aao-ipr-bot Bot commented May 8, 2026

IPR Policy — signed

Thanks, @EvgenyAndroid. Your agreement to the IPR Policy is recorded at signatures/ipr-signatures.json and applies to all AAO repositories.

@EvgenyAndroid
Copy link
Copy Markdown
Author

Deferring to #4271 per @bokelley's triage comment on #4270. #4271 is atomic, targets 3.0.x correctly (mine targeted main), and the parent authentication.description rewrite there resolves the structural question I deferred — "required in AdCP 3.x; the requirement is removed in AdCP 4.0 when the default RFC 9421 path becomes the only path" — which is the right answer. Closing this PR.

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