# Протокол

Привязки, версии и параметры сервиса

> Страница сайта A2A Docs — неофициального перевода документации протокола Agent2Agent (https://a2adocs.ru/protocol/). Тип: Перевод и пересказ. Основа: Спецификация, разделы 1.3, 3.2.6, 3.6 и 4 (https://a2a-protocol.org/latest/specification/#3-a2a-protocol-operations). Версия спецификации 1.0.0, сверено 05.10.2026.

Протокол описывает, как клиент и агент обмениваются данными. Модель данных и операции сформулированы независимо от транспорта, а на практике вы выбираете одну из привязок и пользуетесь одиннадцатью операциями.

## Привязки

A2A определён в трёх привязках. Все они ДОЛЖНЫ давать функционально эквивалентные представления структур данных.

| Привязка | Как устроена |
| --- | --- |
| JSON-RPC 2.0 | Запросы JSON-RPC по HTTP, потоковая передача через Server-Sent Events. Раздел 9 оригинала. |
| gRPC | Службы и вызовы gRPC на основе a2a.proto. Раздел 10 оригинала. |
| HTTP+JSON/REST | Ресурсные адреса и методы HTTP, например `POST /message:send`. Раздел 11 оригинала. |

Для HTTP+JSON/REST зарегистрирован тип содержимого `application/a2a+json`. Протокол можно переносить и на другие транспорты: см. страницу [«Custom Protocol Bindings»](https://a2a-protocol.org/latest/topics/custom-protocol-bindings/) оригинальной документации.

Пример запроса в привязке HTTP+JSON:

```http
POST /message:send HTTP/1.1
Host: agent.example.com
Content-Type: application/a2a+json
A2A-Version: 1.0
Authorization: Bearer token

{
  "message": {
    "role": "ROLE_USER",
    "parts": [{"text": "Найди рестораны рядом"}],
    "messageId": "msg-uuid"
  }
}
```

> **Заметка переводчика.** Пример составлен по образцу из оригинала. Заголовок `A2A-Version: 1.0` добавлен по требованию раздела 3.6.1. В примерах оригинала значения этого заголовка отличаются, поэтому ориентируйтесь на текст раздела 3.6.

## Версионирование

Версия протокола задаётся элементами `Major.Minor` версии спецификации, например `1.0`. Номера патчей не влияют на совместимость: их НЕ СЛЕДУЕТ указывать в запросах, ответах и Agent Card, и они НЕ ДОЛЖНЫ учитываться, когда клиент и сервер согласуют версию.

### Что делает клиент

- Клиент ДОЛЖЕН отправлять заголовок `A2A-Version` с каждым запросом. Это сохраняет совместимость после того, как агент обновится до новой версии протокола. Исключение — клиенты версии 0.3: при пустом заголовке считается, что версия 0.3.
- Версию МОЖНО передать и параметром запроса `A2A-Version=1.0` вместо заголовка.
- Клиентским агентам, которым нужны новейшие возможности, СЛЕДУЕТ запрашивать конкретные версии и избегать автоматического отката на старые, чтобы незаметно не потерять функциональность.

### Что делает сервер

- Агент ДОЛЖЕН обрабатывать запрос по семантике запрошенной версии (совпадение `Major.Minor`). Если интерфейс эту версию не поддерживает, агент ДОЛЖЕН вернуть `VersionNotSupportedError`.
- Пустое значение агент ДОЛЖЕН трактовать как версию 0.3.
- Агент МОЖЕТ открыть несколько интерфейсов одного транспорта с разными версиями, по одному и тому же или по разным адресам.

### Инструменты и SDK

Библиотеки и SDK, которые реализуют A2A, ДОЛЖНЫ помогать клиентам управлять версиями: например, согласовывать транспорт и версию протокола.

## Параметры сервиса

Параметры сервиса — пары «ключ — значение», которые передаются вместе с операциями и применимы ко всем запросам. Ключи не зависят от регистра, значения зависят. Способ передачи определяет привязка: HTTP-заголовки для HTTP-привязок, метаданные для gRPC. Пользовательские привязки ДОЛЖНЫ описать этот способ.

| Имя | Описание | Пример значения |
| --- | --- | --- |
| `A2A-Extensions` | Список URI расширений через запятую, которые клиент хочет использовать в запросе. | `https://example.com/extensions/geolocation/v1` |
| `A2A-Version` | Версия протокола A2A, которую использует клиент. Если версия не поддерживается, агент возвращает `VersionNotSupportedError`. | `1.0` |

Все параметры сервиса, определённые спецификацией, начинаются с `a2a-`, чтобы не конфликтовать с параметрами транспорта и инфраструктуры.

## Операции

Одиннадцать операций делятся на четыре группы. Таблица с запросами, ответами и описанием приведена на странице [«Методы»](https://a2adocs.ru/protocol/methods/).

- **Отправка сообщений:** `SendMessage`, `SendStreamingMessage`.
- **Работа с задачами:** `GetTask`, `ListTasks`, `CancelTask`, `SubscribeToTask`.
- **Push-уведомления:** `CreateTaskPushNotificationConfig`, `GetTaskPushNotificationConfig`, `ListTaskPushNotificationConfigs`, `DeleteTaskPushNotificationConfig`.
- **Agent Card:** `GetExtendedAgentCard`.

## Дальше

- [Методы](https://a2adocs.ru/protocol/methods/): операции и их поведение.
- [Обновления задач](https://a2adocs.ru/protocol/updates/): опрос, поток и push.
- [Ошибки](https://a2adocs.ru/protocol/errors/): категории и ошибки A2A.
- [Миграция с 0.3 на 1.0](https://a2adocs.ru/migration/): что изменилось в протоколе.
