Implement a2a registry support #7008
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Disclaimer
I'm holding this until the official spec is released.
Summary
Implements full A2A (Agent-to-Agent) Agent Card Registry support for Apicurio Registry, including a dedicated A2A API, agent discovery endpoint, and compatibility checking. Fixes #7003
Root Cause
This change enables Apicurio Registry to serve as an Agent Registry for A2A protocol applications. The A2A protocol (Agent-to-Agent) is Google's standard for AI agent communication and discovery.
Agent Cards are JSON metadata documents that describe an AI agent's capabilities, skills, endpoints, and authentication requirements.
The implementation goes beyond the original prototype scope to include:
Changes
New A2A API (separate from v3 core API)
A2A API Implementation
version management
New Artifact Type
Schema Utilities (schema-util module)
Tests
Test Fixtures
Known Limitations
This is a POC implementation with the following known limitations that should be addressed before production use:
Scalability Issues
searchAgents()and the discovery endpoint (/.well-known/agents.json) load up to 1000 agents into memory for filtering. This won't scale for large deployments./.well-known/agents.jsonendpoint returns all agents without pagination support.API Response Issues
createAgent()doesn't return the assigned agentId: When an agent is created without specifying anagentId, the server generates one, but the response only contains theAgentCardcontent without the assigned ID.getAgentVersions()response lacks version information: The endpoint returnsSearchedAgentobjects but doesn't include the actual version identifier for each entry.Code Quality Issues
RuntimeExceptioninstead of proper JAX-RS exceptions (e.g.,BadRequestException,InternalServerErrorException) for appropriate HTTP status codes.AGENTS_GROUP_ID = "agents"constant is defined separately in bothAgentsResourceImplandAgentDiscoveryResource.AgentCataloginner class: Should be a proper bean in thebeanspackage or defined in the OpenAPI spec for consistency.Functional Limitations
Test plan