a2a-test-framework 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. checksums.yaml +7 -0
  2. data/a2a.json +1961 -0
  3. data/a2a.proto +796 -0
  4. data/endpoints/grpc/cancel_task.json +10 -0
  5. data/endpoints/grpc/create_task_push_notification_config.json +10 -0
  6. data/endpoints/grpc/delete_task_push_notification_config.json +10 -0
  7. data/endpoints/grpc/get_extended_agent_card.json +10 -0
  8. data/endpoints/grpc/get_task.json +10 -0
  9. data/endpoints/grpc/get_task_push_notification_config.json +10 -0
  10. data/endpoints/grpc/list_task_push_notification_configs.json +10 -0
  11. data/endpoints/grpc/list_tasks.json +10 -0
  12. data/endpoints/grpc/send_message.json +10 -0
  13. data/endpoints/grpc/send_streaming_message.json +10 -0
  14. data/endpoints/grpc/subscribe_to_task.json +10 -0
  15. data/endpoints/rest/cancel_task.json +85 -0
  16. data/endpoints/rest/create_task_push_notification_config.json +104 -0
  17. data/endpoints/rest/delete_task_push_notification_config.json +46 -0
  18. data/endpoints/rest/get_extended_agent_card.json +168 -0
  19. data/endpoints/rest/get_task.json +111 -0
  20. data/endpoints/rest/get_task_push_notification_config.json +90 -0
  21. data/endpoints/rest/list_task_push_notification_configs.json +108 -0
  22. data/endpoints/rest/list_tasks.json +239 -0
  23. data/endpoints/rest/send_message.json +57 -0
  24. data/endpoints/rest/send_streaming_message.json +75 -0
  25. data/endpoints/rest/subscribe_to_task.json +68 -0
  26. data/exe/a2a-test +6 -0
  27. data/lib/a2a_test_framework/cli.rb +190 -0
  28. data/lib/a2a_test_framework/sse_client.rb +104 -0
  29. data/lib/a2a_test_framework/test_helper.rb +146 -0
  30. data/lib/a2a_test_framework/version.rb +5 -0
  31. data/lib/a2a_test_framework.rb +17 -0
  32. data/tests/grpc/cancel_task_test.rb +69 -0
  33. data/tests/grpc/create_task_push_notification_config_test.rb +79 -0
  34. data/tests/grpc/delete_task_push_notification_config_test.rb +54 -0
  35. data/tests/grpc/error_code_mappings_test.rb +39 -0
  36. data/tests/grpc/error_handling_test.rb +175 -0
  37. data/tests/grpc/get_extended_agent_card_test.rb +83 -0
  38. data/tests/grpc/get_task_push_notification_config_test.rb +39 -0
  39. data/tests/grpc/get_task_test.rb +76 -0
  40. data/tests/grpc/grpc_binding_test.rb +74 -0
  41. data/tests/grpc/list_task_push_notification_configs_test.rb +53 -0
  42. data/tests/grpc/list_tasks_test.rb +117 -0
  43. data/tests/grpc/protocol_data_model_test.rb +14 -0
  44. data/tests/grpc/send_message_test.rb +141 -0
  45. data/tests/grpc/send_streaming_message_test.rb +122 -0
  46. data/tests/grpc/streaming_event_delivery_test.rb +48 -0
  47. data/tests/grpc/subscribe_to_task_test.rb +92 -0
  48. data/tests/grpc/versioning_test.rb +32 -0
  49. data/tests/rest/agent_card_caching_test.rb +39 -0
  50. data/tests/rest/agent_card_signing_test.rb +74 -0
  51. data/tests/rest/agent_discovery_test.rb +117 -0
  52. data/tests/rest/authentication_authorization_test.rb +62 -0
  53. data/tests/rest/cancel_task_test.rb +110 -0
  54. data/tests/rest/capability_validation_test.rb +78 -0
  55. data/tests/rest/context_identifier_semantics_test.rb +75 -0
  56. data/tests/rest/create_task_push_notification_config_test.rb +122 -0
  57. data/tests/rest/custom_binding_test.rb +96 -0
  58. data/tests/rest/delete_task_push_notification_config_test.rb +103 -0
  59. data/tests/rest/error_code_mappings_test.rb +45 -0
  60. data/tests/rest/error_handling_test.rb +178 -0
  61. data/tests/rest/extension_versioning_test.rb +44 -0
  62. data/tests/rest/field_presence_optionality_test.rb +64 -0
  63. data/tests/rest/functional_equivalence_test.rb +23 -0
  64. data/tests/rest/get_extended_agent_card_test.rb +67 -0
  65. data/tests/rest/get_task_push_notification_config_test.rb +75 -0
  66. data/tests/rest/get_task_test.rb +134 -0
  67. data/tests/rest/history_length_semantics_test.rb +91 -0
  68. data/tests/rest/http_rest_binding_test.rb +114 -0
  69. data/tests/rest/iana_registrations_test.rb +47 -0
  70. data/tests/rest/idempotency_test.rb +69 -0
  71. data/tests/rest/in_task_authorization_test.rb +45 -0
  72. data/tests/rest/json_field_naming_test.rb +89 -0
  73. data/tests/rest/json_rpc_binding_test.rb +102 -0
  74. data/tests/rest/list_task_push_notification_configs_test.rb +92 -0
  75. data/tests/rest/list_tasks_test.rb +162 -0
  76. data/tests/rest/messages_and_artifacts_test.rb +101 -0
  77. data/tests/rest/multi_turn_conversation_test.rb +94 -0
  78. data/tests/rest/protocol_data_model_test.rb +99 -0
  79. data/tests/rest/protocol_security_test.rb +25 -0
  80. data/tests/rest/protocol_selection_negotiation_test.rb +24 -0
  81. data/tests/rest/push_notification_delivery_test.rb +115 -0
  82. data/tests/rest/security_considerations_test.rb +101 -0
  83. data/tests/rest/send_message_test.rb +230 -0
  84. data/tests/rest/send_streaming_message_test.rb +129 -0
  85. data/tests/rest/service_parameters_test.rb +52 -0
  86. data/tests/rest/streaming_event_delivery_test.rb +58 -0
  87. data/tests/rest/subscribe_to_task_test.rb +99 -0
  88. data/tests/rest/task_identifier_semantics_test.rb +67 -0
  89. data/tests/rest/timestamps_test.rb +70 -0
  90. data/tests/rest/versioning_responsibilities_test.rb +46 -0
  91. data/tests/rest/versioning_test.rb +44 -0
  92. metadata +159 -0
