resources:
    App\Entity\ImageRepository:
        processor: App\State\Processor\ImageRepositoryProcessor
        input: App\Dto\Input\ImageRepositoryInput
        output: App\Dto\Output\ImageRepositoryOutput
        normalizationContext:
            groups: ['default', 'repository:read']
        denormalizationContext:
            groups: ['repository:write']
        operations:
            ApiPlatform\Metadata\GetCollection:
                provider: App\State\Provider\ImageRepositoryProvider
                filters:
                    - 'api_platform.filter.repository.order'
                    - 'api_platform.filter.repository.search'
                    - 'repository.not_equal_filter'

            ApiPlatform\Metadata\Get:
                provider: App\State\Provider\ImageRepositoryProvider
            ApiPlatform\Metadata\Put:
                provider: App\State\Provider\ImageRepositoryProvider
            ApiPlatform\Metadata\Patch:
                provider: App\State\Provider\ImageRepositoryProvider
            ApiPlatform\Metadata\Post: ~
            ApiPlatform\Metadata\Delete: ~

            image_ogrepository_sync:
                shortName: OgRepository Server
                class: ApiPlatform\Metadata\Post
                method: POST
                input: false
                uriTemplate: /image-repositories/server/{uuid}/sync
                controller: App\Controller\OgRepository\Image\SyncAction

            wol_client:
                class: ApiPlatform\Metadata\Post
                method: POST
                input: App\Dto\Input\WoLInput
                uriTemplate: /image-repositories/wol
                controller: App\Controller\OgRepository\WoLAction

            get_collection_images_ogrepository:
                shortName: OgRepository Server
                description: Get collection of image in OgRepository
                class: ApiPlatform\Metadata\Post
                method: POST
                input: false
                uriTemplate: /image-repositories/server/{uuid}/get-collection
                controller: App\Controller\OgRepository\Image\GetCollectionAction

            images_ogrepository_status:
                shortName: OgRepository Server
                description: Get status of OgRepository
                class: ApiPlatform\Metadata\Get
                method: GET
                input: false
                uriTemplate: /image-repositories/server/{uuid}/status
                controller: App\Controller\OgRepository\StatusAction

            import_image_ogrepository:
                shortName: OgRepository Server
                description: Export Image in OgRepository
                class: ApiPlatform\Metadata\Post
                method: POST
                input:  App\Dto\Input\ImportImageRepositoryInput
                uriTemplate: /image-repositories/{uuid}/import-image
                controller: App\Controller\OgRepository\Image\ImportAction

            convert_image_ogrepository:
                shortName: OgRepository Server
                description: Convert Image in OgRepository
                class: ApiPlatform\Metadata\Post
                method: POST
                input: App\Dto\Input\ConvertImageRepositoryInput
                uriTemplate: /image-repositories/{uuid}/convert-image
                controller: App\Controller\OgRepository\Image\ConvertAction

            get_collection_images_oggit:
                shortName: OgRepository Server
                description: Get collection of image in OgRepository
                class: ApiPlatform\Metadata\Get
                method: GET
                input: false
                uriTemplate: /image-repositories/server/git/{uuid}/get-collection
                controller: App\Controller\OgRepository\Git\GetCollectionAction

            git_repository_commits:
                shortName: OgRepository Server
                description: Get commits from a specific branch of a Git repository
                class: ApiPlatform\Metadata\Post
                method: POST
                input: App\Dto\Input\GetCommitsInput
                uriTemplate: /image-repositories/server/git/{uuid}/commits
                controller: App\Controller\OgRepository\Git\GetCommitsAction

            git_repository_branches:
                shortName: OgRepository Server
                description: Get branches from a Git repository
                class: ApiPlatform\Metadata\Post
                method: POST
                input: App\Dto\Input\GetBranchesInput
                uriTemplate: /image-repositories/server/git/{uuid}/branches
                controller: App\Controller\OgRepository\Git\GetBranchesAction

            git_repository_create_tag:
                shortName: OgRepository Server
                description: Create a tag in a Git repository
                class: ApiPlatform\Metadata\Post
                method: POST
                input: App\Dto\Input\CreateTagInput
                uriTemplate: /image-repositories/server/git/{uuid}/create-tag
                controller: App\Controller\OgRepository\Git\CreateTagAction

            git_repository_create_branch:
                shortName: OgRepository Server
                description: Create a branch in a Git repository
                class: ApiPlatform\Metadata\Post
                method: POST
                input: App\Dto\Input\CreateBranchInput
                uriTemplate: /image-repositories/server/git/{uuid}/create-branch
                controller: App\Controller\OgRepository\Git\CreateBranchAction

            git_repository_create_backup:
                shortName: OgRepository Server
                description: Create a backup in a Git repository
                class: ApiPlatform\Metadata\Post
                method: POST
                input: App\Dto\Input\CreateBackupInput
                uriTemplate: /image-repositories/server/git/{uuid}/create-backup
                controller: App\Controller\OgRepository\Git\CreateBackupAction    

            git_repository_delete:
                shortName: OgRepository Server
                description: Delete a repository in a Git repository
                class: ApiPlatform\Metadata\Post
                method: POST
                input: App\Dto\Input\DeleteRepositoryInput
                uriTemplate: /image-repositories/server/git/{uuid}/delete
                controller: App\Controller\OgRepository\Git\DeleteAction

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