agent2agentGuidesClient — REST Binding

Client — REST Binding

client = A2A::Client.new("http://localhost:9292", binding: :rest)

agent_card

card = client.agent_card
card.name    # => "Echo Agent"
card.version # => "1.0.0"
GET /.well-known/agent-card.json HTTP/1.1

send_message

result = client.send_message(
  message: { "messageId" => "msg-1", "role" => "ROLE_USER", "parts" => [{ "text" => "Hello" }] }
)
POST /message:send HTTP/1.1
Content-Type: application/a2a+json

{
  "message": {
    "messageId": "msg-1",
    "role": "ROLE_USER",
    "parts": [{"text": "Hello"}]
  }
}

send_streaming_message

client.send_streaming_message(
  message: { "messageId" => "msg-1", "role" => "ROLE_USER", "parts" => [{ "text" => "Hello" }] }
) do |chunk, env|
end
POST /message:stream HTTP/1.1
Content-Type: application/a2a+json
Accept: text/event-stream

{
  "message": {
    "messageId": "msg-1",
    "role": "ROLE_USER",
    "parts": [{"text": "Hello"}]
  }
}

get_task

task = client.get_task(id: "task-123")
GET /tasks/task-123 HTTP/1.1

list_tasks

result = client.list_tasks
result = client.list_tasks(context_id: "ctx-1")
GET /tasks HTTP/1.1

cancel_task

task = client.cancel_task(id: "task-123")
POST /tasks/task-123:cancel HTTP/1.1
Content-Type: application/a2a+json

subscribe_to_task

client.subscribe_to_task(id: "task-123") do |chunk, env|
end
GET /tasks/task-123:subscribe HTTP/1.1
Accept: text/event-stream

create_task_push_notification_config

config = client.create_task_push_notification_config(
  task_id: "task-123", url: "https://example.com/webhook"
)
POST /tasks/task-123/pushNotificationConfigs HTTP/1.1
Content-Type: application/a2a+json

{
  "url": "https://example.com/webhook"
}

get_task_push_notification_config

config = client.get_task_push_notification_config(id: "config-1", task_id: "task-123")
GET /tasks/task-123/pushNotificationConfigs/config-1 HTTP/1.1

list_task_push_notification_configs

result = client.list_task_push_notification_configs(task_id: "task-123")
GET /tasks/task-123/pushNotificationConfigs HTTP/1.1

delete_task_push_notification_config

client.delete_task_push_notification_config(id: "config-1", task_id: "task-123")
DELETE /tasks/task-123/pushNotificationConfigs/config-1 HTTP/1.1

get_extended_agent_card

card = client.get_extended_agent_card
GET /extendedAgentCard HTTP/1.1