Skip to content

Areas

Warning: You are browsing the documentation for version 3.x which is not maintained anymore. If some of your projects are still using this version, consider upgrading.

We've already seen that you can configure which routes are documented using nelmio_api_doc.areas:

1
2
3
4
5
nelmio_api_doc:
    areas:
        path_patterns: [ ^/api ]
        host_patterns: [ ^api\. ]
        name_patterns: [ ^api_v1 ]

But in fact, this config option is way more powerful and allows you to split your documentation in several parts.

Configuration

You can define areas which will each generates a different documentation:

1
2
3
4
5
6
7
8
9
10
11
12
nelmio_api_doc:
    areas:
        default:
            path_patterns: [ ^/api ]
            host_patterns: [ ^api\. ]
        internal:
            path_patterns: [ ^/internal ]
        commercial:
            path_patterns: [ ^/commercial ]
        store:
            # Includes routes with names containing 'store'
            name_patterns: [ store ]

Your main documentation is under the default area. It's the one shown when accessing /api/doc.

Then update your routing to be able to access your different documentations:

1
2
3
4
5
6
7
8
9
10
11
# app/config/routing.yml
app.swagger_ui:
    path: /api/doc/{area}
    methods: GET
    defaults: { _controller: nelmio_api_doc.controller.swagger_ui, area: default }

# To expose them as JSON
#app.swagger.areas:
#    path: /api/doc/{area}.json
#    methods: GET
#    defaults: { _controller: nelmio_api_doc.controller.swagger }

That's all! You can now access /api/doc/internal, /api/doc/commercial and /api/doc/store.

This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.
TOC
    Version