a2aproject / a2aproject/a2a-tck

TCK sends wrong field names/structure for CreateTaskPushNotificationConfig (configId + nested config vs flat id)

Open
#145 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
50
Forks
40
Avg merge
7d 1h
Merged PRs (30d)
1

Description

## Summary

The TCK's `jsonrpc_client.create_task_push_notification_config` sends:

```json
{"taskId": "...", "configId": "...", "config": {"url": "...", "token": "..."}}
```

The v1.0 spec defines `TaskPushNotificationConfig` as a **flat** message (post-PR #1500):

```protobuf
message TaskPushNotificationConfig {
string tenant = 1;
string id = 2;
string task_id = 3;
string url = 4 [(google.api.field_behavior) = REQUIRED];
string token = 5;
AuthenticationInfo authentication = 6;
}
```

The SDK correctly serializes this flat via `MessageToDict()`:

```json
{"taskId": "...", "id": "...", "url": "...", "token": "..."}
```

## Two Mismatches

1. **Field name:** TCK sends `configId` — spec field is `id`
2. **Structure:** TCK nests `url`/`token`/`authentication` inside a `config` sub-object — spec has them flat on `TaskPushNotificationConfig`

## Location

`tests/utils/transport/jsonrpc_client.py`:
```python
response = self._make_jsonrpc_request(
method="CreateTaskPushNotificationConfig",
params={"taskId": task_id, "configId": config_id, "config": config},
)
```

## Impact

All push notification config create/get/list/delete tests fail with `-32602 InvalidParams` against any v1.0 agent built with the official SDK.

## Spec Reference

`TaskPushNotificationConfig` in `specification/a2a.proto` (current HEAD, post [a2aproject/A2A#1500](https://github.com/a2aproject/A2A/pull/1500))

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.