| Field | Value |
|---|---|
| Canonical URI | https://docs.aion.to/a2a/extensions/aion/distribution/cards/1.0.0 |
| Issuer | aion |
| Version | 1.0.0 |
| Activation | This page refines the Distribution extension. It does not introduce separate activation. |
| Related Extensions | Distribution, Event |
Overview
This page defines a provider-neutral card document layered on top of the Distribution extension. Different messaging systems expose rich content through different native surfaces: Slack Block Kit, Teams Adaptive Cards, Google Chat cards, Discord components, and similar provider-specific layouts. Rather than transmit each native shape over A2A, Aion uses one small JSX-like card document and lets the distribution compile it into the provider’s native representation. This page defines two things:- the outbound card document emitted by an agent
- the inbound action event emitted when a user activates a card control
CardsURI:https://docs.aion.to/a2a/extensions/aion/distribution/cards/1.0.0EventURI:https://docs.aion.to/a2a/extensions/aion/event/1.0.0
CardsURI in
message.extensions.
Events
All event types defined on this page are inbound to A2A request processing. The distribution is responsible for attaching the Event extension metadata; external callers should not construct these messages directly.Card Action
| Field | Value |
|---|---|
| Type | to.aion.distribution.card-action.1.0.0 |
| Required payloads | CardActionEventPayload |
| Metadata | params.message.metadata[EventURI].type = "to.aion.distribution.card-action.1.0.0" |
| Details | User clicked, submitted, or otherwise activated an action on a previously rendered card. |
Components
The card document is intentionally small. A distribution MAY degrade components when the provider lacks an equivalent native surface, but SHOULD preserve the overall intent and any plain-text fallback.Card
Card is the top-level container. It defines the card boundary and optional
headline metadata such as title.
Text
Text renders a prose block inside the card body.
Fields
Fields groups compact labeled values such as status, environment, or IDs.
Field
Field is one labeled value inside a Fields group.
Divider
Divider creates a visual break between body content and a following section
such as actions.
Actions
Actions groups interactive controls rendered at the bottom of the card.
Button
Button represents either a callback-style action or a link. Callback buttons
use id; link buttons use url.
Final Example
This example shows the compact document shape the distribution should interpret and render natively for the target provider.Payloads
This page defines both inbound action-event payloads and the outbound card document payload.Event Payloads
Event payload schema placement:params.message.parts[i].metadata[EventURI].schema
Event payload data placement:
params.message.parts[i].data
CardActionEventPayload
Schema URI:https://docs.aion.to/a2a/extensions/aion/distribution/cards/1.0.0#CardActionEventPayload
This payload represents a user interaction with a previously rendered card. It
normalizes callback-style actions across providers that return a
developer-defined action identifier along with conversation context.
| Field | Type | Required | Description |
|---|---|---|---|
userId | String | required | Actor who triggered the card action. |
contextId | String | required | Channel, space, or conversation id where the action occurred. |
parentContextId | String | optional | Thread or parent conversation id when nested context exists. |
actionId | String | required | Developer-defined action identifier echoed back by the provider. |
Outbound Payloads
Outbound payloads may appear either in a direct response to a distribution event or in any other agent-authored request sent directly to a distribution. Outbound payload schema placement:message.parts[i].metadata[CardsURI].schema
Outbound payload transport:
message.parts[i] SHOULD be a file part.
Outbound payload document placement:
the serialized card document lives in the file-part body referenced by raw or
url.
CardPayload
Schema URI:https://docs.aion.to/a2a/extensions/aion/distribution/cards/1.0.0#CardPayload
This payload represents a card document that the distribution should translate
into the provider’s richer message surface when possible.
| Field | Type | Required | Description |
|---|---|---|---|
raw | String | required when inline | Inline serialized card document. |
url | String | required when referenced | Remote location of the card document. |
filename | String | optional | Descriptive file name such as deployment-approved.card.jsx. |
mediaType | String | required | Serialization type, typically application/vnd.aion.card+jsx. |
raw or url SHOULD be present.
Example A2A file part: