PHPackages                             bornfight/jsonapi-documentation - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. bornfight/jsonapi-documentation

ActiveSymfony-bundle[API Development](/categories/api)

bornfight/jsonapi-documentation
===============================

This bundle allows for automatic generation of JsonApi documentation

v0.1.2(5y ago)34.7k[5 issues](https://github.com/bornfight/jsonapi-documentation/issues)MITPHPPHP ^7.1

Since Sep 4Pushed 5y ago4 watchersCompare

[ Source](https://github.com/bornfight/jsonapi-documentation)[ Packagist](https://packagist.org/packages/bornfight/jsonapi-documentation)[ RSS](/packages/bornfight-jsonapi-documentation/feed)WikiDiscussions master Synced yesterday

READMEChangelog (3)Dependencies (8)Versions (4)Used By (0)

jsonapi-documentation
=====================

[](#jsonapi-documentation)

This is a Symfony 5 package that is meant to be used in combination with [Pakhanad JsonApi Bundle](https://github.com/paknahad/jsonapi-bundle). It can be used to generate Api documentation at anytime during the development, not only after generating entities. This can be particularly useful when you need to make a lot of changes on your domain model during development.

Installation
------------

[](#installation)

To install this package use composer:

```
composer require bornfight/jsonapi-documentation --dev

```

Register you bundle by adding:

```
    Bornfight\JsonApiDocumentation\BornfightJsonApiDocumentation::class => [ 'all' => true],
```

in `bundles.php`

Usage
-----

[](#usage)

To generate JsonApi documentation, use command:

```
php bin/console jsonapi:documentation:generate

```

this will create `documentation/api.yaml` file that can be used as API Documentation on external services like [Swagger](https://swagger.io/), or to go generate [Postman](https://www.postman.com/) requests.

You can use this command anytime, it will look for the latest changes in your API and overwrite old `api.yaml` file.

How it works
------------

[](#how-it-works)

This command will check your Controller classes and look for methods:

- list()
- new()
- view()
- edit()
- delete()

After that, it will check for your Transformer and Hydrator classes to generate request and response schemas. It expects these methods:

```
getRelationships()
getAttributes()

```

These methods should return an array. The keys of array elements will be used as attributes and relationships in requests.

Customization
-------------

[](#customization)

### Using a different template

[](#using-a-different-template)

If you want, you can use a different template. Create `template.yaml` file in your `ocumentation/` directory. Original template file:

```
#template.yaml
openapi: 3.0.0
info:
  description: "This is where you can give more detailed description of your API"
  version: "1.0.0"
  title: "Openapi JsonApi"
  termsOfService: "http://swagger.io/terms/"
  license:
    name: "Apache 2.0"
    url: "http://www.apache.org/licenses/LICENSE-2.0.html"
paths:
externalDocs:
  description: "Find out more about Swagger"
  url: "http://swagger.io"
servers:
  - url: https://localhost:8000/api
    description: Local Environment
components:
  securitySchemes:
    bearerToken:
      type: http
      scheme: bearer
      bearerFormat: JWT
security:
  - bearerToken: []
```

### Add custom documentation

[](#add-custom-documentation)

If you want to add custom routes, you can create a class that implements `CustomDocumentationInterface` class. You also need to give this class a tag with:

```
#services.yaml
    App\Documentation\CustomDocumentationHandler:
        tags: ['doc.custom_handler']
```

After that, you can add any logic you want after the generation process, for example:

```
