<?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>
        <service id="api_platform.state_provider.main" alias="api_platform.state_provider.locator" />

        <service id="api_platform.state_provider.content_negotiation" class="ApiPlatform\State\Provider\ContentNegotiationProvider" decorates="api_platform.state_provider.main" decoration-priority="100">
            <argument type="service" id="api_platform.state_provider.content_negotiation.inner" />
            <argument type="service" id="api_platform.negotiator" />
            <argument>%api_platform.formats%</argument>
            <argument>%api_platform.error_formats%</argument>
        </service>

        <service id="api_platform.state_provider.read" class="ApiPlatform\State\Provider\ReadProvider" decorates="api_platform.state_provider.main" decoration-priority="500">
            <argument type="service" id="api_platform.state_provider.read.inner" />
            <argument type="service" id="api_platform.serializer.context_builder" />
        </service>

        <service id="api_platform.state_provider.deserialize" class="ApiPlatform\State\Provider\DeserializeProvider" decorates="api_platform.state_provider.main" decoration-priority="300">
            <argument type="service" id="api_platform.state_provider.deserialize.inner" />
            <argument type="service" id="api_platform.serializer" />
            <argument type="service" id="api_platform.serializer.context_builder" />
            <argument type="service" id="translator" on-invalid="null" />
        </service>

        <service id="api_platform.error_listener" class="ApiPlatform\Symfony\EventListener\ErrorListener">
            <argument key="$controller">api_platform.symfony.main_controller</argument>
            <argument key="$logger" type="service" id="logger" on-invalid="null" />
            <argument key="$debug">%kernel.debug%</argument>
            <argument key="$exceptionsMapping" type="collection"></argument>
            <argument key="$resourceMetadataCollectionFactory" type="service" id="api_platform.metadata.resource.metadata_collection_factory" />
            <argument key="$errorFormats">%api_platform.error_formats%</argument>
            <argument key="$exceptionToStatus">%api_platform.exception_to_status%</argument>
            <argument key="$identifiersExtractor">null</argument>
            <argument key="$resourceClassResolver" type="service" id="api_platform.resource_class_resolver"/>
            <argument key="$negotiator" type="service" id="api_platform.negotiator"/>
        </service>

        <service id="api_platform.state_provider.parameter" class="ApiPlatform\State\Provider\ParameterProvider" decorates="api_platform.state_provider.main" decoration-priority="190">
            <argument type="service" id="api_platform.state_provider.parameter.inner" />
            <argument type="tagged_locator" tag="api_platform.parameter_provider" index-by="key" />
        </service>
    </services>
</container>
