Validation Overview
The A2A Node SDK uses Zod for runtime validation of messages, tasks, and other protocol objects. This section documents the validation utilities available.
Basic Usage
import { z } from '@a2a/sdk';
// Create a schema
const taskSchema = z.object({
id: z.string(),
name: z.string().min(1),
status: z.enum(['pending', 'running', 'completed']),
createdAt: z.date()
});
// Validate data
const result = taskSchema.safeParse(input);
if (result.success) {
// Type-safe access to validated data
const task = result.data;
} else {
// Handle validation errors
console.error(result.error);
}
Validation Types
- Primitives: Strings, numbers, booleans, dates
- Objects: Nested structures with type checking
- Arrays: Typed collections with length constraints
- Unions: Alternative valid types
- Custom: Extend with your own validators
Common Patterns
Message Validation
const messageSchema = z.object({
type: z.literal('task_update'),
payload: z.object({
taskId: z.string(),
status: z.enum(['started', 'progress', 'completed'])
})
});
Task Validation
const taskInputSchema = z.object({
name: z.string().min(3),
parameters: z.record(z.string(), z.unknown()),
timeout: z.number().positive().optional()
});