resources:
    App\Entity\User:
        input: App\Dto\Input\UserInput
        output: App\Dto\Output\UserOutput
        processor: App\State\Processor\UserProcessor
        normalizationContext:
            groups: ['default', 'user:read']
        denormalizationContext:
            groups: ['user:write']
        operations:
            ApiPlatform\Metadata\GetCollection:
                provider: App\State\Provider\UserProvider
                filters:
                    - 'api_platform.filter.user.order'
                    - 'api_platform.filter.user.search'
                    - 'api_platform.filter.user.boolean'
            ApiPlatform\Metadata\Get:
                provider: App\State\Provider\UserProvider
            ApiPlatform\Metadata\Put:
                provider: App\State\Provider\UserProvider
            ApiPlatform\Metadata\Patch:
                provider: App\State\Provider\UserProvider
            ApiPlatform\Metadata\Post:
                security: 'is_granted("ROLE_SUPER_ADMIN")'
                validationContext:
                    groups: [ 'default', 'user:post' ]
            ApiPlatform\Metadata\Delete:
                security: 'is_granted("ROLE_SUPER_ADMIN")'
            reset_password:
                provider: App\State\Provider\UserProvider
                class: ApiPlatform\Metadata\Put
                method: PUT
                input: App\Dto\Input\UserInput
                uriTemplate: /users/{uuid}/reset-password
                controller: App\Controller\ResetPasswordAction
                denormalizationContext:
                    groups: [ 'user:reset-password' ]
                validationContext:
                    groups: [ 'user:reset-password' ]

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