Skip to content

Commit 1970888

Browse files
Merge pull request #1548 from adcontextprotocol/EmmaLouise2018/fix-v2-schema-links
fix: update schema links from v2 to v3 across docs
2 parents a201852 + bc0839a commit 1970888

24 files changed

Lines changed: 122 additions & 91 deletions
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
---
22
---
33

4-
Fix internal links and schema references in dist doc snapshots to point to their own versioned paths instead of the live /docs/ tree.
4+
Add CI check to detect stale schema version references in docs, preventing outdated /schemas/v{old}/ links from being merged.

.changeset/fix-v2-schema-links.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
---
3+
4+
Update all docs schema references from /schemas/v2/ to /schemas/v3/ across media-buy, signals, creative, governance, and building docs.

.github/workflows/check-schema-links.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,33 @@ jobs:
1717
with:
1818
ref: ${{ github.event.pull_request.head.sha }}
1919

20+
- name: Check for stale schema version references
21+
id: stale-check
22+
run: |
23+
# Get current major version from package.json (e.g., 3.0.0-rc.2 -> 3)
24+
CURRENT_MAJOR=$(node -p "require('./package.json').version.split('.')[0]")
25+
echo "Current major version: $CURRENT_MAJOR"
26+
27+
STALE_FOUND=""
28+
for v in $(seq 1 $((CURRENT_MAJOR - 1))); do
29+
# Search docs/ for /schemas/v{old}/ references, excluding release-notes
30+
MATCHES=$(grep -rn "schemas/v${v}/" docs/ --include='*.md' --include='*.mdx' | grep -v 'docs/reference/release-notes' || true)
31+
if [ -n "$MATCHES" ]; then
32+
STALE_FOUND="$STALE_FOUND\n$MATCHES"
33+
fi
34+
done
35+
36+
if [ -n "$STALE_FOUND" ]; then
37+
echo "❌ Found stale schema version references in docs/ (current major version is v${CURRENT_MAJOR}):"
38+
echo -e "$STALE_FOUND"
39+
echo ""
40+
echo "These should be updated to schemas/v${CURRENT_MAJOR}/"
41+
echo "If these are intentional historical references, move them to docs/reference/release-notes.mdx"
42+
exit 1
43+
else
44+
echo "✅ No stale schema version references found"
45+
fi
46+
2047
- name: Check schema links
2148
id: check
2249
env:

