A2A Java SDK 1.0.0.Beta1 Released

Wait 5 sec.

We are pleased to announce the release of A2A Java SDK 1.0.0.Beta1, our first release fully aligned with the final A2A Specification 1.0.0. The A2A Protocol has reached stability as an open standard, and this release marks the Java SDK tracking that maturity: protocol conformance is the central focus, and the SDK coordinates now reflect the project’s identity under the A2A Project organization.As a sign of this maturity, two structural breaking changes accompany this release:Java packages have been renamed from io.a2a. to org.a2aproject.sdk.The Maven groupId has changed from io.github.a2asdk to org.a2aproject.sdk (first introduced in 1.0.0.Alpha4)What’s A2A?The Agent2Agent (A2A) Protocol is an open standard that enables AI agents to communicate and collaborate with one another, regardless of each agent’s underlying framework, language, or vendor. The A2A Java SDK makes it easy to build A2A-compliant agents in Java, with reference implementations based on Quarkus.Breaking ChangesNew Maven CoordinatesThe Maven groupId has changed from io.github.a2asdk to org.a2aproject.sdk. If you are upgrading from any previous release, you must update your build files accordingly.The root artifact coordinates were renamed to reflect the project’s new home under the A2A Project organization and its availability on Maven Central.Update your pom.xml dependencies accordingly: org.a2aproject.sdk a2a-java-sdk-bom 1.0.0.Beta1 pom import org.a2aproject.sdk a2a-java-sdk-client org.a2aproject.sdk a2a-java-sdk-reference-jsonrpc org.a2aproject.sdk a2a-java-sdk-reference-grpc org.a2aproject.sdk a2a-java-sdk-reference-restNew Java Package NamesAll Java packages have been renamed from io.a2a. to org.a2aproject.sdk.. You must update all import statements in your source code when upgrading from any previous release.For example:// Beforeimport io.a2a.client.A2AClient;import io.a2a.model.Task;// Afterimport org.a2aproject.sdk.client.A2AClient;import org.a2aproject.sdk.model.Task;Most IDEs can automate this migration via a project-wide find-and-replace of io.a2a → org.a2aproject.sdk in import statements, or by using the "Optimize Imports" / "Migrate" refactoring tools.Key Highlights in 1.0.0.Beta1Equal Transport SupportAll three transports — JSON-RPC, gRPC, and HTTP+JSON/REST — are now fully supported and considered equal. Simply add the dependency for the transport you need (a2a-java-sdk-reference-jsonrpc, a2a-java-sdk-reference-grpc, or a2a-java-sdk-reference-rest) and the SDK will work seamlessly regardless of your choice.Structured Error Codes and DetailsA2A error types now carry structured error codes and details, making error handling more precise and easier to integrate with observability tooling. Error responses also now use the correct data field name (previously details) in JSON/HTTP responses, in alignment with the specification.HTTP Caching Headers for Agent CardThe Agent Card endpoint now returns proper HTTP caching headers, allowing clients and proxies to cache agent metadata efficiently and reduce unnecessary round trips.DataPart.fromJson() Factory MethodA new DataPart.fromJson() factory method makes it straightforward to construct a DataPart from a raw JSON string, without requiring prior deserialization.Flexible HTTP Client SupportThe SDK defaults to a JdkA2AHttpClient backed by the standard JDK HttpClient, suitable for any Java environment. The HttpClient builder also supports constructing a JdkA2AHttpClient from a prebuilt HttpClient instance, enabling advanced configuration scenarios such as custom SSL contexts or connection pool tuning.When running on Quarkus, you can instead use the VertxA2AHttpClient, which is backed by the Vert.x HTTP client for better integration with Quarkus’s reactive engine, connection management, and observability features.Bug Fixes and StabilityTerminal-state tasks now correctly reject further operations with UnsupportedOperationErrorRace conditions in EventConsumer and the SSE transport have been resolvedPushNotificationNotSupportedError now returns HTTP 501 as required by the specificationPOST requests without a Content-Type header are now accepted when the body is emptyTenant and protocolVersion are now correctly preserved in the ClientBuilderWhat’s Next: Road to 1.0.0.GABefore the 1.0.0.GA release, we plan to introduce the following:Cross-version protocol support: the SDK will be able to handle both version 1.0.0 and 0.3.0 of the A2A Protocol simultaneously, making it easier to interoperate with agents built against earlier versions of the specification.Specification micro-update tracking: as the A2A Specification evolves with patch-level updates, the SDK will follow those changes promptly to remain fully conformant.ContributorsThis release was made possible by the work of seven contributors. A special thank you to our four first-time contributors:@brucearctor@maff@Lirons01@yyy9942And to the returning contributors:@jmesnil@kabir@ehsavoieThank you all for your code, reviews, and feedback!ResourcesRelease Notes on GitHubMaven CentralJavaDocA2A SpecificationCome Join UsWe value your feedback a lot so please report bugs, ask for improvements…​ Let’s build something great together!If you are an A2A Java SDK user or just curious, don’t be shy and join our welcoming community:provide feedback on GitHub;craft some code and push a PR;discuss with us on Zulip and on Discord;