A powerful and flexible JSON Schema validation solution for Symfony applications with automatic OpenAPI documentation generation.
- Complete Request Validation: Validate request body, query parameters, path variables, and headers
- Automatic OpenAPI Documentation: Generate API documentation with nelmio/api-doc-bundle integration
- Priority-Based Validation: Control validation order with MapRequest priority system
- Type-Safe Results: Strongly typed validated data with ValidatedDtoInterface support
- Comprehensive Error Handling: Detailed validation errors with JSON Schema feedback
- Modern Symfony Integration: Full support for Symfony 7.4+ and 8.0+ with attribute-based configuration
📚 Complete Documentation - Visit our comprehensive documentation website
- 🔗 How It Works
- 🔗 Installation Guide
- 🔗 Quick Start Tutorial
- 🔗 Schema Basics
- 🔗 Configuration Options
- 🔗 DTO Injection
- 🔗 OpenAPI Integration
- 🔗 Examples
- 🔗 API Reference
composer require outcomer/symfony-json-schema-validationuse Outcomer\Bundle\SymfonyJsonSchemaValidation\Attribute\MapRequest;
class UserController
{
#[Route('/api/users', methods: ['POST'])]
public function create(
#[MapRequest(
schemaPath: 'schemas/user-create.json',
validationGroups: ['create']
)]
UserCreateDto $user
): JsonResponse {
// $user contains validated data from request body, query, path, and headers
return new JsonResponse(['id' => $userService->create($user)]);
}
}{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"body": {
"type": "object",
"properties": {
"name": {"type": "string", "minLength": 1},
"email": {"type": "string", "format": "email"}
},
"required": ["name", "email"]
},
"query": {
"type": "object",
"properties": {
"locale": {"type": "string", "enum": ["en", "de", "fr"]}
}
},
"headers": {
"type": "object",
"properties": {
"x-api-version": {"type": "string", "pattern": "^v[1-9]$"}
}
}
}
}- Developer Experience: Intuitive attribute-based validation with full IDE support
- API Documentation: Automatic OpenAPI spec generation with zero configuration
- Production Ready: Battle-tested with comprehensive error handling and logging
- Flexible Schema: Support for complex validation scenarios across all request components
- Modern PHP: Takes advantage of PHP 8.2+ features and Symfony 7.4+/8.0+ improvements
We welcome contributions! Please see our Contributing Guide for details.
This project is licensed under the MIT License - see the LICENSE file for details.
Need Help?
- 📖 Check our documentation
- 🐛 Report issues
- 💬 Join discussions