@adcp/sdk 16.0.0-beta.6 → 16.0.0-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -0
- package/dist/lib/conformance/index.d.mts +2 -0
- package/dist/lib/conformance/index.d.ts +2 -0
- package/dist/lib/conformance/index.js +3 -0
- package/dist/lib/conformance/index.mjs +2 -0
- package/dist/lib/conformance/property-lists.d.mts +14 -0
- package/dist/lib/conformance/property-lists.d.ts +14 -0
- package/dist/lib/conformance/property-lists.js +45 -0
- package/dist/lib/conformance/property-lists.mjs +21 -0
- package/dist/lib/conformance/runConformance.js +20 -1
- package/dist/lib/conformance/runConformance.mjs +20 -1
- package/dist/lib/conformance/types.d.mts +3 -0
- package/dist/lib/conformance/types.d.ts +3 -0
- package/dist/lib/core/SingleAgentClient.d.mts +13 -3
- package/dist/lib/core/SingleAgentClient.d.ts +13 -3
- package/dist/lib/core/SingleAgentClient.js +109 -21
- package/dist/lib/core/SingleAgentClient.mjs +112 -22
- package/dist/lib/core/TaskExecutor.d.mts +1 -0
- package/dist/lib/core/TaskExecutor.d.ts +1 -0
- package/dist/lib/core/TaskExecutor.js +48 -34
- package/dist/lib/core/TaskExecutor.mjs +49 -35
- package/dist/lib/identifiers.d.mts +53 -0
- package/dist/lib/identifiers.d.ts +53 -0
- package/dist/lib/identifiers.js +212 -0
- package/dist/lib/identifiers.mjs +163 -0
- package/dist/lib/identity-3.3/revocation.js +5 -4
- package/dist/lib/identity-3.3/revocation.mjs +5 -4
- package/dist/lib/index.d.mts +3 -1
- package/dist/lib/index.d.ts +3 -1
- package/dist/lib/index.js +2 -0
- package/dist/lib/index.mjs +1 -0
- package/dist/lib/media-buy/index.d.mts +1 -1
- package/dist/lib/media-buy/index.d.ts +1 -1
- package/dist/lib/media-buy/property-policy.d.mts +15 -1
- package/dist/lib/media-buy/property-policy.d.ts +15 -1
- package/dist/lib/media-buy/property-policy.js +135 -3
- package/dist/lib/media-buy/property-policy.mjs +134 -3
- package/dist/lib/registry/index.d.mts +12 -0
- package/dist/lib/registry/index.d.ts +12 -0
- package/dist/lib/registry/index.js +159 -5
- package/dist/lib/registry/index.mjs +156 -4
- package/dist/lib/registry/types.d.mts +23 -0
- package/dist/lib/registry/types.d.ts +23 -0
- package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
- package/dist/lib/server/auth-signature.js +23 -2
- package/dist/lib/server/auth-signature.mjs +26 -2
- package/dist/lib/server/auth.d.mts +6 -0
- package/dist/lib/server/auth.d.ts +6 -0
- package/dist/lib/server/auth.js +6 -0
- package/dist/lib/server/auth.mjs +6 -0
- package/dist/lib/server/create-adcp-server.js +19 -3
- package/dist/lib/server/create-adcp-server.mjs +23 -4
- package/dist/lib/server/decisioning/runtime/from-platform.js +6 -2
- package/dist/lib/server/decisioning/runtime/from-platform.mjs +6 -2
- package/dist/lib/server/decisioning/specialisms/lists.d.mts +4 -4
- package/dist/lib/server/decisioning/specialisms/lists.d.ts +4 -4
- package/dist/lib/server/index.d.mts +3 -0
- package/dist/lib/server/index.d.ts +3 -0
- package/dist/lib/server/index.js +8 -1
- package/dist/lib/server/index.mjs +4 -0
- package/dist/lib/server/property-lists.d.mts +36 -0
- package/dist/lib/server/property-lists.d.ts +36 -0
- package/dist/lib/server/property-lists.js +154 -0
- package/dist/lib/server/property-lists.mjs +129 -0
- package/dist/lib/server/serve.js +2 -1
- package/dist/lib/server/serve.mjs +2 -1
- package/dist/lib/server/targeting-helpers.d.mts +2 -0
- package/dist/lib/server/targeting-helpers.d.ts +2 -0
- package/dist/lib/server/targeting-helpers.js +28 -1
- package/dist/lib/server/targeting-helpers.mjs +18 -1
- package/dist/lib/server/webhook-emitter.js +1 -0
- package/dist/lib/server/webhook-emitter.mjs +2 -1
- package/dist/lib/signing/crypto.d.mts +1 -1
- package/dist/lib/signing/crypto.d.ts +1 -1
- package/dist/lib/signing/crypto.js +37 -2
- package/dist/lib/signing/crypto.mjs +37 -2
- package/dist/lib/signing/parser.d.mts +6 -0
- package/dist/lib/signing/parser.d.ts +6 -0
- package/dist/lib/signing/parser.js +7 -3
- package/dist/lib/signing/parser.mjs +6 -3
- package/dist/lib/signing/server.d.mts +1 -1
- package/dist/lib/signing/server.d.ts +1 -1
- package/dist/lib/signing/server.mjs +5 -1
- package/dist/lib/signing/web-bot-auth.d.mts +61 -22
- package/dist/lib/signing/web-bot-auth.d.ts +61 -22
- package/dist/lib/signing/web-bot-auth.js +286 -266
- package/dist/lib/signing/web-bot-auth.mjs +288 -277
- package/dist/lib/signing/webhook-verifier.d.mts +11 -0
- package/dist/lib/signing/webhook-verifier.d.ts +11 -0
- package/dist/lib/signing/webhook-verifier.js +11 -3
- package/dist/lib/signing/webhook-verifier.mjs +11 -3
- package/dist/lib/supply-path/verify.js +12 -2
- package/dist/lib/supply-path/verify.mjs +2 -2
- package/dist/lib/testing/client.js +3 -5
- package/dist/lib/testing/client.mjs +4 -6
- package/dist/lib/testing/compliance/comply.js +7 -2
- package/dist/lib/testing/compliance/comply.mjs +8 -3
- package/dist/lib/testing/index.d.mts +1 -1
- package/dist/lib/testing/index.d.ts +1 -1
- package/dist/lib/testing/index.js +4 -2
- package/dist/lib/testing/index.mjs +8 -2
- package/dist/lib/testing/storyboard/runner.js +12 -12
- package/dist/lib/testing/storyboard/runner.mjs +14 -13
- package/dist/lib/testing/storyboard/validations.d.mts +1 -1
- package/dist/lib/testing/storyboard/validations.d.ts +1 -1
- package/dist/lib/testing/storyboard/validations.js +23 -1
- package/dist/lib/testing/storyboard/validations.mjs +28 -2
- package/dist/lib/testing/types.d.mts +39 -0
- package/dist/lib/testing/types.d.ts +39 -0
- package/dist/lib/v2/projection/augment-response.js +6 -3
- package/dist/lib/v2/projection/augment-response.mjs +8 -5
- package/dist/lib/v2/projection/creative-delivery.js +29 -17
- package/dist/lib/v2/projection/creative-delivery.mjs +31 -18
- package/dist/lib/v2/projection/v1-to-v2.d.mts +7 -0
- package/dist/lib/v2/projection/v1-to-v2.d.ts +7 -0
- package/dist/lib/v2/projection/v1-to-v2.js +70 -2
- package/dist/lib/v2/projection/v1-to-v2.mjs +72 -1
- package/dist/lib/validation/index.d.mts +1 -1
- package/dist/lib/validation/index.d.ts +1 -1
- package/dist/lib/validation/index.js +4 -2
- package/dist/lib/validation/index.mjs +4 -2
- package/dist/lib/validation/schema-loader.d.mts +26 -0
- package/dist/lib/validation/schema-loader.d.ts +26 -0
- package/dist/lib/validation/schema-loader.js +98 -14
- package/dist/lib/validation/schema-loader.mjs +95 -13
- package/dist/lib/version.d.mts +3 -3
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.js +3 -3
- package/dist/lib/version.mjs +3 -3
- package/docs/TYPE-SUMMARY.md +2 -2
- package/docs/guides/PROPERTY-LISTS.md +264 -0
- package/docs/guides/SIGNING-GUIDE.md +25 -0
- package/docs/guides/VALIDATE-YOUR-AGENT.md +34 -0
- package/docs/llms.txt +2 -2
- package/docs/migration-14.x-rc-worksheet.md +4 -4
- package/docs/migration-agent-identity-3.3.md +60 -23
- package/package.json +1 -1
|
@@ -187,6 +187,40 @@ await comply(agentUrl, {
|
|
|
187
187
|
});
|
|
188
188
|
```
|
|
189
189
|
|
|
190
|
+
**Capabilities served at a newer release.** A 3.0 pin sends only
|
|
191
|
+
`adcp_major_version: 3`, so a conformant agent may serve and echo its highest
|
|
192
|
+
3.x release in `get_adcp_capabilities` (versioning spec, "Server echoes"). The
|
|
193
|
+
runner validates that one response against the echoed release when the echo is
|
|
194
|
+
the pin's major, is listed in the response's own `adcp.supported_versions`, and
|
|
195
|
+
has a schema root. That covers discovery's `capabilities_response_schema_invalid`
|
|
196
|
+
notices, `getAdcpCapabilities()` and every storyboard `response_schema` check on
|
|
197
|
+
`get_adcp_capabilities`, even with `schemaRoot` set for the pin. Otherwise it
|
|
198
|
+
validates strictly against the pin. Every other task's response, storyboard
|
|
199
|
+
selection, the run's `adcp_version` and grading stay on the pin.
|
|
200
|
+
|
|
201
|
+
The echoed release's schemas come from the SDK's bundle by default. A grader
|
|
202
|
+
that ships its own roots per release can supply them with
|
|
203
|
+
`servedReleaseSchemaRoots` (on `comply()`, `runStoryboard()` and
|
|
204
|
+
`runStoryboardStep()`), keyed by AdCP version:
|
|
205
|
+
|
|
206
|
+
```ts
|
|
207
|
+
await comply(agentUrl, {
|
|
208
|
+
version: '3.0.27',
|
|
209
|
+
complianceDir: '/app/dist/compliance/3.0.27',
|
|
210
|
+
schemaRoot: '/app/dist/schemas/3.0.27',
|
|
211
|
+
servedReleaseSchemaRoots: {
|
|
212
|
+
'3.1.29': '/app/dist/schemas/3.1.29',
|
|
213
|
+
'3.2.5': '/app/dist/schemas/3.2.5',
|
|
214
|
+
},
|
|
215
|
+
});
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Those roots are used only for that capabilities validation. Each one is checked
|
|
219
|
+
against its key once per process, and a mismatched or missing root throws
|
|
220
|
+
before the run starts. Callers that validate outside `comply()` and the runner
|
|
221
|
+
can scope the same map with `withServedReleaseSchemaRoots(roots, fn)` from
|
|
222
|
+
`@adcp/sdk/testing`.
|
|
223
|
+
|
|
190
224
|
**Multi-agent storyboards under `comply()`.** `comply()` grades one agent, so
|
|
191
225
|
storyboards that declare `requires: [multi_agent]` (for example the
|
|
192
226
|
governance-aware seller scenarios) skip with `requirement_unmet` and cap their
|
package/docs/llms.txt
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Ad Context Protocol (AdCP)
|
|
2
2
|
|
|
3
|
-
> Generated at: 2026-10-
|
|
4
|
-
> Library: @adcp/sdk v16.0.0-beta.
|
|
3
|
+
> Generated at: 2026-10-18
|
|
4
|
+
> Library: @adcp/sdk v16.0.0-beta.8
|
|
5
5
|
> AdCP major version: 3
|
|
6
6
|
> Canonical URL: https://adcontextprotocol.github.io/adcp-client/llms.txt
|
|
7
7
|
> Note: the `Library` stamp reflects the package.json version at doc-generation time. The narrative below describes the surface that lands on the next-published minor — including any 6.7 helpers documented here ahead of the release tag.
|
|
@@ -16,8 +16,8 @@ pin using `ADCP_VERSION` inside that tarball.
|
|
|
16
16
|
|
|
17
17
|
| Fact | Value |
|
|
18
18
|
| --- | --- |
|
|
19
|
-
| Checkout `package.json` version | `@adcp/sdk@16.0.0-beta.
|
|
20
|
-
| npm integrity | registry-derived after publication; run `npm view @adcp/sdk@16.0.0-beta.
|
|
19
|
+
| Checkout `package.json` version | `@adcp/sdk@16.0.0-beta.8` |
|
|
20
|
+
| npm integrity | registry-derived after publication; run `npm view @adcp/sdk@16.0.0-beta.8 dist.integrity` |
|
|
21
21
|
| Node.js runtime | `^20.19.0 || >=22.12.0` |
|
|
22
22
|
| Default AdCP wire release | `3.2.5` |
|
|
23
23
|
| Maintained wire releases | `v2.5`, `v2.6`, `v3`, `3.0.0`, `3.0`, `3.0.1`, `3.0.2`, `3.0.3`, `3.0.4`, `3.0.5`, `3.0.6`, `3.0.7`, `3.0.8`, `3.0.9`, `3.0.10`, `3.0.11`, `3.0.12`, `3.0.13`, `3.0.14`, `3.0.15`, `3.0.16`, `3.0.17`, `3.0.18`, `3.0.19`, `3.0.20`, `3.0.21`, `3.0.22`, `3.0.23`, `3.0.24`, `3.0.25`, `3.1.0`, `3.1`, `3.1.1`, `3.1.2`, `3.1.3`, `3.1.4`, `3.1.5`, `3.1.6`, `3.1.7`, `3.1.8`, `3.1.9`, `3.1.10`, `3.1.11`, `3.1.12`, `3.1.13`, `3.1.14`, `3.1.15`, `3.1.16`, `3.1.17`, `3.1.18`, `3.1.19`, `3.1.20`, `3.1.21`, `3.1.22`, `3.1.23`, `3.1.24`, `3.1.25`, `3.1.26`, `3.1.27`, `3.1.28`, `3.1.29`, `3.2.1`, `3.2`, `3.2.2`, `3.2.3`, `3.2.4`, `3.2.5` |
|
|
@@ -26,8 +26,8 @@ pin using `ADCP_VERSION` inside that tarball.
|
|
|
26
26
|
For a checkout at the published release commit, install the exact package version:
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
npm install --save-exact '@adcp/sdk@16.0.0-beta.
|
|
30
|
-
npm view '@adcp/sdk@16.0.0-beta.
|
|
29
|
+
npm install --save-exact '@adcp/sdk@16.0.0-beta.8'
|
|
30
|
+
npm view '@adcp/sdk@16.0.0-beta.8' dist.integrity
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
### Required and optional peers
|
|
@@ -123,13 +123,21 @@ seller must advertise `request_signing.profiles` containing `web-bot-auth`.
|
|
|
123
123
|
Provider configurations additionally supply `public_key`; the provider's
|
|
124
124
|
thumbprint kid and algorithm must match that public key. The wrapper signs the
|
|
125
125
|
final UTF-8 body, covers the selected `Signature-Agent` member and digest,
|
|
126
|
-
uses a fresh nonce, and refuses automatic HTTP redirects.
|
|
127
|
-
|
|
128
|
-
|
|
126
|
+
uses a fresh 64-byte nonce, and refuses automatic HTTP redirects. A request
|
|
127
|
+
carries exactly one `web-bot-auth` signature and one `Signature-Agent` member:
|
|
128
|
+
relays were removed from the profile, `signWebBotAuth` throws on `relay: true`
|
|
129
|
+
and on a request that already carries signature fields, and the verifier
|
|
130
|
+
answers a second signature (of any profile) or a second `Signature-Agent`
|
|
131
|
+
member with 403. Signing keys are Ed25519 or RSA-PSS-SHA512 (2048 to 4096
|
|
132
|
+
bits, e = 65537); ES256 stays on the AdCP RFC 9421 profile, and
|
|
133
|
+
`createWebBotAuthFetch`, `createWebhookEmitter` and `createAdcpServer` refuse
|
|
134
|
+
a P-256 Web Bot Auth key at wire-up.
|
|
129
135
|
|
|
130
136
|
`SignatureDirectoryResolver` derives the directory from the covered canonical
|
|
131
|
-
origin.
|
|
132
|
-
|
|
137
|
+
origin. Directories must be signed (WBA Appendix B.1): it validates a
|
|
138
|
+
possession signature for every key, covering `"@authority";req` and
|
|
139
|
+
`content-digest`, and the exact body digest before caching keys. An unsigned
|
|
140
|
+
directory is a discovery failure. Its audit proof retains the signed body and
|
|
133
141
|
headers. Verification requires this resolver so context-free JWKS adapters cannot
|
|
134
142
|
attribute a key to an arbitrary origin. Discovery uses HTTPS, DNS pinning, no redirects, a 256 KiB cap, a
|
|
135
143
|
5-second connect bound and 10-second total bound, at most 64 keys, and bounded
|
|
@@ -147,7 +155,8 @@ Serve the exact JWS at `/.well-known/governance-revocations.json` and refresh it
|
|
|
147
155
|
before `next_update` (the command defaults to five minutes). Pass `--snapshot`
|
|
148
156
|
to sign a list of revoked key thumbprints and optional reasons/dates.
|
|
149
157
|
`createSignedOriginRevocationList` provides the same authoring API. The SDK
|
|
150
|
-
|
|
158
|
+
signs and verifies revocation lists with directory keys: EdDSA for Ed25519 keys
|
|
159
|
+
and PS512 for RSA keys (a P-256 key cannot be published in a key directory). Observed key revocations are permanent;
|
|
151
160
|
refresh failures use the last verified list only within the published grace
|
|
152
161
|
window. Staleness follows the list's signed `next_update`, never the polling
|
|
153
162
|
interval: the verifier re-polls at least every polling interval (at most 30
|
|
@@ -370,7 +379,7 @@ released schemas:
|
|
|
370
379
|
|
|
371
380
|
| PR | Pinned head | Surface |
|
|
372
381
|
| --- | --- | --- |
|
|
373
|
-
| [7894](https://github.com/adcontextprotocol/adcp/pull/7894) | `
|
|
382
|
+
| [7894](https://github.com/adcontextprotocol/adcp/pull/7894) | `e24eeb090c4365707641099cbbb45f9945c6d6e0` | WBA wire profile (`wba-profile.mdx`), profile selectors, directory and request vectors |
|
|
374
383
|
| [8121](https://github.com/adcontextprotocol/adcp/pull/8121) | `f5973ac0267b1b94d714c55fc4e3ad8fc2511350` | Origin identity and key-free trust v1 |
|
|
375
384
|
| [8162](https://github.com/adcontextprotocol/adcp/pull/8162) | `5c9914c5c382cc32f3d2ad7842942e548c414705` | Ratified identity, coexistence, revocation |
|
|
376
385
|
| [8168](https://github.com/adcontextprotocol/adcp/pull/8168) | `45540941dfd61e80ab8a463f780cb147c82a32f0` | Relationship and principal response arms |
|
|
@@ -378,8 +387,14 @@ released schemas:
|
|
|
378
387
|
| [8170](https://github.com/adcontextprotocol/adcp/pull/8170) | `8d3591e70e9a717c7fdfb513360a796fba24ca9a` | Onboarding additions only; its old trust key fields are excluded |
|
|
379
388
|
| [8177](https://github.com/adcontextprotocol/adcp/pull/8177) | `b663f8e4235fe4276c73fb9bac6db491b2252bbf` | Reporting authentication omission |
|
|
380
389
|
|
|
381
|
-
|
|
382
|
-
|
|
390
|
+
The vectors in `test/fixtures/wba-profile/` are byte-identical to #7894 at that
|
|
391
|
+
head and are all graded except the governance-token vectors (see `PINNED.json`).
|
|
392
|
+
|
|
393
|
+
Verification runs in Cloudflare's `http-message-sig` (signature base, coverage,
|
|
394
|
+
window, algorithm and cryptographic checks); the SDK adds the profile rules in
|
|
395
|
+
front of it (one signature, one covered `Signature-Agent` member, the nonce and
|
|
396
|
+
lifetime rules, key lookup by origin and thumbprint) and replay state behind it.
|
|
397
|
+
`verifyKeyDirectory` and `verifySignatureDirectory` now return promises.
|
|
383
398
|
|
|
384
399
|
Verifier outcomes follow DR-0023 and WBA §5.5/§6.10. `verifyWebBotAuth` needs
|
|
385
400
|
only key discovery and a replay store and returns the verified origins;
|
|
@@ -387,20 +402,39 @@ revocation, bindings and the origin-binding fence run afterwards in the
|
|
|
387
402
|
identity layer (`createIdentity33PrincipalResolver({ lifecycle, revocation })`),
|
|
388
403
|
so verification can run in a CDN or middleware in front of the AdCP server.
|
|
389
404
|
|
|
390
|
-
- Signature-path errors are WBA statuses and headers only: 400
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
405
|
+
- Signature-path errors are WBA statuses and headers only: 400 when
|
|
406
|
+
`Signature`, `Signature-Input` or `Signature-Agent` does not parse as a
|
|
407
|
+
Structured Field; 403 with `Accept-Signature` for every other signature or
|
|
408
|
+
profile failure (a wrongly typed parameter, a short nonce, an uncovered or
|
|
409
|
+
extra `Signature-Agent` member); 429 with `Accept-Signature` carrying a fresh
|
|
410
|
+
`nonce` for a reused signature or nonce. `Accept-Signature` names the label,
|
|
411
|
+
the required components and `created;expires;nonce;keyid;alg;tag`. Any AdCP
|
|
412
|
+
body is the generic authentication error (`AUTH_INVALID`); the specific
|
|
413
|
+
reason is logged, never sent. A 429 for local load shedding (directory fetch
|
|
414
|
+
limiter, replay-store `rate_abuse`) carries `Retry-After` instead.
|
|
415
|
+
- Every signed request carries `created`, `expires` (at most 300 seconds
|
|
416
|
+
later), `keyid`, `alg` (`ed25519` or `rsa-pss-sha512`) and a `nonce` of 64
|
|
417
|
+
bytes, unpadded Base64URL or canonical padded Base64 (Cloudflare's default).
|
|
418
|
+
The former 16-byte floor is gone: a shorter nonce is a 403. Replay state is
|
|
419
|
+
keyed on the nonce bytes, so the two encodings of one nonce collide.
|
|
420
|
+
- `replayStatus` is deprecated and has no effect: a replay is always 429.
|
|
421
|
+
- An unsigned request to an operation in `required_for`, from a caller with no
|
|
422
|
+
other accepted credential, is answered by what the verifier advertises in
|
|
423
|
+
`request_signing.profiles`: `['web-bot-auth']` alone gets 403 with
|
|
424
|
+
`Accept-Signature`; alongside `adcp/request-signing/v1` the AdCP RFC 9421 401
|
|
425
|
+
`request_signature_required` also carries `Accept-Signature`. Both
|
|
426
|
+
`createAdcpServer({ signedRequests: { webBotAuth } })` and
|
|
427
|
+
`requireSignatureWhenPresent(verifySignatureAsAuthenticator({ webBotAuth }), ...)`
|
|
428
|
+
apply this; a valid fallback credential still satisfies `required_for`.
|
|
394
429
|
- A key-directory fetch failure (transport error or any non-200, 404/410/5xx
|
|
395
430
|
included) is a discovery failure. It never evicts a cached, unexpired
|
|
396
431
|
directory, which keeps verifying. Without one the request is unverified and
|
|
397
432
|
answered 403 with `Accept-Signature` (the SDK's default unverified-request
|
|
398
433
|
policy). A fetched directory without the key is a signature failure.
|
|
399
|
-
-
|
|
400
|
-
|
|
401
|
-
`requireSignedDirectories
|
|
402
|
-
|
|
403
|
-
`maxUnsignedDirectoryAgeSeconds` (default one day).
|
|
434
|
+
- Key directories must be signed and served as
|
|
435
|
+
`application/http-message-signatures-directory+json`; a plain JWKS is a
|
|
436
|
+
discovery failure. `requireSignedDirectories` and
|
|
437
|
+
`maxUnsignedDirectoryAgeSeconds` are deprecated and have no effect.
|
|
404
438
|
- A revoked key is 403 with the generic authentication error and no
|
|
405
439
|
`Accept-Signature`: the signer must stop using that key. Revocation status
|
|
406
440
|
`unknown` (stale past grace) leaves the identity unverified (403 with
|
|
@@ -420,11 +454,14 @@ so verification can run in a CDN or middleware in front of the AdCP server.
|
|
|
420
454
|
back off on 429 or 503.
|
|
421
455
|
- `@target-uri` and `@authority` are taken from the target URI as received
|
|
422
456
|
(RFC 9421 §2.2.2), never canonicalized; canonical origins identify the signer
|
|
423
|
-
only.
|
|
424
|
-
|
|
425
|
-
verified in both directions against
|
|
426
|
-
|
|
427
|
-
|
|
457
|
+
only. Ed25519 and RSA-PSS-SHA512 keys are supported; RSA-PSS uses WebCrypto
|
|
458
|
+
where the runtime has it, so it also works on Cloudflare workerd.
|
|
459
|
+
`test/fixtures/wba-interop/` holds fixtures verified in both directions against
|
|
460
|
+
Cloudflare's `web-bot-auth`; they already used signed directories and are
|
|
461
|
+
unchanged.
|
|
462
|
+
The #7894 governance-token vectors are vendored but not graded: ratified R4
|
|
463
|
+
keeps the RFC 9421 discovery chain for governance through 3.3, and the profile
|
|
464
|
+
page leaves document signing to a separate decision. `PINNED.json` records this.
|
|
428
465
|
The buyer default onboarding field is `profiles.adcp.onboarding`, matching the
|
|
429
466
|
schema; the design's `record_profiles` wording names the schema definition.
|
|
430
467
|
|