Supported Events
Swagger Bake uses the CakePHP Event System
Description | Event |
---|---|
Dispatched each time an OpenAPI Path > Operation is created | SwaggerBake.Operation.created |
Dispatched each time an OpenAPI Path is created | SwaggerBake.Path.created |
Dispatched each time an OpenAPI Schema is created | SwaggerBake.Schema.created |
Dispatched during initialization phase on SwaggerBake | SwaggerBake.initialize |
Dispatched before SwaggerBake outputs OpenAPI JSON | SwaggerBake.beforeRender |
Operation Created
The SwaggerBake.Operation.created
is dispatched each time a new SwaggerBake\Lib\OpenApi\Operation
is created.
Here is an example of modifying a summary and adding OpenAPI security:
EventManager::instance()
->on('SwaggerBake.Operation.created', function (Event $event) {
/** @var \SwaggerBake\Lib\OpenApi\Operation $operation */
$operation = $event->getSubject();
$operation
->setSummary('My new summary.')
->setSecurity([
(new \SwaggerBake\Lib\OpenApi\PathSecurity('BearerAuth'))
]);
});
Path Created
The SwaggerBake.Path.created
is dispatched each time a newSwaggerBake\Lib\OpenApi\Path
is created. Here is an
example of modifying a summary:
EventManager::instance()
->on('SwaggerBake.Path.created', function (Event $event) {
/** @var \SwaggerBake\Lib\OpenApi\Path $path */
$path = $event->getSubject();
$path->setSummary('My new summary');
});
Schema Created
The SwaggerBake.Schema.created
is dispatched each time a new SwaggerBake\Lib\OpenApi\Schema
instance is
created. Here is an example of modifying a title:
EventManager::instance()
->on('SwaggerBake.Schema.created', function (Event $event) {
/** @var \SwaggerBake\Lib\OpenApi\Schema $schema */
$schema = $event->getSubject();
$schema->setTitle('My new title');
});
Initialize
The SwaggerBake.initialize
is dispatched once, just before SwaggerBake\Lib\Swagger
begins building OpenAPI
from your routes, models, and attributes.
EventManager::instance()
->on('SwaggerBake.initialize', function (Event $event) {
/** @var \SwaggerBake\Lib\Swagger $swagger */
$swagger = $event->getSubject();
$array = $swagger->getArray();
$array['title'] = 'A new title';
$swagger->setArray($array);
});
Before Render
The SwaggerBake.beforeRender
is dispatched once, just before SwaggerBake\Lib\Swagger
converts data to an
OpenAPI array or json.
EventManager::instance()
->on('SwaggerBake.beforeRender', function (Event $event) {
/** @var \SwaggerBake\Lib\Swagger $swagger */
$swagger = $event->getSubject();
$array = $swagger->getArray();
$array['title'] = 'A new title';
$swagger->setArray($array);
});