<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

    <services>
        <!-- Controllers -->
        <service id="nelmio_api_doc.controller.swagger_ui" class="Nelmio\ApiDocBundle\Controller\SwaggerUiController">
            <argument type="service" id="nelmio_api_doc.generator" />
            <argument type="service" id="twig" />
        </service>

        <service id="nelmio_api_doc.controller.swagger" class="Nelmio\ApiDocBundle\Controller\DocumentationController">
            <argument type="service" id="nelmio_api_doc.generator" />
        </service>

        <!-- Swagger Spec Generator -->
        <service id="nelmio_api_doc.generator" class="Nelmio\ApiDocBundle\ApiDocGenerator">
            <argument type="collection" /> <!-- Describers -->
            <argument type="collection" /> <!-- Model Describers -->
        </service>

        <service id="nelmio_api_doc.controller_reflector" class="Nelmio\ApiDocBundle\Util\ControllerReflector" public="false">
            <argument type="service" id="service_container" />
            <argument type="service" id="controller_name_converter" />
        </service>

        <!-- Describers -->
        <service id="nelmio_api_doc.describers.config" class="Nelmio\ApiDocBundle\Describer\ExternalDocDescriber" public="false">
            <argument type="collection" />

            <tag name="nelmio_api_doc.describer" priority="1000" />
        </service>

        <service id="nelmio_api_doc.describers.route" class="Nelmio\ApiDocBundle\Describer\RouteDescriber" public="false">
            <argument type="service" id="nelmio_api_doc.routes" />
            <argument type="service" id="nelmio_api_doc.controller_reflector" />
            <argument type="collection" />

            <tag name="nelmio_api_doc.describer" priority="-400" />
        </service>

        <service id="nelmio_api_doc.describers.default" class="Nelmio\ApiDocBundle\Describer\DefaultDescriber" public="false">
            <tag name="nelmio_api_doc.describer" priority="-1000" />
        </service>

        <!-- Routing Describers -->
        <service id="nelmio_api_doc.route_describers.route_metadata" class="Nelmio\ApiDocBundle\RouteDescriber\RouteMetadataDescriber" public="false">
            <tag name="nelmio_api_doc.route_describer" priority="-300" />
        </service>

        <!-- Model Describers -->
        <service id="nelmio_api_doc.model_describers.object" class="Nelmio\ApiDocBundle\ModelDescriber\ObjectModelDescriber" public="false">
            <argument type="service" id="property_info" />

            <tag name="nelmio_api_doc.model_describer" />
        </service>

        <service id="nelmio_api_doc.model_describers.datetime" class="Nelmio\ApiDocBundle\ModelDescriber\DateTimeModelDescriber" public="false">
            <tag name="nelmio_api_doc.model_describer" priority="100" />
        </service>

        <service id="nelmio_api_doc.model_describers.collection" class="Nelmio\ApiDocBundle\ModelDescriber\CollectionModelDescriber" public="false">
            <tag name="nelmio_api_doc.model_describer" />
        </service>

        <service id="nelmio_api_doc.model_describers.scalar" class="Nelmio\ApiDocBundle\ModelDescriber\ScalarModelDescriber" public="false">
            <tag name="nelmio_api_doc.model_describer" />
        </service>
    </services>

</container>