-
Notifications
You must be signed in to change notification settings - Fork 25
docs: a2a webhook payload structure and url routing best practices #280
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
3a06431
docs: add changeset
youbek f13f40e
docs: a2a webhook payload for terminal results; Move task type and op…
youbek da473e5
docs: add changeset
youbek a4c4e2e
docs: remove changeset patch file
youbek 2c3e85e
chore: empty changeset
youbek File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,40 @@ | ||
| --- | ||
| "adcontextprotocol": patch | ||
| --- | ||
|
|
||
| Redesign how AdCP handles push notifications for async tasks. The key change is separating **what data is sent** (AdCP's responsibility) from **how it's delivered** (protocol's responsibility). | ||
|
|
||
| **Renamed:** | ||
|
|
||
| - `webhook-payload.json` → `mcp-webhook-payload.json` (clarifies this envelope is MCP-specific) | ||
|
|
||
| **Created:** | ||
|
|
||
| - `async-response-data.json` - Union schema for all async response data types | ||
| - Status-specific schemas for `working`, `input-required`, and `submitted` statuses | ||
|
|
||
| **Deleted:** | ||
|
|
||
| - Removed redundant `-async-response-completed.json` and `-async-response-failed.json` files (6 total) | ||
| - For `completed`/`failed`, we now use the existing task response schemas directly | ||
|
|
||
| **Before:** The webhook spec tried to be universal, which created confusion about how A2A's native push notifications fit in. | ||
|
|
||
| **After:** | ||
|
|
||
| - MCP uses `mcp-webhook-payload.json` as its envelope, with AdCP data in `result` | ||
| - A2A uses its native `Task`/`TaskStatusUpdateEvent` messages, with AdCP data in `status.message.parts[].data` | ||
| - Both use the **exact same data schemas** - only the envelope differs | ||
|
|
||
| This makes it clear that AdCP only specifies the data layer, while each protocol handles delivery in its own way. | ||
|
|
||
| **Schemas:** | ||
|
|
||
| - `static/schemas/source/core/mcp-webhook-payload.json` (renamed + simplified) | ||
| - `static/schemas/source/core/async-response-data.json` (new) | ||
| - `static/schemas/source/media-buy/*-async-response-*.json` (6 deleted, 9 remain) | ||
|
|
||
| - Clarified that both MCP and A2A use HTTP webhooks (A2A's is native to the spec, MCP's is AdCP-provided) | ||
| - Fixed webhook trigger rules: webhooks fire for **all status changes** if `pushNotificationConfig` is provided and the task runs async | ||
| - Added proper A2A webhook payload examples (`Task` vs `TaskStatusUpdateEvent`) | ||
| - **Task Management** added to sidebar, it was missing |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| --- | ||
| --- | ||
|
|
||
| Improve documentations. Specfically: | ||
|
|
||
| - Clarify that completed/failed statuses use Task object with data in .artifacts | ||
| - Clarify that interim statuses (working, input-required) use TaskStatusUpdateEvent with data in status.message.parts | ||
| - Add best practice guidance for URL-based routing (task_type and operation_id in URL) | ||
| - Deprecate task_type and operation_id fields in webhook payload (backward compatible) | ||
| - Update webhook handler examples to use URL parameters - Consistent guidance across both MCP and A2A protocols |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.