# `A2UIAgent.A2A.Request`
[🔗](https://github.com/a2ui-elixir/a2ui/blob/v0.1.1/umbrella/apps/a2ui_agent/lib/a2ui_agent/a2a/request.ex#L1)

One A2A `message/send` or `message/stream` request, as
`A2UIAgent.A2A.Server` hands it to the agent.

  * `:id` — the JSON-RPC request id.
  * `:method` — `"message/send"` or `"message/stream"`.
  * `:message` — the A2A message, as the client sent it.
  * `:task_id`, `:context_id` — the message's, or new ones.
  * `:text` — the message's text parts, joined.
  * `:events` — the A2UI messages its A2UI data parts carry, such as
    `action` messages from the renderer.
  * `:capabilities` — the renderer capabilities from the message
    metadata (`a2uiRendererCapabilities`, `a2uiClientCapabilities`), or
    `nil`.
  * `:data_model` — the renderer data model from the message metadata
    (`a2uiRendererDataModel`, `a2uiClientDataModel`), or `nil`.
  * `:extensions` — the A2UI extension URIs the client requested.
  * `:activated` — `{uri, version}` of the A2UI extension activated for
    this request, or `nil`.
  * `:processor` — the `A2UIAgent.RequestProcessor` negotiated for the
    renderer, or `nil` when the agent answers in text only.
  * `:version` — the protocol version of the processor's catalogs.

# `t`
*since 0.1.0* 

```elixir
@type t() :: %A2UIAgent.A2A.Request{
  activated: {String.t(), String.t()} | nil,
  capabilities: map() | nil,
  context_id: String.t(),
  data_model: map() | nil,
  events: [map()],
  extensions: [String.t()],
  id: String.t() | integer() | nil,
  message: map(),
  method: String.t(),
  processor: A2UIAgent.RequestProcessor.t() | nil,
  task_id: String.t(),
  text: String.t(),
  version: String.t() | nil
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
