Download the PHP package stixx/openapi-command-bundle without Composer
On this page you can find all versions of the php package stixx/openapi-command-bundle. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download stixx/openapi-command-bundle
More information about stixx/openapi-command-bundle
Files in stixx/openapi-command-bundle
Package openapi-command-bundle
Short Description Create Command-Bus APIs with auto-generated OpenAPI docs and schema-driven request validation
License MIT
Informations about the package openapi-command-bundle
OpenAPI Command Bundle
The OpenAPI Command Bundle is a Symfony bundle that allows you to build HTTP APIs around Command Bus messages (DTOs) without the need for manual controller creation or Symfony #[Route] attributes on your commands.
By using standard OpenAPI operation attributes (from zircote/swagger-php) directly on your command DTOs, this bundle automatically generates Symfony routes and handles the entire request-to-command lifecycle: deserialization, validation, dispatching to the messenger bus, and responding.
Key Features
- OpenAPI-Driven Routing: Define your API endpoints directly on your command DTOs using
#[OA\Post],#[OA\Get],#[OA\Put], etc. - No Manual Controllers: A single
CommandControllerhandles all generated routes by default. - Automatic Deserialization: Automatically maps JSON request bodies, route parameters, and query parameters to your command DTOs.
- Two-Layer Validation: Each request is checked against the OpenAPI schema (headers, query parameters, body shape via
league/openapi-psr7-validator) and the deserialized command is validated with Symfony Validator constraints before it reaches your handler. - Messenger Integration: Dispatches your commands directly to the Symfony Messenger bus.
- Auto-Generated Documentation: Seamlessly integrates with
NelmioApiDocBundleto include your command-based routes in your OpenAPI/Swagger documentation. - Problem Details Support: Returns RFC 7807 compliant error responses for validation and mapping errors.
Installation
1. Install via Composer
2. Enable the Bundle
If you are using Symfony Flex, the bundle will be automatically enabled. Otherwise, add it to your config/bundles.php:
Usage
1. Create a Command DTO
Annotate your command with OpenAPI attributes. No Symfony #[Route] is needed.
2. Create a Message Handler
Implement a standard Symfony Messenger handler for your command.
3. Call the API
The bundle automatically registers the route /api/projects (POST).
The bundle will:
- Detect the route and map it to
CreateProjectCommand. - Deserialize the JSON body into the command object.
- Validate the command using Symfony Validator.
- Dispatch the command to the Messenger bus.
- Return the handler's result as a JSON response with an appropriate status code (e.g.,
201 Created).
Configuration
You can customize the bundle's behavior in config/packages/stixx_openapi_command.yaml:
Documentation
For more detailed information, please refer to the following documentation:
- Command Routing & Request Handling
- Validation & Error Handling
- OpenAPI Integration
- Extension Points
Stability & supported API
The bundle distinguishes a small public API surface from its internal implementation. Public surface is the contract you can safely depend on; internals can change in any release.
Public (@api) — guaranteed BC across minor releases:
| Type | What it is |
|---|---|
Stixx\OpenApiCommandBundle\StixxOpenApiCommandBundle |
Bundle entry point |
Stixx\OpenApiCommandBundle\Attribute\CommandObject |
Marker attribute for command arguments |
Stixx\OpenApiCommandBundle\Exception\ApiProblemException |
Throw this from your code to express RFC 7807 problems |
Stixx\OpenApiCommandBundle\Exception\ExceptionToApiProblemTransformerInterface |
Replace to customize how exceptions become problem responses |
Stixx\OpenApiCommandBundle\Responder\ResponderInterface |
Implement to handle custom result shapes (CSV, XML, …) |
Stixx\OpenApiCommandBundle\Response\StatusResolverInterface |
Replace to customize status code resolution |
Stixx\OpenApiCommandBundle\Validator\ValidatorInterface |
Implement to add custom request-level validation |
Stixx\OpenApiCommandBundle\Model\ProblemDetails |
OpenAPI schema model — reference from your annotations |
Stixx\OpenApiCommandBundle\Model\ProblemDetailsInvalidRequestBody |
OpenAPI schema model — reference from your annotations |
Stixx\OpenApiCommandBundle\Model\Violation |
OpenAPI schema model — reference from your annotations |
Internal (@internal) — everything else, including default implementations like JsonResponder, DefaultExceptionToApiProblemTransformer, RequestValidator, the controllers, DI extension, compiler passes, route loaders, and event subscribers. Do not extend or rely on these directly; replace them through the @api interfaces above.
The bundle's configuration schema (the keys under stixx_openapi_command:) is also part of the supported API.
See Extension Points for a worked example of each extension interface.
Requirements
- PHP 8.4+
- Symfony 7.3+ or 8.0+
License
This bundle is released under the MIT License.
All versions of openapi-command-bundle with dependencies
ext-json Version *
league/openapi-psr7-validator Version ^0.22.0
nelmio/api-doc-bundle Version ^5.8
nyholm/psr7 Version ^1.8
symfony/dependency-injection Version ^7.3 || ^8.0
symfony/framework-bundle Version ^7.3 || ^8.0
symfony/messenger Version ^7.3 || ^8.0
symfony/property-access Version ^7.3 || ^8.0
symfony/psr-http-message-bridge Version ^7.3 || ^8.0
symfony/serializer Version ^7.3 || ^8.0
symfony/validator Version ^7.3 || ^8.0