docs/building/integration/a2a-guide.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ During execution, interim status updates can include optional data in `status.me
406406
}
407407
```
408408
409-
**All status payloads use AdCP schemas**: Both final statuses (completed/failed) and interim statuses (working, input-required, submitted) have corresponding AdCP schemas referenced in [`async-response-data.json`](https://adcontextprotocol.org/schemas/v2/core/async-response-data.json). Note that interim status schemas are evolving and may change in future versions, so implementors may choose to handle them more loosely.
409+
**All status payloads use AdCP schemas**: Both final statuses (completed/failed) and interim statuses (working, input-required, submitted) have corresponding AdCP schemas referenced in [`async-response-data.json`](https://adcontextprotocol.org/schemas/v3/core/async-response-data.json). Note that interim status schemas are evolving and may change in future versions, so implementors may choose to handle them more loosely.
410410
411411
### A2A Webhook Payload Types
412412
@@ -451,7 +451,7 @@ The `status.message.parts[].data` field in A2A webhooks uses status-specific sch
451451
| `input-required` | `[task]-async-response-input-required.json` | Requirements, approval data |
452452
| `submitted` | `[task]-async-response-submitted.json` | Acknowledgment (usually minimal) |
453453
454-
Schema reference: [`async-response-data.json`](https://adcontextprotocol.org/schemas/v2/core/async-response-data.json)
454+
Schema reference: [`async-response-data.json`](https://adcontextprotocol.org/schemas/v3/core/async-response-data.json)
455455
456456
### Webhook Handler Example
457457

docs/building/integration/mcp-guide.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ const refined = await session.call('get_products', {
229229

230230
MCP doesn't define push notifications. AdCP fills this gap by specifying the webhook configuration (`pushNotificationConfig`) and payload format (`mcp-webhook-payload.json`). When you configure a webhook, the server will POST task updates to your URL instead of requiring you to poll.
231231

232-
**Webhook Envelope:** [`mcp-webhook-payload.json`](https://adcontextprotocol.org/schemas/v2/core/mcp-webhook-payload.json)
232+
**Webhook Envelope:** [`mcp-webhook-payload.json`](https://adcontextprotocol.org/schemas/v3/core/mcp-webhook-payload.json)
233233

234234
##### Best Practice: URL-Based Routing
235235

@@ -307,7 +307,7 @@ The `result` field contains the AdCP data payload. For `completed`/`failed` stat
307307

308308
#### MCP Webhook Envelope Fields
309309

310-
The [`mcp-webhook-payload.json`](https://adcontextprotocol.org/schemas/v2/core/mcp-webhook-payload.json) envelope includes:
310+
The [`mcp-webhook-payload.json`](https://adcontextprotocol.org/schemas/v3/core/mcp-webhook-payload.json) envelope includes:
311311

312312
**Required fields:**
313313
- `task_id` — Unique task identifier for correlation
@@ -354,7 +354,7 @@ The `result` field in MCP webhooks uses status-specific schemas:
354354
| `input-required` | `[task]-async-response-input-required.json` | Requirements, approval data |
355355
| `submitted` | `[task]-async-response-submitted.json` | Acknowledgment (usually minimal) |
356356

357-
Schema reference: [`async-response-data.json`](https://adcontextprotocol.org/schemas/v2/core/async-response-data.json)
357+
Schema reference: [`async-response-data.json`](https://adcontextprotocol.org/schemas/v3/core/async-response-data.json)
358358

359359
#### Webhook Handler Example
360360

docs/building/schemas-and-sdks.mdx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ AdCP schemas are available from two sources:
1212

1313
| Source | URL | Best For |
1414
|--------|-----|----------|
15-
| Website | `https://adcontextprotocol.org/schemas/v2/` | Runtime fetching, version aliases |
15+
| Website | `https://adcontextprotocol.org/schemas/v3/` | Runtime fetching, version aliases |
1616
| GitHub | `https://github.com/adcontextprotocol/adcp/tree/main/dist/schemas` | Offline access, CI/CD pipelines |
1717

1818
Both sources contain identical schemas. The GitHub repository includes all released versions with bundled schemas committed directly to the codebase.
@@ -21,8 +21,8 @@ Both sources contain identical schemas. The GitHub repository includes all relea
2121

2222
| Schema | URL |
2323
|--------|-----|
24-
| Product | `https://adcontextprotocol.org/schemas/v2/core/product.json` |
25-
| Media Buy | `https://adcontextprotocol.org/schemas/v2/core/media-buy.json` |
24+
| Product | `https://adcontextprotocol.org/schemas/v3/core/product.json` |
25+
| Media Buy | `https://adcontextprotocol.org/schemas/v3/core/media-buy.json` |
2626
| Creative Format | `https://adcontextprotocol.org/schemas/v3/core/format.json` |
2727
| Schema Registry | `https://adcontextprotocol.org/schemas/v3/index.json` |
2828

@@ -113,7 +113,7 @@ AdCP uses semantic versioning. Choose the right path for your use case:
113113
| Path | Example | Best For |
114114
|------|---------|----------|
115115
| Exact version | `/schemas/2.5.3/` | Production, SDK generation |
116-
| Major version | `/schemas/v2/` | Development, documentation |
116+
| Major version | `/schemas/v3/` | Development, documentation |
117117
| Minor version | `/schemas/v2.5/` | Stable development (patch updates only) |
118118

119119
### Production (Recommended)
@@ -133,7 +133,7 @@ Use the major version alias to stay current with backward-compatible updates:
133133

134134
```javascript
135135
const schema = await fetch(
136-
'https://adcontextprotocol.org/schemas/v2/core/product.json'
136+
'https://adcontextprotocol.org/schemas/v3/core/product.json'
137137
);
138138
```
139139

@@ -207,13 +207,13 @@ All request/response task schemas are bundled:
207207
| `bundled/protocol/` | get-adcp-capabilities |
208208
| `bundled/core/` | tasks-get, tasks-list |
209209

210-
See the [schema registry](https://adcontextprotocol.org/schemas/v2/index.json) for all available schemas.
210+
See the [schema registry](https://adcontextprotocol.org/schemas/v3/index.json) for all available schemas.
211211

212212
## Version Discovery
213213

214214
```bash
215215
# Get current version
216-
curl https://adcontextprotocol.org/schemas/v2/index.json | jq '.adcp_version'
216+
curl https://adcontextprotocol.org/schemas/v3/index.json | jq '.adcp_version'
217217
```
218218

219219
Check [Release Notes](/docs/reference/release-notes) for version history and migration guides.

docs/creative/asset-types.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ Standardizing asset types ensures consistency across formats and makes requireme
1212
## Important: Payload vs Requirements
1313

1414
For payload schemas (the structure of the actual asset data supplied in creative manifests), see:
15-
- [Asset Type Registry](https://adcontextprotocol.org/schemas/v2/creative/asset-types/index.json) - Links to all payload schemas
16-
- Core Asset Schemas at `/schemas/v2/core/assets/` - Individual asset payload definitions
15+
- [Asset Type Registry](https://adcontextprotocol.org/schemas/v3/creative/asset-types/index.json) - Links to all payload schemas
16+
- Core Asset Schemas at `/schemas/v3/core/assets/` - Individual asset payload definitions
1717

1818
**Key distinction:**
1919

docs/creative/creative-manifests.mdx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ When a creative agent receives a manifest for validation:
318318
- Look up the `asset_id` in `format.assets`
319319
- If not found → **reject** with error "Unknown asset_id 'banner_imag' not defined in format"
320320
- If found → determine the expected `asset_type` from the format requirement
321-
- Fetch the asset type schema (e.g., `/schemas/v2/core/assets/image-asset.json`)
321+
- Fetch the asset type schema (e.g., `/schemas/v3/core/assets/image-asset.json`)
322322
- Validate the asset payload against that schema
323323
- Validate the asset meets any additional constraints in the format's `requirements` field
324324
4. **Check all required assets are present** (where `required: true` in format spec)
@@ -446,9 +446,9 @@ For carousel, slideshow, and multi-asset formats, see the [Carousel & Multi-Asse
446446

447447
## Schema Reference
448448

449-
- [Creative Manifest Schema](https://adcontextprotocol.org/schemas/v2/core/creative-manifest.json)
450-
- [Preview Creative Request](https://adcontextprotocol.org/schemas/v2/creative/preview-creative-request.json)
451-
- [Preview Creative Response](https://adcontextprotocol.org/schemas/v2/creative/preview-creative-response.json)
449+
- [Creative Manifest Schema](https://adcontextprotocol.org/schemas/v3/core/creative-manifest.json)
450+
- [Preview Creative Request](https://adcontextprotocol.org/schemas/v3/creative/preview-creative-request.json)
451+
- [Preview Creative Response](https://adcontextprotocol.org/schemas/v3/creative/preview-creative-response.json)
452452

453453
## Related Documentation
454454

docs/creative/formats.mdx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ Formats may be sourced from:
6161

6262
```json
6363
{
64-
"$schema": "https://adcontextprotocol.org/schemas/v2/creative/list-creative-formats-response.json",
64+
"$schema": "https://adcontextprotocol.org/schemas/v3/creative/list-creative-formats-response.json",
6565
"formats": [
6666
{
6767
"format_id": {
@@ -90,7 +90,7 @@ Each format includes an `agent_url` that identifies the authoritative creative a
9090

9191
```json
9292
{
93-
"$schema": "https://adcontextprotocol.org/schemas/v2/core/format.json",
93+
"$schema": "https://adcontextprotocol.org/schemas/v3/core/format.json",
9494
"format_id": {
9595
"agent_url": "https://creative.adcontextprotocol.org",
9696
"id": "video_30s_hosted"
@@ -127,7 +127,7 @@ This approach allows publishers to present complex formats without constraining
127127
**Example**:
128128
```json
129129
{
130-
"$schema": "https://adcontextprotocol.org/schemas/v2/core/format.json",
130+
"$schema": "https://adcontextprotocol.org/schemas/v3/core/format.json",
131131
"format_id": {
132132
"agent_url": "https://publisher.com",
133133
"id": "homepage_takeover_premium"
@@ -149,7 +149,7 @@ AdCP uses structured format identifiers everywhere to avoid ambiguity and namesp
149149

150150
```json
151151
{
152-
"$schema": "https://adcontextprotocol.org/schemas/v2/core/format-id.json",
152+
"$schema": "https://adcontextprotocol.org/schemas/v3/core/format-id.json",
153153
"agent_url": "https://creative.adcontextprotocol.org",
154154
"id": "display_300x250"
155155
}
@@ -220,7 +220,7 @@ Formats are JSON objects with the following key fields:
220220

221221
```json
222222
{
223-
"$schema": "https://adcontextprotocol.org/schemas/v2/core/format.json",
223+
"$schema": "https://adcontextprotocol.org/schemas/v3/core/format.json",
224224
"format_id": {
225225
"agent_url": "https://creative.adcontextprotocol.org",
226226
"id": "video_30s_hosted"
@@ -440,7 +440,7 @@ Formats specify their rendered outputs via the `renders` array. Most formats pro
440440

441441
```json
442442
{
443-
"$schema": "https://adcontextprotocol.org/schemas/v2/core/format.json",
443+
"$schema": "https://adcontextprotocol.org/schemas/v3/core/format.json",
444444
"format_id": {
445445
"agent_url": "https://creative.adcontextprotocol.org",
446446
"id": "display_300x250"
@@ -466,7 +466,7 @@ Formats specify their rendered outputs via the `renders` array. Most formats pro
466466
**Multi-render example (companion ad):**
467467
```json
468468
{
469-
"$schema": "https://adcontextprotocol.org/schemas/v2/core/format.json",
469+
"$schema": "https://adcontextprotocol.org/schemas/v3/core/format.json",
470470
"format_id": {
471471
"agent_url": "https://creative.adcontextprotocol.org",
472472
"id": "video_with_companion_300x250"

docs/creative/specification.mdx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -373,11 +373,11 @@ Some creative protocol schemas (`build_creative`, `list_creative_formats`, `prev
373373

374374
| Schema | Description |
375375
|--------|-------------|
376-
| [`core/format.json`](https://adcontextprotocol.org/schemas/v2/core/format.json) | Format definition |
377-
| [`core/creative-manifest.json`](https://adcontextprotocol.org/schemas/v2/core/creative-manifest.json) | Creative manifest |
378-
| [`core/creative-asset.json`](https://adcontextprotocol.org/schemas/v2/core/creative-asset.json) | Asset definition |
379-
| [`media-buy/list-creative-formats-request.json`](https://adcontextprotocol.org/schemas/v2/media-buy/list-creative-formats-request.json) | list_creative_formats request |
380-
| [`media-buy/list-creative-formats-response.json`](https://adcontextprotocol.org/schemas/v2/media-buy/list-creative-formats-response.json) | list_creative_formats response |
376+
| [`core/format.json`](https://adcontextprotocol.org/schemas/v3/core/format.json) | Format definition |
377+
| [`core/creative-manifest.json`](https://adcontextprotocol.org/schemas/v3/core/creative-manifest.json) | Creative manifest |
378+
| [`core/creative-asset.json`](https://adcontextprotocol.org/schemas/v3/core/creative-asset.json) | Asset definition |
379+
| [`media-buy/list-creative-formats-request.json`](https://adcontextprotocol.org/schemas/v3/media-buy/list-creative-formats-request.json) | list_creative_formats request |
380+
| [`media-buy/list-creative-formats-response.json`](https://adcontextprotocol.org/schemas/v3/media-buy/list-creative-formats-response.json) | list_creative_formats response |
381381
| [`creative/list-creatives-request.json`](https://adcontextprotocol.org/schemas/latest/creative/list-creatives-request.json) | list_creatives request |
382382
| [`creative/list-creatives-response.json`](https://adcontextprotocol.org/schemas/latest/creative/list-creatives-response.json) | list_creatives response |
383383
| [`creative/sync-creatives-request.json`](https://adcontextprotocol.org/schemas/latest/creative/sync-creatives-request.json) | sync_creatives request |

0 commit comments

Comments
 (0)