resources:
    App\Entity\Client:
        processor: App\State\Processor\ClientProcessor
        input: App\Dto\Input\ClientInput
        output: App\Dto\Output\ClientOutput
        normalizationContext:
            groups: ['default', 'client:read']
        denormalizationContext:
            groups: ['client:write']

        operations:
            ApiPlatform\Metadata\GetCollection:
                provider: App\State\Provider\ClientProvider
                filters:
                    - 'api_platform.filter.client.order'
                    - 'api_platform.filter.client.search'
                    - 'api_platform.filter.client.exist'

            ApiPlatform\Metadata\Get:
                provider: App\State\Provider\ClientProvider
            ApiPlatform\Metadata\Put:
                provider: App\State\Provider\ClientProvider
            ApiPlatform\Metadata\Patch:
                provider: App\State\Provider\ClientProvider
                validationContext:
                    groups: [ 'client:patch' ]
            ApiPlatform\Metadata\Post: ~
            ApiPlatform\Metadata\Delete: ~

            change_organizational_units:
                provider: App\State\Provider\ClientProvider
                class: ApiPlatform\Metadata\Post
                method: POST
                input: App\Dto\Input\ChangeOrganizationalUnitInput
                uriTemplate: /clients/change-organizational-unit
                controller: App\Controller\ChangeOrganizationalUnitAction

            agent_status:
                class: ApiPlatform\Metadata\Post
                method: POST
                input: false
                output: false
                uriTemplate: /clients/{uuid}/agent/status
                controller: App\Controller\OgAgent\StatusAction

            get_pxe:
                class: ApiPlatform\Metadata\Post
                method: POST
                input: false
                uriTemplate: /clients/server/{uuid}/get-pxe
                controller: App\Controller\OgBoot\PxeBootFile\GetAction

            boot_client:
                class: ApiPlatform\Metadata\Post
                method: POST
                input: App\Dto\Input\BootClientsInput
                uriTemplate: /clients/server/boot-client
                controller: App\Controller\OgAgent\LoginAction

            remove_cache_image:
                class: ApiPlatform\Metadata\Post
                method: POST
                input: App\Dto\Input\BootClientsInput
                uriTemplate: /clients/server/remove-cache-image
                controller: App\Controller\OgAgent\RemoveCacheImageAction

            hardware_inventory:
                class: ApiPlatform\Metadata\Post
                method: POST
                input: false
                uriTemplate: /clients/server/{uuid}/hardware-inventory
                controller: App\Controller\OgAgent\HardwareInventoryAction

            software_inventory:
                class: ApiPlatform\Metadata\Post
                method: POST
                input: App\Dto\Input\SoftwareInventoryPartitionInput
                uriTemplate: /clients/server/{uuid}/software-inventory
                controller: App\Controller\OgAgent\SoftwareInventoryAction

            reboot_client:
                class: ApiPlatform\Metadata\Post
                method: POST
                input: App\Dto\Input\MultipleClientsInput
                uriTemplate: /clients/server/reboot
                controller: App\Controller\OgAgent\RebootAction

            power_off_client:
                class: ApiPlatform\Metadata\Post
                method: POST
                input: App\Dto\Input\MultipleClientsInput
                uriTemplate: /clients/server/power-off
                controller: App\Controller\OgAgent\PowerOffAction

            check_partition_sizes:
                class: ApiPlatform\Metadata\Post
                method: POST
                input: App\Dto\Input\CheckPartitionSizesInput
                uriTemplate: /clients/{uuid}/check-partition-sizes
                controller: App\Controller\OgAgent\CheckPartitionSizesAction

            get_partition_script_data:
                class: ApiPlatform\Metadata\Post
                method: POST
                input: App\Dto\Input\GetPartitionScriptDataInput
                uriTemplate: /clients/{uuid}/get-partition-script-data
                controller: App\Controller\OgAgent\GetPartitionScriptDataAction


properties:
    App\Entity\Client:
        id:
            identifier: false
        uuid:
            identifier: true