Skip to content

feat(metadata) Customize Resource & operations #7213

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

loic425
Copy link
Contributor

@loic425 loic425 commented Jun 13, 2025

Q A
Branch? main
Tickets
License MIT
Doc PR api-platform/docs#...

The idea of this feature is to allow customizing built-in endpoints from a third party API (ex Sylius E-commerce API).

<?php

namespace App\Mutator;

use ApiPlatform\Metadata\AsResourceMutator;
use ApiPlatform\Metadata\ApiResource;
use App\Entity\Speaker;

#[AsResourceMutator(resourceClass: Speaker::class)]
final class SpeakerResourceMutator
{
    public function __invoke(ApiResource $resource): ApiResource
    {
        $operations = $resource->getOperations();
        $operations->remove('_api_Speaker_get_collection');

        return $resource->withOperations($operations);
    }
}

@loic425 loic425 marked this pull request as draft June 13, 2025 14:18
@loic425 loic425 force-pushed the customize-resource-and-operations branch 2 times, most recently from 15dcaa4 to 7f165b9 Compare June 13, 2025 14:21
Copy link
Member

@soyuka soyuka left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really cool, this is a follow up for php configured metadata as this allows to mutate vendor operations. I'll probably demonstrate this shortly.

I'd recommend to add a ResourceMutatorInterface. Obviously we should introduce an AsOperationMutator. I'd suggest that it takes:

public readonly string $operationName

URI Template would be nice as well but it will probably match several operations, therefore it's probably better to just use the $operationName.

@loic425 loic425 force-pushed the customize-resource-and-operations branch 2 times, most recently from 10140bd to 1b3ab0e Compare June 16, 2025 13:03
@loic425 loic425 force-pushed the customize-resource-and-operations branch from d35922c to 61fb8f6 Compare July 2, 2025 16:59
@loic425 loic425 force-pushed the customize-resource-and-operations branch 4 times, most recently from a8626ee to 4b7dbbd Compare July 4, 2025 12:08
@loic425 loic425 force-pushed the customize-resource-and-operations branch from 4b7dbbd to d4ecfb6 Compare July 4, 2025 12:19
@loic425 loic425 marked this pull request as ready for review July 4, 2025 12:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants