Skip to content

Symfony bundle for easy JSON-RPC server OpenAPI 3.0.0 documentation

License

Notifications You must be signed in to change notification settings

yoanm/symfony-jsonrpc-http-server-openapi-doc

Repository files navigation

Symfony JSON-RPC Http server OpenAPI documentation

License Code size Dependabot Status

Scrutinizer Build Status Scrutinizer Code Quality Codacy Badge

CI codecov Symfony Versions

Latest Stable Version Packagist PHP version

Symfony bundle for easy JSON-RPC server OpenAPI 3.0.0 documentation

Symfony bundle for yoanm/jsonrpc-http-server-openapi-doc-sdk

Versions

  • Symfony v3/4 - PHP >=7.1 : ^v0.X
  • Symfony v4/5 - PHP >=7.2 : ^v1.0

How to use

Once configured, your project is ready to handle HTTP GET request on /doc/openapi.json endpoint. Result will be a openapi compatible file.

See below how to configure it.

Configuration

Behat demo app configuration folders can be used as examples.

  • Add the bundles in your config/bundles.php file:

    // config/bundles.php
    return [
        ...
        Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
        Yoanm\SymfonyJsonRpcHttpServer\JsonRpcHttpServerBundle::class => ['all' => true],
        Yoanm\SymfonyJsonRpcHttpServerDoc\JsonRpcHttpServerDocBundle::class => ['all' => true],
        Yoanm\SymfonyJsonRpcHttpServerOpenAPIDoc\JsonRpcHttpServerOpenAPIDocBundle::class => ['all' => true],
        ...
    ];
  • Configure yoanm/symfony-jsonrpc-http-server as described on yoanm/symfony-jsonrpc-http-server documentation.

  • Configure yoanm/symfony-jsonrpc-http-server-doc as described on yoanm/symfony-jsonrpc-http-server-doc documentation.

  • Query your project at /doc/openapi.json endpoint and you will have a OpenAPI json documentation file of your server.

Event

You are able to enhance resulting documentation by listening on json_rpc_http_server_openapi_doc.array_created event.

See below an example of listener service configuration:

  method_doc_created.listener:
    class: Full\Namespace\DocCreatedListener # <-- replace by your class name
    tags:
      - name: 'kernel.event_listener'
        event: 'json_rpc_http_server_openapi_doc.array_created'
        method: 'enhanceMethodDoc' # <-- replace by your method name

You will receive an event of type OpenAPIDocCreatedEvent.

You can take example on Behat DocCreatedListener  

Contributing

See contributing note