Display swagger on api route on Slim

I just started with php and Slim framework. My main goal is to generate a RESTful API where I have a /swagger route where I show the API documentation using swagger ui.

This are the steps I followed:

  • Install last version php
  • Install composer
  • Install required dependecies:
    • composer require slim/slim:”4.*”
    • composer require zircote/swagger-php
  • Create API project (composer create-project slim/slim-skeleton testAPI)
  • Anotate involved elements in my API
  • Generate swagger file (.vendorbinopenapi -output .swagger.json .src)
  • Add new route to my API:

use OpenApiGenerator as OpenApiGenerator;

/**
* @OAGet(
*     path="/openapi",
*     tags={"documentation"},
*     summary="OpenAPI JSON File that describes the API",
*     @OAResponse(response="200", description="OpenAPI Description File"),
* )
*/

    $app->get('/swagger', function ($request, $response, $args) {
        $swagger = OpenApiGenerator::scan(['../swagger.json']);
        $response->getBody()->write(json_encode($swagger));
        return $response->withHeader('Content-Type', 'application/json');
    });};

But when I go and run the api and check /swagger route this is what I get:

{
    "statusCode": 500,
    "error": {
        "type": "SERVER_ERROR",
        "description": "WARNING: Required @OA\PathItem() not found"
    }
}

Have I missed something? Or my OpenApiGenerator::scan([‘../swagger.json’]) does not make sense? I have seen people doing OpenApiGenerator::scan([‘.’]) but that gives me the exact same output.