@@ -0,0 +1,10 @@
1
+ {
2
+ "protocol": "gRPC",
3
+ "service": "A2AService",
4
+ "method": "CancelTask",
5
+ "description": "Cancels a task in progress.",
6
+ "request_type": "CancelTaskRequest",
7
+ "response_type": "Task",
8
+ "client_streaming": false,
9
+ "server_streaming": false
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "protocol": "gRPC",
3
+ "service": "A2AService",
4
+ "method": "CreateTaskPushNotificationConfig",
5
+ "description": "api-linter: core::0133::method-signature=disabled api-linter: core::0133::request-message-name=disabled aip.dev/not-precedent: method_signature preserved for backwards compatibility --) Creates a push notification config for a task.",
6
+ "request_type": "TaskPushNotificationConfig",
7
+ "response_type": "TaskPushNotificationConfig",
8
+ "client_streaming": false,
9
+ "server_streaming": false
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "protocol": "gRPC",
3
+ "service": "A2AService",
4
+ "method": "DeleteTaskPushNotificationConfig",
5
+ "description": "Deletes a push notification config for a task.",
6
+ "request_type": "DeleteTaskPushNotificationConfigRequest",
7
+ "response_type": "google.protobuf.Empty",
8
+ "client_streaming": false,
9
+ "server_streaming": false
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "protocol": "gRPC",
3
+ "service": "A2AService",
4
+ "method": "GetExtendedAgentCard",
5
+ "description": "Gets the extended agent card for the authenticated agent.",
6
+ "request_type": "GetExtendedAgentCardRequest",
7
+ "response_type": "AgentCard",
8
+ "client_streaming": false,
9
+ "server_streaming": false
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "protocol": "gRPC",
3
+ "service": "A2AService",
4
+ "method": "GetTask",
5
+ "description": "Gets the latest state of a task.",
6
+ "request_type": "GetTaskRequest",
7
+ "response_type": "Task",
8
+ "client_streaming": false,
9
+ "server_streaming": false
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "protocol": "gRPC",
3
+ "service": "A2AService",
4
+ "method": "GetTaskPushNotificationConfig",
5
+ "description": "Gets a push notification config for a task.",
6
+ "request_type": "GetTaskPushNotificationConfigRequest",
7
+ "response_type": "TaskPushNotificationConfig",
8
+ "client_streaming": false,
9
+ "server_streaming": false
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "protocol": "gRPC",
3
+ "service": "A2AService",
4
+ "method": "ListTaskPushNotificationConfigs",
5
+ "description": "Get a list of push notifications configured for a task.",
6
+ "request_type": "ListTaskPushNotificationConfigsRequest",
7
+ "response_type": "ListTaskPushNotificationConfigsResponse",
8
+ "client_streaming": false,
9
+ "server_streaming": false
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "protocol": "gRPC",
3
+ "service": "A2AService",
4
+ "method": "ListTasks",
5
+ "description": "Lists tasks that match the specified filter.",
6
+ "request_type": "ListTasksRequest",
7
+ "response_type": "ListTasksResponse",
8
+ "client_streaming": false,
9
+ "server_streaming": false
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "protocol": "gRPC",
3
+ "service": "A2AService",
4
+ "method": "SendMessage",
5
+ "description": "Sends a message to an agent.",
6
+ "request_type": "SendMessageRequest",
7
+ "response_type": "SendMessageResponse",
8
+ "client_streaming": false,
9
+ "server_streaming": false
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "protocol": "gRPC",
3
+ "service": "A2AService",
4
+ "method": "SendStreamingMessage",
5
+ "description": "Sends a streaming message to an agent, allowing for real-time interaction and status updates. Streaming version of `SendMessage`",
6
+ "request_type": "SendMessageRequest",
7
+ "response_type": "StreamResponse",
8
+ "client_streaming": false,
9
+ "server_streaming": true
10
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "protocol": "gRPC",
3
+ "service": "A2AService",
4
+ "method": "SubscribeToTask",
5
+ "description": "Subscribes to task updates for tasks not in a terminal state. Returns `UnsupportedOperationError` if the task is already in a terminal state (completed, failed, canceled, rejected).",
6
+ "request_type": "SubscribeToTaskRequest",
7
+ "response_type": "StreamResponse",
8
+ "client_streaming": false,
9
+ "server_streaming": true
10
+ }
@@ -0,0 +1,85 @@
1
+ {
2
+ "protocol": "REST (HTTP+JSON)",
3
+ "http_method": "POST",
4
+ "path": "/tasks/{id}:cancel",
5
+ "tenant_path": "/{tenant}/tasks/{id}:cancel",
6
+ "description": "Cancels a task in progress.",
7
+ "streaming": false,
8
+ "request": {
9
+ "type": "CancelTaskRequest",
10
+ "schema": {
11
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
12
+ "additionalProperties": false,
13
+ "description": "Represents a request for the `CancelTask` method.",
14
+ "properties": {
15
+ "id": {
16
+ "default": "",
17
+ "description": "The resource ID of the task to cancel.",
18
+ "type": "string"
19
+ },
20
+ "metadata": {
21
+ "$ref": "google.protobuf.Struct.jsonschema.json",
22
+ "description": "A flexible key-value map for passing additional context or parameters."
23
+ },
24
+ "tenant": {
25
+ "default": "",
26
+ "description": "Optional. Tenant ID, provided as a path parameter.",
27
+ "type": "string"
28
+ }
29
+ },
30
+ "title": "Cancel Task Request",
31
+ "type": "object"
32
+ }
33
+ },
34
+ "response": {
35
+ "type": "Task",
36
+ "schema": {
37
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
38
+ "additionalProperties": false,
39
+ "description": "`Task` is the core unit of action for A2A. It has a current status\n and when results are created for the task they are stored in the\n artifact. If there are multiple turns for a task, these are stored in\n history.",
40
+ "patternProperties": {
41
+ "^(context_id)$": {
42
+ "default": "",
43
+ "description": "Unique identifier (e.g. UUID) for the contextual collection of interactions\n (tasks and messages).",
44
+ "type": "string"
45
+ }
46
+ },
47
+ "properties": {
48
+ "artifacts": {
49
+ "description": "A set of output artifacts for a `Task`.",
50
+ "items": {
51
+ "$ref": "lf.a2a.v1.Artifact.jsonschema.json"
52
+ },
53
+ "type": "array"
54
+ },
55
+ "contextId": {
56
+ "default": "",
57
+ "description": "Unique identifier (e.g. UUID) for the contextual collection of interactions\n (tasks and messages).",
58
+ "type": "string"
59
+ },
60
+ "history": {
61
+ "description": "The history of interactions from a `Task`.",
62
+ "items": {
63
+ "$ref": "lf.a2a.v1.Message.jsonschema.json"
64
+ },
65
+ "type": "array"
66
+ },
67
+ "id": {
68
+ "default": "",
69
+ "description": "Unique identifier (e.g. UUID) for the task, generated by the server for a\n new task.",
70
+ "type": "string"
71
+ },
72
+ "metadata": {
73
+ "$ref": "google.protobuf.Struct.jsonschema.json",
74
+ "description": "A key/value object to store custom metadata about a task."
75
+ },
76
+ "status": {
77
+ "$ref": "lf.a2a.v1.TaskStatus.jsonschema.json",
78
+ "description": "The current status of a `Task`, including `state` and a `message`."
79
+ }
80
+ },
81
+ "title": "Task",
82
+ "type": "object"
83
+ }
84
+ }
85
+ }
@@ -0,0 +1,104 @@
1
+ {
2
+ "protocol": "REST (HTTP+JSON)",
3
+ "http_method": "POST",
4
+ "path": "/tasks/{task_id}/pushNotificationConfigs",
5
+ "tenant_path": "/{tenant}/tasks/{task_id}/pushNotificationConfigs",
6
+ "description": "api-linter: core::0133::method-signature=disabled api-linter: core::0133::request-message-name=disabled aip.dev/not-precedent: method_signature preserved for backwards compatibility --) Creates a push notification config for a task.",
7
+ "streaming": false,
8
+ "request": {
9
+ "type": "TaskPushNotificationConfig",
10
+ "schema": {
11
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
12
+ "additionalProperties": false,
13
+ "description": "A container associating a push notification configuration with a specific task.",
14
+ "patternProperties": {
15
+ "^(task_id)$": {
16
+ "default": "",
17
+ "description": "The ID of the task this configuration is associated with.",
18
+ "type": "string"
19
+ }
20
+ },
21
+ "properties": {
22
+ "authentication": {
23
+ "$ref": "lf.a2a.v1.AuthenticationInfo.jsonschema.json",
24
+ "description": "Authentication information required to send the notification."
25
+ },
26
+ "id": {
27
+ "default": "",
28
+ "description": "The push notification configuration details.\n A unique identifier (e.g. UUID) for this push notification configuration.",
29
+ "type": "string"
30
+ },
31
+ "taskId": {
32
+ "default": "",
33
+ "description": "The ID of the task this configuration is associated with.",
34
+ "type": "string"
35
+ },
36
+ "tenant": {
37
+ "default": "",
38
+ "description": "Optional. Tenant ID.",
39
+ "type": "string"
40
+ },
41
+ "token": {
42
+ "default": "",
43
+ "description": "A token unique for this task or session.",
44
+ "type": "string"
45
+ },
46
+ "url": {
47
+ "default": "",
48
+ "description": "The URL where the notification should be sent.",
49
+ "type": "string"
50
+ }
51
+ },
52
+ "title": "Task Push Notification Config",
53
+ "type": "object"
54
+ }
55
+ },
56
+ "response": {
57
+ "type": "TaskPushNotificationConfig",
58
+ "schema": {
59
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
60
+ "additionalProperties": false,
61
+ "description": "A container associating a push notification configuration with a specific task.",
62
+ "patternProperties": {
63
+ "^(task_id)$": {
64
+ "default": "",
65
+ "description": "The ID of the task this configuration is associated with.",
66
+ "type": "string"
67
+ }
68
+ },
69
+ "properties": {
70
+ "authentication": {
71
+ "$ref": "lf.a2a.v1.AuthenticationInfo.jsonschema.json",
72
+ "description": "Authentication information required to send the notification."
73
+ },
74
+ "id": {
75
+ "default": "",
76
+ "description": "The push notification configuration details.\n A unique identifier (e.g. UUID) for this push notification configuration.",
77
+ "type": "string"
78
+ },
79
+ "taskId": {
80
+ "default": "",
81
+ "description": "The ID of the task this configuration is associated with.",
82
+ "type": "string"
83
+ },
84
+ "tenant": {
85
+ "default": "",
86
+ "description": "Optional. Tenant ID.",
87
+ "type": "string"
88
+ },
89
+ "token": {
90
+ "default": "",
91
+ "description": "A token unique for this task or session.",
92
+ "type": "string"
93
+ },
94
+ "url": {
95
+ "default": "",
96
+ "description": "The URL where the notification should be sent.",
97
+ "type": "string"
98
+ }
99
+ },
100
+ "title": "Task Push Notification Config",
101
+ "type": "object"
102
+ }
103
+ }
104
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "protocol": "REST (HTTP+JSON)",
3
+ "http_method": "DELETE",
4
+ "path": "/tasks/{task_id}/pushNotificationConfigs/{id}",
5
+ "tenant_path": "/{tenant}/tasks/{task_id}/pushNotificationConfigs/{id}",
6
+ "description": "Deletes a push notification config for a task.",
7
+ "streaming": false,
8
+ "request": {
9
+ "type": "DeleteTaskPushNotificationConfigRequest",
10
+ "schema": {
11
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
12
+ "additionalProperties": false,
13
+ "description": "Represents a request for the `DeleteTaskPushNotificationConfig` method.",
14
+ "patternProperties": {
15
+ "^(task_id)$": {
16
+ "default": "",
17
+ "description": "The parent task resource ID.",
18
+ "type": "string"
19
+ }
20
+ },
21
+ "properties": {
22
+ "id": {
23
+ "default": "",
24
+ "description": "The resource ID of the configuration to delete.",
25
+ "type": "string"
26
+ },
27
+ "taskId": {
28
+ "default": "",
29
+ "description": "The parent task resource ID.",
30
+ "type": "string"
31
+ },
32
+ "tenant": {
33
+ "default": "",
34
+ "description": "Optional. Tenant ID, provided as a path parameter.",
35
+ "type": "string"
36
+ }
37
+ },
38
+ "title": "Delete Task Push Notification Config Request",
39
+ "type": "object"
40
+ }
41
+ },
42
+ "response": {
43
+ "type": "google.protobuf.Empty",
44
+ "schema": null
45
+ }
46
+ }
@@ -0,0 +1,168 @@
1
+ {
2
+ "protocol": "REST (HTTP+JSON)",
3
+ "http_method": "GET",
4
+ "path": "/extendedAgentCard",
5
+ "tenant_path": "/{tenant}/extendedAgentCard",
6
+ "description": "Gets the extended agent card for the authenticated agent.",
7
+ "streaming": false,
8
+ "request": {
9
+ "type": "GetExtendedAgentCardRequest",
10
+ "schema": {
11
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
12
+ "additionalProperties": false,
13
+ "description": "Represents a request for the `GetExtendedAgentCard` method.",
14
+ "properties": {
15
+ "tenant": {
16
+ "default": "",
17
+ "description": "Optional. Tenant ID, provided as a path parameter.",
18
+ "type": "string"
19
+ }
20
+ },
21
+ "title": "Get Extended Agent Card Request",
22
+ "type": "object"
23
+ }
24
+ },
25
+ "response": {
26
+ "type": "AgentCard",
27
+ "schema": {
28
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
29
+ "additionalProperties": false,
30
+ "description": "A self-describing manifest for an agent. It provides essential\n metadata including the agent's identity, capabilities, skills, supported\n communication methods, and security requirements.\n Next ID: 20",
31
+ "patternProperties": {
32
+ "^(default_input_modes)$": {
33
+ "description": "The set of interaction modes that the agent supports across all skills.\n This can be overridden per skill. Defined as media types.",
34
+ "items": {
35
+ "type": "string"
36
+ },
37
+ "type": "array"
38
+ },
39
+ "^(default_output_modes)$": {
40
+ "description": "The media types supported as outputs from this agent.",
41
+ "items": {
42
+ "type": "string"
43
+ },
44
+ "type": "array"
45
+ },
46
+ "^(documentation_url)$": {
47
+ "description": "A URL providing additional documentation about the agent.",
48
+ "type": "string"
49
+ },
50
+ "^(icon_url)$": {
51
+ "description": "Optional. A URL to an icon for the agent.",
52
+ "type": "string"
53
+ },
54
+ "^(security_requirements)$": {
55
+ "description": "Security requirements for contacting the agent.",
56
+ "items": {
57
+ "$ref": "lf.a2a.v1.SecurityRequirement.jsonschema.json"
58
+ },
59
+ "type": "array"
60
+ },
61
+ "^(security_schemes)$": {
62
+ "additionalProperties": {
63
+ "$ref": "lf.a2a.v1.SecurityScheme.jsonschema.json"
64
+ },
65
+ "description": "The security scheme details used for authenticating with this agent.",
66
+ "propertyNames": {
67
+ "type": "string"
68
+ },
69
+ "type": "object"
70
+ },
71
+ "^(supported_interfaces)$": {
72
+ "description": "Ordered list of supported interfaces. The first entry is preferred.",
73
+ "items": {
74
+ "$ref": "lf.a2a.v1.AgentInterface.jsonschema.json"
75
+ },
76
+ "type": "array"
77
+ }
78
+ },
79
+ "properties": {
80
+ "capabilities": {
81
+ "$ref": "lf.a2a.v1.AgentCapabilities.jsonschema.json",
82
+ "description": "A2A Capability set supported by the agent."
83
+ },
84
+ "defaultInputModes": {
85
+ "description": "The set of interaction modes that the agent supports across all skills.\n This can be overridden per skill. Defined as media types.",
86
+ "items": {
87
+ "type": "string"
88
+ },
89
+ "type": "array"
90
+ },
91
+ "defaultOutputModes": {
92
+ "description": "The media types supported as outputs from this agent.",
93
+ "items": {
94
+ "type": "string"
95
+ },
96
+ "type": "array"
97
+ },
98
+ "description": {
99
+ "default": "",
100
+ "description": "A human-readable description of the agent, assisting users and other agents\n in understanding its purpose.\n Example: \"Agent that helps users with recipes and cooking.\"",
101
+ "type": "string"
102
+ },
103
+ "documentationUrl": {
104
+ "description": "A URL providing additional documentation about the agent.",
105
+ "type": "string"
106
+ },
107
+ "iconUrl": {
108
+ "description": "Optional. A URL to an icon for the agent.",
109
+ "type": "string"
110
+ },
111
+ "name": {
112
+ "default": "",
113
+ "description": "A human readable name for the agent.\n Example: \"Recipe Agent\"",
114
+ "type": "string"
115
+ },
116
+ "provider": {
117
+ "$ref": "lf.a2a.v1.AgentProvider.jsonschema.json",
118
+ "description": "The service provider of the agent."
119
+ },
120
+ "securityRequirements": {
121
+ "description": "Security requirements for contacting the agent.",
122
+ "items": {
123
+ "$ref": "lf.a2a.v1.SecurityRequirement.jsonschema.json"
124
+ },
125
+ "type": "array"
126
+ },
127
+ "securitySchemes": {
128
+ "additionalProperties": {
129
+ "$ref": "lf.a2a.v1.SecurityScheme.jsonschema.json"
130
+ },
131
+ "description": "The security scheme details used for authenticating with this agent.",
132
+ "propertyNames": {
133
+ "type": "string"
134
+ },
135
+ "type": "object"
136
+ },
137
+ "signatures": {
138
+ "description": "JSON Web Signatures computed for this `AgentCard`.",
139
+ "items": {
140
+ "$ref": "lf.a2a.v1.AgentCardSignature.jsonschema.json"
141
+ },
142
+ "type": "array"
143
+ },
144
+ "skills": {
145
+ "description": "Skills represent the abilities of an agent.\n It is largely a descriptive concept but represents a more focused set of behaviors that the\n agent is likely to succeed at.",
146
+ "items": {
147
+ "$ref": "lf.a2a.v1.AgentSkill.jsonschema.json"
148
+ },
149
+ "type": "array"
150
+ },
151
+ "supportedInterfaces": {
152
+ "description": "Ordered list of supported interfaces. The first entry is preferred.",
153
+ "items": {
154
+ "$ref": "lf.a2a.v1.AgentInterface.jsonschema.json"
155
+ },
156
+ "type": "array"
157
+ },
158
+ "version": {
159
+ "default": "",
160
+ "description": "The version of the agent.\n Example: \"1.0.0\"",
161
+ "type": "string"
162
+ }
163
+ },
164
+ "title": "Agent Card",
165
+ "type": "object"
166
+ }
167
+ }
168
+ }
@@ -0,0 +1,111 @@
1
+ {
2
+ "protocol": "REST (HTTP+JSON)",
3
+ "http_method": "GET",
4
+ "path": "/tasks/{id}",
5
+ "tenant_path": "/{tenant}/tasks/{id}",
6
+ "description": "Gets the latest state of a task.",
7
+ "streaming": false,
8
+ "request": {
9
+ "type": "GetTaskRequest",
10
+ "schema": {
11
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
12
+ "additionalProperties": false,
13
+ "description": "Represents a request for the `GetTask` method.",
14
+ "patternProperties": {
15
+ "^(history_length)$": {
16
+ "anyOf": [
17
+ {
18
+ "maximum": 2147483647,
19
+ "minimum": -2147483648,
20
+ "type": "integer"
21
+ },
22
+ {
23
+ "pattern": "^-?[0-9]+$",
24
+ "type": "string"
25
+ }
26
+ ],
27
+ "description": "The maximum number of most recent messages from the task's history to retrieve. An\n unset value means the client does not impose any limit. A value of zero is\n a request to not include any messages. The server MUST NOT return more\n messages than the provided value, but MAY apply a lower limit."
28
+ }
29
+ },
30
+ "properties": {
31
+ "historyLength": {
32
+ "anyOf": [
33
+ {
34
+ "maximum": 2147483647,
35
+ "minimum": -2147483648,
36
+ "type": "integer"
37
+ },
38
+ {
39
+ "pattern": "^-?[0-9]+$",
40
+ "type": "string"
41
+ }
42
+ ],
43
+ "description": "The maximum number of most recent messages from the task's history to retrieve. An\n unset value means the client does not impose any limit. A value of zero is\n a request to not include any messages. The server MUST NOT return more\n messages than the provided value, but MAY apply a lower limit."
44
+ },
45
+ "id": {
46
+ "default": "",
47
+ "description": "The resource ID of the task to retrieve.",
48
+ "type": "string"
49
+ },
50
+ "tenant": {
51
+ "default": "",
52
+ "description": "Optional. Tenant ID, provided as a path parameter.",
53
+ "type": "string"
54
+ }
55
+ },
56
+ "title": "Get Task Request",
57
+ "type": "object"
58
+ }
59
+ },
60
+ "response": {
61
+ "type": "Task",
62
+ "schema": {
63
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
64
+ "additionalProperties": false,
65
+ "description": "`Task` is the core unit of action for A2A. It has a current status\n and when results are created for the task they are stored in the\n artifact. If there are multiple turns for a task, these are stored in\n history.",
66
+ "patternProperties": {
67
+ "^(context_id)$": {
68
+ "default": "",
69
+ "description": "Unique identifier (e.g. UUID) for the contextual collection of interactions\n (tasks and messages).",
70
+ "type": "string"
71
+ }
72
+ },
73
+ "properties": {
74
+ "artifacts": {
75
+ "description": "A set of output artifacts for a `Task`.",
76
+ "items": {
77
+ "$ref": "lf.a2a.v1.Artifact.jsonschema.json"
78
+ },
79
+ "type": "array"
80
+ },
81
+ "contextId": {
82
+ "default": "",
83
+ "description": "Unique identifier (e.g. UUID) for the contextual collection of interactions\n (tasks and messages).",
84
+ "type": "string"
85
+ },
86
+ "history": {
87
+ "description": "The history of interactions from a `Task`.",
88
+ "items": {
89
+ "$ref": "lf.a2a.v1.Message.jsonschema.json"
90
+ },
91
+ "type": "array"
92
+ },
93
+ "id": {
94
+ "default": "",
95
+ "description": "Unique identifier (e.g. UUID) for the task, generated by the server for a\n new task.",
96
+ "type": "string"
97
+ },
98
+ "metadata": {
99
+ "$ref": "google.protobuf.Struct.jsonschema.json",
100
+ "description": "A key/value object to store custom metadata about a task."
101
+ },
102
+ "status": {
103
+ "$ref": "lf.a2a.v1.TaskStatus.jsonschema.json",
104
+ "description": "The current status of a `Task`, including `state` and a `message`."
105
+ }
106
+ },
107
+ "title": "Task",
108
+ "type": "object"
109
+ }
110
+ }
111
+ }