imports:
    - { resource: 'services/api_platform.yaml' }

parameters:

services:
    App\DependencyInjection\JsonEnvVarLoader:
        tags: ['container.env_var_loader']

    _defaults:
        autowire: true      # Automatically injects dependencies in your services.
        autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.

    App\:
        resource: '../src/'
        exclude:
            - '../src/Entity/'
            - '../src/Kernel.php'

    App\Doctrine\UserAllowedOrganizationalUnitExtension:
        tags:
            - { name: api_platform.doctrine.orm.query_extension.collection }
            - { name: api_platform.doctrine.orm.query_extension.item }

    App\EventListener\LocaleSubscriber:
        arguments:
            $defaultLocale: '%kernel.default_locale%'
        tags:
            - { name: kernel.event_subscriber }

    App\OpenApi\OpenApiFactory:
        decorates: 'api_platform.openapi.factory'
        arguments: [ '@App\OpenApi\OpenApiFactory.inner' ]
        autoconfigure: false

    App\State\Provider\UserProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\UserGroupProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\OrganizationalUnitProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\ClientProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\HardwareProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\HardwareProfileProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\MenuProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\PartitionProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\OperativeSystemProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\HardwareTypeProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\SoftwareProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\SoftwareProfileProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\ImageProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\ViewProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\OgLiveProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\RemoteCalendarProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\CommandProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\PxeTemplateProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\CommandGroupProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\CommandTaskProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\SubnetProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'
    App\State\Provider\TraceProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\RemoteCalendarRuleProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\ImageRepositoryProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'

    App\State\Provider\ImageImageRepositoryProvider:
        bind:
            $collectionProvider: '@api_platform.doctrine.orm.state.collection_provider'
            $itemProvider: '@api_platform.doctrine.orm.state.item_provider'
