Api Platform conference
Register now
References Operation
API Platform Conference
September 19-20, 2024 | Lille & online

The international conference on the API Platform Framework

API Platform Conference 2024: meet the best PHP, JavaScript and API experts

Learn more about the event, register for the conference, and get ready for two days of inspiration, ideas, and knowledge-sharing with our incredible lineup of renowned specialists and advocates.

Register now
Reference
C
Class

ApiPlatform\Metadata\Operation

⚠ This class and its children offer no backward compatibility regarding positional parameters.

class ApiPlatform\Metadata\Operation
{
    public __construct(null|string $shortName, null|string $class, null|bool $paginationEnabled, null|string $paginationType, null|int $paginationItemsPerPage, null|int $paginationMaximumItemsPerPage, null|bool $paginationPartial, null|bool $paginationClientEnabled, null|bool $paginationClientItemsPerPage, null|bool $paginationClientPartial, null|bool $paginationFetchJoinCollection, null|bool $paginationUseOutputWalkers, null|array $paginationViaCursor, null|array<string, string>|array<int, string> $order, null|string $description, null|array $normalizationContext, null|array $denormalizationContext, null|bool $collectDenormalizationErrors, null|string $security, null|string $securityMessage, null|string $securityPostDenormalize, null|string $securityPostDenormalizeMessage, null|string $securityPostValidation, null|string $securityPostValidationMessage, null|string $deprecationReason, null|array<int, string> $filters, null|array $validationContext, array|string|false $input, array|string|false $output, string|array|bool $mercure, string|bool $messenger, null|bool $elasticsearch, null|int $urlGenerationStrategy, null|bool $read, null|bool $deserialize, null|bool $validate, null|bool $write, null|bool $serialize, null|bool $fetchPartial, null|bool $forceEager, null|int $priority, null|string $name, string|callable $provider, string|callable $processor, null|ApiPlatform\State\OptionsInterface $stateOptions, array $extraProperties)
    public withOperation($operation)
    public getShortName(): string
    public withShortName(null|string $shortName): ApiPlatform\Metadata\Operation
    public getClass(): string
    public withClass(null|string $class): ApiPlatform\Metadata\Operation
    public getPaginationEnabled(): bool
    public withPaginationEnabled(null|bool $paginationEnabled): ApiPlatform\Metadata\Operation
    public getPaginationType(): string
    public withPaginationType(null|string $paginationType): ApiPlatform\Metadata\Operation
    public getPaginationItemsPerPage(): int
    public withPaginationItemsPerPage(null|int $paginationItemsPerPage): ApiPlatform\Metadata\Operation
    public getPaginationMaximumItemsPerPage(): int
    public withPaginationMaximumItemsPerPage(null|int $paginationMaximumItemsPerPage): ApiPlatform\Metadata\Operation
    public getPaginationPartial(): bool
    public withPaginationPartial(null|bool $paginationPartial): ApiPlatform\Metadata\Operation
    public getPaginationClientEnabled(): bool
    public withPaginationClientEnabled(null|bool $paginationClientEnabled): ApiPlatform\Metadata\Operation
    public getPaginationClientItemsPerPage(): bool
    public withPaginationClientItemsPerPage(null|bool $paginationClientItemsPerPage): ApiPlatform\Metadata\Operation
    public getPaginationClientPartial(): bool
    public withPaginationClientPartial(null|bool $paginationClientPartial): ApiPlatform\Metadata\Operation
    public getPaginationFetchJoinCollection(): bool
    public withPaginationFetchJoinCollection(null|bool $paginationFetchJoinCollection): ApiPlatform\Metadata\Operation
    public getPaginationUseOutputWalkers(): bool
    public withPaginationUseOutputWalkers(null|bool $paginationUseOutputWalkers): ApiPlatform\Metadata\Operation
    public getOrder(): array
    public withOrder(array $order): ApiPlatform\Metadata\Operation
    public getDescription(): string
    public withDescription(null|string $description): ApiPlatform\Metadata\Operation
    public getNormalizationContext(): array
    public withNormalizationContext(array $normalizationContext): ApiPlatform\Metadata\Operation
    public getDenormalizationContext(): array
    public withDenormalizationContext(array $denormalizationContext): ApiPlatform\Metadata\Operation
    public getCollectDenormalizationErrors(): bool
    public withCollectDenormalizationErrors(null|bool $collectDenormalizationErrors): ApiPlatform\Metadata\Operation
    public getSecurity(): string
    public withSecurity(null|string $security): ApiPlatform\Metadata\Operation
    public getSecurityMessage(): string
    public withSecurityMessage(null|string $securityMessage): ApiPlatform\Metadata\Operation
    public getSecurityPostDenormalize(): string
    public withSecurityPostDenormalize(null|string $securityPostDenormalize): ApiPlatform\Metadata\Operation
    public getSecurityPostDenormalizeMessage(): string
    public withSecurityPostDenormalizeMessage(null|string $securityPostDenormalizeMessage): ApiPlatform\Metadata\Operation
    public getSecurityPostValidation(): string
    public withSecurityPostValidation(null|string $securityPostValidation): ApiPlatform\Metadata\Operation
    public getSecurityPostValidationMessage(): string
    public withSecurityPostValidationMessage(null|string $securityPostValidationMessage): ApiPlatform\Metadata\Operation
    public getDeprecationReason(): string
    public withDeprecationReason(null|string $deprecationReason): ApiPlatform\Metadata\Operation
    public getFilters(): array
    public withFilters(array $filters): ApiPlatform\Metadata\Operation
    public getValidationContext(): array
    public withValidationContext(array $validationContext): ApiPlatform\Metadata\Operation
    public getInput()
    public withInput($input): ApiPlatform\Metadata\Operation
    public getOutput()
    public withOutput($output): ApiPlatform\Metadata\Operation
    public getMercure()
    public withMercure($mercure): ApiPlatform\Metadata\Operation
    public getMessenger()
    public withMessenger($messenger): ApiPlatform\Metadata\Operation
    public getElasticsearch(): bool
    public withElasticsearch(null|bool $elasticsearch): ApiPlatform\Metadata\Operation
    public getUrlGenerationStrategy(): int
    public withUrlGenerationStrategy(null|int $urlGenerationStrategy): ApiPlatform\Metadata\Operation
    public canRead(): bool
    public withRead(bool $read): ApiPlatform\Metadata\Operation
    public canDeserialize(): bool
    public withDeserialize(bool $deserialize): ApiPlatform\Metadata\Operation
    public canValidate(): bool
    public withValidate(bool $validate): ApiPlatform\Metadata\Operation
    public canWrite(): bool
    public withWrite(bool $write): ApiPlatform\Metadata\Operation
    public canSerialize(): bool
    public withSerialize(bool $serialize): ApiPlatform\Metadata\Operation
    public getFetchPartial(): bool
    public withFetchPartial(null|bool $fetchPartial): ApiPlatform\Metadata\Operation
    public getForceEager(): bool
    public withForceEager(null|bool $forceEager): ApiPlatform\Metadata\Operation
    public getPriority(): int
    public withPriority(int $priority): ApiPlatform\Metadata\Operation
    public getName(): string
    public withName(string $name): ApiPlatform\Metadata\Operation
    public getProcessor(): callable|string
    public withProcessor(null|callable|string $processor): ApiPlatform\Metadata\Operation
    public getProvider(): callable|string
    public withProvider(null|callable|string $provider): ApiPlatform\Metadata\Operation
    public getExtraProperties(): array
    public withExtraProperties(array $extraProperties): ApiPlatform\Metadata\Operation
    public getStateOptions(): ApiPlatform\State\OptionsInterface
    public withStateOptions(null|$stateOptions): `<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation
    public withResource($resource): `<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation
    protected copyFrom(|`<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>` $resource): `<a href="/docs/v3.1/references/Metadata/ApiResource">ApiPlatform\Metadata\ApiResource</a>`|`<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation
}

Properties

shortName

string $shortName

class

string $class

paginationEnabled

bool $paginationEnabled

The paginationEnabled option enables (or disables) the pagination for the current collection operation.

<?php
// api/src/Entity/Book.php
use ApiPlatform\Metadata\GetCollection;

#[GetCollection(paginationEnabled: true)]
class Book
{
    // ...
}
# api/config/api_platform/resources.yaml
resources:
    App\Entity\Book:
        - operations:
              ApiPlatform\Metadata\GetCollection:
                  paginationEnabled: true
<?xml version="1.0" encoding="UTF-8" ?>
<!-- api/config/api_platform/resources.xml -->

<resources
        xmlns="https://api-platform.com/schema/metadata/resources-3.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="https://api-platform.com/schema/metadata/resources-3.0
        https://api-platform.com/schema/metadata/resources-3.0.xsd">
    <resource class="App\Entity\Book">
        <operations>
            <operation class="ApiPlatform\Metadata\GetCollection" paginationEnabled=true />
        </operations>
    </resource>
</resources>

paginationType

string $paginationType

The paginationType option defines the type of pagination (page or cursor) to use for the current collection operation.

<?php
// api/src/Entity/Book.php
use ApiPlatform\Metadata\GetCollection;

#[GetCollection(paginationType: 'page')]
class Book
{
    // ...
}
# api/config/api_platform/resources.yaml
resources:
    App\Entity\Book:
        - operations:
              ApiPlatform\Metadata\GetCollection:
                  paginationType: page
<?xml version="1.0" encoding="UTF-8" ?>
<!-- api/config/api_platform/resources.xml -->

<resources
        xmlns="https://api-platform.com/schema/metadata/resources-3.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="https://api-platform.com/schema/metadata/resources-3.0
        https://api-platform.com/schema/metadata/resources-3.0.xsd">
    <resource class="App\Entity\Book">
        <operations>
            <operation class="ApiPlatform\Metadata\GetCollection" paginationType="page" />
        </operations>
    </resource>
</resources>

paginationItemsPerPage

int $paginationItemsPerPage

The paginationItemsPerPage option defines the number of items per page for the current collection operation.

<?php
// api/src/Entity/Book.php
use ApiPlatform\Metadata\GetCollection;

#[GetCollection(paginationItemsPerPage: 30)]
class Book
{
    // ...
}
# api/config/api_platform/resources.yaml
resources:
    App\Entity\Book:
        - operations:
              ApiPlatform\Metadata\GetCollection:
                  paginationItemsPerPage: 30
<?xml version="1.0" encoding="UTF-8" ?>
<!-- api/config/api_platform/resources.xml -->
<resources
        xmlns="https://api-platform.com/schema/metadata/resources-3.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="https://api-platform.com/schema/metadata/resources-3.0
        https://api-platform.com/schema/metadata/resources-3.0.xsd">
    <resource class="App\Entity\Book">
        <operations>
            <operation class="ApiPlatform\Metadata\GetCollection" paginationItemsPerPage=30 />
        </operations>
    </resource>
</resources>

paginationMaximumItemsPerPage

int $paginationMaximumItemsPerPage

The paginationMaximumItemsPerPage option defines the maximum number of items per page for the current resource.

<?php
// api/src/Entity/Book.php
use ApiPlatform\Metadata\GetCollection;

#[GetCollection(paginationMaximumItemsPerPage: 50)]
class Book
{
    // ...
}
# api/config/api_platform/resources.yaml
resources:
    App\Entity\Book:
        - operations:
              ApiPlatform\Metadata\GetCollection:
                  paginationMaximumItemsPerPage: 50
<?xml version="1.0" encoding="UTF-8" ?>
<!-- api/config/api_platform/resources.xml -->
<resources
        xmlns="https://api-platform.com/schema/metadata/resources-3.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="https://api-platform.com/schema/metadata/resources-3.0
        https://api-platform.com/schema/metadata/resources-3.0.xsd">
    <resource class="App\Entity\Book">
        <operations>
            <operation class="ApiPlatform\Metadata\GetCollection" paginationMaximumItemsPerPage=50 />
        </operations>
    </resource>
</resources>

paginationPartial

bool $paginationPartial

The paginationPartial option enables (or disables) the partial pagination for the current collection operation.

<?php
// api/src/Entity/Book.php
use ApiPlatform\Metadata\GetCollection;

#[GetCollection(paginationPartial: true)]
class Book
{
    // ...
}
# api/config/api_platform/resources.yaml
resources:
    App\Entity\Book:
        - operations:
              ApiPlatform\Metadata\GetCollection:
                  paginationPartial: true
<?xml version="1.0" encoding="UTF-8" ?>
<!-- api/config/api_platform/resources.xml -->
<resources
        xmlns="https://api-platform.com/schema/metadata/resources-3.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="https://api-platform.com/schema/metadata/resources-3.0
        https://api-platform.com/schema/metadata/resources-3.0.xsd">
    <resource class="App\Entity\Book">
        <operations>
            <operation class="ApiPlatform\Metadata\GetCollection" paginationPartial=true />
        </operations>
    </resource>
</resources>

paginationClientEnabled

bool $paginationClientEnabled

The paginationClientEnabled option allows (or disallows) the client to enable (or disable) the pagination for the current collection operation.

<?php
// api/src/Entity/Book.php
use ApiPlatform\Metadata\GetCollection;

#[GetCollection(paginationClientEnabled: true)]
class Book
{
    // ...
}
# api/config/api_platform/resources.yaml
resources:
    App\Entity\Book:
        - operations:
              ApiPlatform\Metadata\GetCollection:
                  paginationClientEnabled: true
<?xml version="1.0" encoding="UTF-8" ?>
<!-- api/config/api_platform/resources.xml -->
<resources
        xmlns="https://api-platform.com/schema/metadata/resources-3.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="https://api-platform.com/schema/metadata/resources-3.0
        https://api-platform.com/schema/metadata/resources-3.0.xsd">
    <resource class="App\Entity\Book">
        <operations>
            <operation class="ApiPlatform\Metadata\GetCollection" paginationClientEnabled=true />
        </operations>
    </resource>
</resources>

The pagination can now be enabled (or disabled) by adding a query parameter named pagination:

  • GET /books?pagination=false: disabled
  • GET /books?pagination=true: enabled

paginationClientItemsPerPage

bool $paginationClientItemsPerPage

The paginationClientItemsPerPage option allows (or disallows) the client to set the number of items per page for the current collection operation.

<?php
// api/src/Entity/Book.php
use ApiPlatform\Metadata\GetCollection;

#[GetCollection(paginationClientItemsPerPage: true)]
class Book
{
    // ...
}
# api/config/api_platform/resources.yaml
resources:
    App\Entity\Book:
        - operations:
              ApiPlatform\Metadata\GetCollection:
                  paginationClientItemsPerPage: true
<?xml version="1.0" encoding="UTF-8" ?>
<!-- api/config/api_platform/resources.xml -->
<resources
        xmlns="https://api-platform.com/schema/metadata/resources-3.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="https://api-platform.com/schema/metadata/resources-3.0
        https://api-platform.com/schema/metadata/resources-3.0.xsd">
    <resource class="App\Entity\Book">
        <operations>
            <operation class="ApiPlatform\Metadata\GetCollection" paginationClientItemsPerPage=true />
        </operations>
    </resource>
</resources>

The number of items can now be set by adding a query parameter named itemsPerPage:

  • GET /books?itemsPerPage=50

paginationClientPartial

bool $paginationClientPartial

The paginationClientPartial option allows (or disallows) the client to enable (or disable) the partial pagination for the current collection operation.

<?php
// api/src/Entity/Book.php
use ApiPlatform\Metadata\GetCollection;

#[GetCollection(paginationClientPartial: true)]
class Book
{
    // ...
}
# api/config/api_platform/resources.yaml
resources:
    App\Entity\Book:
        - operations:
              ApiPlatform\Metadata\GetCollection:
                  paginationClientPartial: true
<?xml version="1.0" encoding="UTF-8" ?>
<!-- api/config/api_platform/resources.xml -->
<resources
        xmlns="https://api-platform.com/schema/metadata/resources-3.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="https://api-platform.com/schema/metadata/resources-3.0
        https://api-platform.com/schema/metadata/resources-3.0.xsd">
    <resource class="App\Entity\Book">
        <operations>
            <operation class="ApiPlatform\Metadata\GetCollection" paginationClientPartial=true />
        </operations>
    </resource>
</resources>

The partial pagination can now be enabled (or disabled) by adding a query parameter named partial:

  • GET /books?partial=false: disabled
  • GET /books?partial=true: enabled

paginationFetchJoinCollection

bool $paginationFetchJoinCollection

The PaginationExtension of API Platform performs some checks on the QueryBuilder to guess, in most common cases, the correct values to use when configuring the Doctrine ORM Paginator: $fetchJoinCollection argument, whether there is a join to a collection-valued association.

When set to true, the Doctrine ORM Paginator will perform an additional query, in order to get the correct number of results. You can configure this using the paginationFetchJoinCollection option:

<?php
// api/src/Entity/Book.php
use ApiPlatform\Metadata\GetCollection;

#[GetCollection(paginationFetchJoinCollection: false)]
class Book
{
    // ...
}
# api/config/api_platform/resources.yaml
resources:
    App\Entity\Book:
        - operations:
              ApiPlatform\Metadata\GetCollection:
                  paginationFetchJoinCollection: false
<?xml version="1.0" encoding="UTF-8" ?>
<!-- api/config/api_platform/resources.xml -->
<resources
        xmlns="https://api-platform.com/schema/metadata/resources-3.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="https://api-platform.com/schema/metadata/resources-3.0
        https://api-platform.com/schema/metadata/resources-3.0.xsd">
    <resource class="App\Entity\Book">
        <operations>
            <operation class="ApiPlatform\Metadata\GetCollection" paginationFetchJoinCollection=false />
        </operations>
    </resource>
</resources>

For more information, please see the Pagination entry in the Doctrine ORM documentation.

paginationUseOutputWalkers

bool $paginationUseOutputWalkers

The PaginationExtension of API Platform performs some checks on the QueryBuilder to guess, in most common cases, the correct values to use when configuring the Doctrine ORM Paginator: $setUseOutputWalkers setter, whether to use output walkers.

When set to true, the Doctrine ORM Paginator will use output walkers, which are compulsory for some types of queries. You can configure this using the paginationUseOutputWalkers option:

<?php
// api/src/Entity/Book.php
use ApiPlatform\Metadata\GetCollection;

#[GetCollection(paginationUseOutputWalkers: false)]
class Book
{
    // ...
}
# api/config/api_platform/resources.yaml
resources:
    App\Entity\Book:
        - operations:
              ApiPlatform\Metadata\GetCollection:
                  paginationUseOutputWalkers: false
<?xml version="1.0" encoding="UTF-8" ?>
<!-- api/config/api_platform/resources.xml -->
<resources
        xmlns="https://api-platform.com/schema/metadata/resources-3.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="https://api-platform.com/schema/metadata/resources-3.0
        https://api-platform.com/schema/metadata/resources-3.0.xsd">
    <resource class="App\Entity\Book">
        <operations>
            <operation class="ApiPlatform\Metadata\GetCollection" paginationUseOutputWalkers=false />
        </operations>
    </resource>
</resources>

For more information, please see the Pagination entry in the Doctrine ORM documentation.

paginationViaCursor

array $paginationViaCursor

The paginationViaCursor option configures the cursor-based pagination for the current resource. Select your unique sorted field as well as the direction you’ll like the pagination to go via filters. Note that for now you have to declare a RangeFilter and an OrderFilter on the property used for the cursor-based pagination:.

<?php
// api/src/Entity/Book.php
use ApiPlatform\Metadata\ApiFilter;
use ApiPlatform\Metadata\GetCollection;
use ApiPlatform\Doctrine\Odm\Filter\OrderFilter;
use ApiPlatform\Doctrine\Odm\Filter\RangeFilter;

#[GetCollection(paginationPartial: true, paginationViaCursor: [['field' => 'id', 'direction' => 'DESC']])]
#[ApiFilter(RangeFilter::class, properties: ["id"])]
#[ApiFilter(OrderFilter::class, properties: ["id" => "DESC"])]
class Book
{
    // ...
}
# api/config/api_platform/resources.yaml
resources:
    App\Entity\Book:
        - operations:
              ApiPlatform\Metadata\GetCollection:
                  paginationPartial: true
                  paginationViaCursor:
                      - { field: 'id', direction: 'DESC' }
                  filters: [ 'app.filters.book.range', 'app.filters.book.order' ]
<?xml version="1.0" encoding="UTF-8" ?>
<!-- api/config/api_platform/resources.xml -->

<resources
        xmlns="https://api-platform.com/schema/metadata/resources-3.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="https://api-platform.com/schema/metadata/resources-3.0
        https://api-platform.com/schema/metadata/resources-3.0.xsd">
    <resource class="App\Entity\Book">
        <operations>
            <operation class="ApiPlatform\Metadata\GetCollection" paginationPartial=true>
                <filters>
                    <filter>app.filters.book.range</filter>
                    <filter>app.filters.book.order</filter>
                </filters>
                <paginationViaCursor>
                    <paginationField field="id" direction="DESC" />
                </paginationViaCursor>
            </operation>
        </operations>
    </resource>
</resources>

To know more about cursor-based pagination take a look at this blog post on medium (draft).

order

array $order

description

string $description

normalizationContext

array $normalizationContext

denormalizationContext

array $denormalizationContext

collectDenormalizationErrors

bool $collectDenormalizationErrors

security

string $security

securityMessage

string $securityMessage

securityPostDenormalize

string $securityPostDenormalize

securityPostDenormalizeMessage

string $securityPostDenormalizeMessage

securityPostValidation

string $securityPostValidation

securityPostValidationMessage

string $securityPostValidationMessage

deprecationReason

string $deprecationReason

The deprecationReason option deprecates the current operation with a deprecation message.

<?php
// api/src/Entity/Parchment.php
use ApiPlatform\Metadata\Get;

#[Get(deprecationReason: 'Create a Book instead')]
class Parchment
{
    // ...
}
# api/config/api_platform/resources.yaml
resources:
    App\Entity\Parchment:
        - operations:
              ApiPlatform\Metadata\Get:
                  deprecationReason: 'Create a Book instead'
<?xml version="1.0" encoding="UTF-8" ?>
<!-- api/config/api_platform/resources.xml -->

<resources
        xmlns="https://api-platform.com/schema/metadata/resources-3.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="https://api-platform.com/schema/metadata/resources-3.0
        https://api-platform.com/schema/metadata/resources-3.0.xsd">
    <resource class="App\Entity\Parchment">
        <operations>
            <operation class="ApiPlatform\Metadata\Get" deprecationReason="Create a Book instead" />
        <operations>
    </resource>
</resources>

filters

array $filters

The filters option configures the filters (declared as services) available on the collection routes for the current resource.

<?php
// api/src/Entity/Book.php
use ApiPlatform\Metadata\GetCollection;

#[GetCollection(filters: ['app.filters.book.search'])]
class Book
{
    // ...
}
# api/config/api_platform/resources.yaml
resources:
    App\Entity\Book:
        - operations:
              ApiPlatform\Metadata\GetCollection:
                  filters: ['app.filters.book.search']
<?xml version="1.0" encoding="UTF-8" ?>
<!-- api/config/api_platform/resources.xml -->
<resources
        xmlns="https://api-platform.com/schema/metadata/resources-3.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="https://api-platform.com/schema/metadata/resources-3.0
        https://api-platform.com/schema/metadata/resources-3.0.xsd">
    <resource class="App\Entity\Book">
        <operations>
            <operation class="ApiPlatform\Metadata\GetCollection">
                <filters>
                    <filter>app.filters.book.search</filter>
                </filters>
            </operation>
        </operations>
    </resource>
</resources>

validationContext

array $validationContext

The validationContext option configure the context of validation for the current Operation. You can, for instance, describe the validation groups that will be used :.

  #[Put(validationContext: ['groups' => ['Default', 'putValidation']])]
  #[Post(validationContext: ['groups' => ['Default', 'postValidation']])]

For more examples, read our guide on validation.

input

$input

output

$output

mercure

$mercure

messenger

string|bool $messenger

The messenger option dispatches the current resource through the Message Bus.

<?php
// api/src/Entity/Book.php
use ApiPlatform\Metadata\Post;

#[Post(messenger: true)]
class Book
{
    // ...
}
# api/config/api_platform/resources.yaml
resources:
    App\Entity\Book:
        - operations:
              ApiPlatform\Metadata\Post:
                  messenger: true
<?xml version="1.0" encoding="UTF-8" ?>
<!-- api/config/api_platform/resources.xml -->

<resources
        xmlns="https://api-platform.com/schema/metadata/resources-3.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="https://api-platform.com/schema/metadata/resources-3.0
        https://api-platform.com/schema/metadata/resources-3.0.xsd">
    <resource class="App\Entity\Book">
        <operations>
            <operation class="ApiPlatform\Metadata\Post" messenger=true />
        </operations>
    </resource>
</resources>

Note: when using messenger=true on a Doctrine entity, the Doctrine Processor is not called. If you want it to be called, you should decorate a built-in state processor and implement your own logic.

Read how to use Messenger with an Input object.

elasticsearch

bool $elasticsearch

urlGenerationStrategy

int $urlGenerationStrategy

read

bool $read

deserialize

bool $deserialize

validate

bool $validate

write

bool $write

serialize

bool $serialize

fetchPartial

bool $fetchPartial

forceEager

bool $forceEager

priority

int $priority

name

string $name

provider

$provider

processor

$processor

stateOptions

extraProperties

array $extraProperties

Methods

__construct

public __construct(null|string $shortName, null|string $class, null|bool $paginationEnabled, null|string $paginationType, null|int $paginationItemsPerPage, null|int $paginationMaximumItemsPerPage, null|bool $paginationPartial, null|bool $paginationClientEnabled, null|bool $paginationClientItemsPerPage, null|bool $paginationClientPartial, null|bool $paginationFetchJoinCollection, null|bool $paginationUseOutputWalkers, null|array $paginationViaCursor, null|array<string, string>|array<int, string> $order, null|string $description, null|array $normalizationContext, null|array $denormalizationContext, null|bool $collectDenormalizationErrors, null|string $security, null|string $securityMessage, null|string $securityPostDenormalize, null|string $securityPostDenormalizeMessage, null|string $securityPostValidation, null|string $securityPostValidationMessage, null|string $deprecationReason, null|array<int, string> $filters, null|array $validationContext, array|string|false $input, array|string|false $output, string|array|bool $mercure, string|bool $messenger, null|bool $elasticsearch, null|int $urlGenerationStrategy, null|bool $read, null|bool $deserialize, null|bool $validate, null|bool $write, null|bool $serialize, null|bool $fetchPartial, null|bool $forceEager, null|int $priority, null|string $name, string|callable $provider, string|callable $processor, null|ApiPlatform\State\OptionsInterface $stateOptions, array $extraProperties)

Parameters

shortNamestring
classstring
paginationEnabledboolhttps://api-platform.com/docs/core/pagination/#for-a-specific-resource
paginationTypestringhttps://api-platform.com/docs/core/graphql/#using-the-page-based-pagination
paginationItemsPerPageinthttps://api-platform.com/docs/core/pagination/#changing-the-number-of-items-per-page
paginationMaximumItemsPerPageinthttps://api-platform.com/docs/core/pagination/#changing-maximum-items-per-page
paginationPartialboolhttps://api-platform.com/docs/core/performance/#partial-pagination
paginationClientEnabledboolhttps://api-platform.com/docs/core/pagination/#for-a-specific-resource-1
paginationClientItemsPerPageboolhttps://api-platform.com/docs/core/pagination/#for-a-specific-resource-3
paginationClientPartialboolhttps://api-platform.com/docs/core/pagination/#for-a-specific-resource-6
paginationFetchJoinCollectionboolhttps://api-platform.com/docs/core/pagination/#controlling-the-behavior-of-the-doctrine-orm-paginator
paginationUseOutputWalkersbool
paginationViaCursorarray
orderarray<string, string>
array<int, string>
https://api-platform.com/docs/core/default-order/#overriding-default-order
descriptionstring
normalizationContextarray
denormalizationContextarray
collectDenormalizationErrorsbool
securitystringhttps://api-platform.com/docs/core/security
securityMessagestringhttps://api-platform.com/docs/core/security/#configuring-the-access-control-error-message
securityPostDenormalizestringhttps://api-platform.com/docs/core/security/#executing-access-control-rules-after-denormalization
securityPostDenormalizeMessagestringhttps://api-platform.com/docs/core/security/#configuring-the-access-control-error-message
securityPostValidationstring
securityPostValidationMessagestring
deprecationReasonstringhttps://api-platform.com/docs/core/deprecations/#deprecating-resource-classes-operations-and-properties
filtersarray<int, string>https://api-platform.com/docs/core/filters/#doctrine-orm-and-mongodb-odm-filters
validationContextarray
inputarray
string
false
https://api-platform.com/docs/core/dto/#specifying-an-input-or-an-output-data-representation
outputarray
string
false
https://api-platform.com/docs/core/dto/#specifying-an-input-or-an-output-data-representation
mercurestring
array
bool
https://api-platform.com/docs/core/mercure
messengerstring
bool
https://api-platform.com/docs/core/messenger/#dispatching-a-resource-through-the-message-bus
elasticsearchboolhttps://api-platform.com/docs/core/elasticsearch/
urlGenerationStrategyint
readboolhttps://api-platform.com/docs/core/events/#the-event-system
deserializeboolhttps://api-platform.com/docs/core/events/#the-event-system
validateboolhttps://api-platform.com/docs/core/events/#the-event-system
writeboolhttps://api-platform.com/docs/core/events/#the-event-system
serializeboolhttps://api-platform.com/docs/core/events/#the-event-system
fetchPartialboolhttps://api-platform.com/docs/core/performance/#fetch-partial
forceEagerboolhttps://api-platform.com/docs/core/performance/#force-eager
priorityint
namestring
providerstring
callable
https://api-platform.com/docs/core/state-providers/#state-providers
processorstring
callable
https://api-platform.com/docs/core/state-processors/#state-processors
stateOptions`ApiPlatform\State\OptionsInterface`
extraPropertiesarray

withOperation

public withOperation($operation)

Parameters

operation

getShortName

public getShortName(): string

Returns

string

withShortName

public withShortName(null|string $shortName): ApiPlatform\Metadata\Operation

Parameters

shortNamestring

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getClass

public getClass(): string

Returns

string

withClass

public withClass(null|string $class): ApiPlatform\Metadata\Operation

Parameters

classstring

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getPaginationEnabled

public getPaginationEnabled(): bool

Returns

bool

withPaginationEnabled

public withPaginationEnabled(null|bool $paginationEnabled): ApiPlatform\Metadata\Operation

Parameters

paginationEnabledbool

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getPaginationType

public getPaginationType(): string

Returns

string

withPaginationType

public withPaginationType(null|string $paginationType): ApiPlatform\Metadata\Operation

Parameters

paginationTypestring

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getPaginationItemsPerPage

public getPaginationItemsPerPage(): int

Returns

int

withPaginationItemsPerPage

public withPaginationItemsPerPage(null|int $paginationItemsPerPage): ApiPlatform\Metadata\Operation

Parameters

paginationItemsPerPageint

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getPaginationMaximumItemsPerPage

public getPaginationMaximumItemsPerPage(): int

Returns

int

withPaginationMaximumItemsPerPage

public withPaginationMaximumItemsPerPage(null|int $paginationMaximumItemsPerPage): ApiPlatform\Metadata\Operation

Parameters

paginationMaximumItemsPerPageint

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getPaginationPartial

public getPaginationPartial(): bool

Returns

bool

withPaginationPartial

public withPaginationPartial(null|bool $paginationPartial): ApiPlatform\Metadata\Operation

Parameters

paginationPartialbool

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getPaginationClientEnabled

public getPaginationClientEnabled(): bool

Returns

bool

withPaginationClientEnabled

public withPaginationClientEnabled(null|bool $paginationClientEnabled): ApiPlatform\Metadata\Operation

Parameters

paginationClientEnabledbool

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getPaginationClientItemsPerPage

public getPaginationClientItemsPerPage(): bool

Returns

bool

withPaginationClientItemsPerPage

public withPaginationClientItemsPerPage(null|bool $paginationClientItemsPerPage): ApiPlatform\Metadata\Operation

Parameters

paginationClientItemsPerPagebool

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getPaginationClientPartial

public getPaginationClientPartial(): bool

Returns

bool

withPaginationClientPartial

public withPaginationClientPartial(null|bool $paginationClientPartial): ApiPlatform\Metadata\Operation

Parameters

paginationClientPartialbool

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getPaginationFetchJoinCollection

public getPaginationFetchJoinCollection(): bool

Returns

bool

withPaginationFetchJoinCollection

public withPaginationFetchJoinCollection(null|bool $paginationFetchJoinCollection): ApiPlatform\Metadata\Operation

Parameters

paginationFetchJoinCollectionbool

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getPaginationUseOutputWalkers

public getPaginationUseOutputWalkers(): bool

Returns

bool

withPaginationUseOutputWalkers

public withPaginationUseOutputWalkers(null|bool $paginationUseOutputWalkers): ApiPlatform\Metadata\Operation

Parameters

paginationUseOutputWalkersbool

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getOrder

public getOrder(): array

Returns

array

withOrder

public withOrder(array $order): ApiPlatform\Metadata\Operation

Parameters

orderarray

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getDescription

public getDescription(): string

Returns

string

withDescription

public withDescription(null|string $description): ApiPlatform\Metadata\Operation

Parameters

descriptionstring

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getNormalizationContext

public getNormalizationContext(): array

Returns

array

withNormalizationContext

public withNormalizationContext(array $normalizationContext): ApiPlatform\Metadata\Operation

Parameters

normalizationContextarray

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getDenormalizationContext

public getDenormalizationContext(): array

Returns

array

withDenormalizationContext

public withDenormalizationContext(array $denormalizationContext): ApiPlatform\Metadata\Operation

Parameters

denormalizationContextarray

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getCollectDenormalizationErrors

public getCollectDenormalizationErrors(): bool

Returns

bool

withCollectDenormalizationErrors

public withCollectDenormalizationErrors(null|bool $collectDenormalizationErrors): ApiPlatform\Metadata\Operation

Parameters

collectDenormalizationErrorsbool

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getSecurity

public getSecurity(): string

Returns

string

withSecurity

public withSecurity(null|string $security): ApiPlatform\Metadata\Operation

Parameters

securitystring

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getSecurityMessage

public getSecurityMessage(): string

Returns

string

withSecurityMessage

public withSecurityMessage(null|string $securityMessage): ApiPlatform\Metadata\Operation

Parameters

securityMessagestring

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getSecurityPostDenormalize

public getSecurityPostDenormalize(): string

Returns

string

withSecurityPostDenormalize

public withSecurityPostDenormalize(null|string $securityPostDenormalize): ApiPlatform\Metadata\Operation

Parameters

securityPostDenormalizestring

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getSecurityPostDenormalizeMessage

public getSecurityPostDenormalizeMessage(): string

Returns

string

withSecurityPostDenormalizeMessage

public withSecurityPostDenormalizeMessage(null|string $securityPostDenormalizeMessage): ApiPlatform\Metadata\Operation

Parameters

securityPostDenormalizeMessagestring

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getSecurityPostValidation

public getSecurityPostValidation(): string

Returns

string

withSecurityPostValidation

public withSecurityPostValidation(null|string $securityPostValidation): ApiPlatform\Metadata\Operation

Parameters

securityPostValidationstring

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getSecurityPostValidationMessage

public getSecurityPostValidationMessage(): string

Returns

string

withSecurityPostValidationMessage

public withSecurityPostValidationMessage(null|string $securityPostValidationMessage): ApiPlatform\Metadata\Operation

Parameters

securityPostValidationMessagestring

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getDeprecationReason

public getDeprecationReason(): string

Returns

string

withDeprecationReason

public withDeprecationReason(null|string $deprecationReason): ApiPlatform\Metadata\Operation

Parameters

deprecationReasonstring

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getFilters

public getFilters(): array

Returns

array

withFilters

public withFilters(array $filters): ApiPlatform\Metadata\Operation

Parameters

filtersarray

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getValidationContext

public getValidationContext(): array

Returns

array

withValidationContext

public withValidationContext(array $validationContext): ApiPlatform\Metadata\Operation

Parameters

validationContextarray

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getInput

public getInput()

withInput

public withInput($input): ApiPlatform\Metadata\Operation

Parameters

input

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getOutput

public getOutput()

withOutput

public withOutput($output): ApiPlatform\Metadata\Operation

Parameters

output

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getMercure

public getMercure()

withMercure

public withMercure($mercure): ApiPlatform\Metadata\Operation

Parameters

mercure

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getMessenger

public getMessenger()

withMessenger

public withMessenger($messenger): ApiPlatform\Metadata\Operation

Parameters

messenger

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getElasticsearch

public getElasticsearch(): bool

Returns

bool

withElasticsearch

public withElasticsearch(null|bool $elasticsearch): ApiPlatform\Metadata\Operation

Parameters

elasticsearchbool

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getUrlGenerationStrategy

public getUrlGenerationStrategy(): int

Returns

int

withUrlGenerationStrategy

public withUrlGenerationStrategy(null|int $urlGenerationStrategy): ApiPlatform\Metadata\Operation

Parameters

urlGenerationStrategyint

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

canRead

public canRead(): bool

Returns

bool

withRead

public withRead(bool $read): ApiPlatform\Metadata\Operation

Parameters

readbool

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

canDeserialize

public canDeserialize(): bool

Returns

bool

withDeserialize

public withDeserialize(bool $deserialize): ApiPlatform\Metadata\Operation

Parameters

deserializebool

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

canValidate

public canValidate(): bool

Returns

bool

withValidate

public withValidate(bool $validate): ApiPlatform\Metadata\Operation

Parameters

validatebool

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

canWrite

public canWrite(): bool

Returns

bool

withWrite

public withWrite(bool $write): ApiPlatform\Metadata\Operation

Parameters

writebool

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

canSerialize

public canSerialize(): bool

Returns

bool

withSerialize

public withSerialize(bool $serialize): ApiPlatform\Metadata\Operation

Parameters

serializebool

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getFetchPartial

public getFetchPartial(): bool

Returns

bool

withFetchPartial

public withFetchPartial(null|bool $fetchPartial): ApiPlatform\Metadata\Operation

Parameters

fetchPartialbool

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getForceEager

public getForceEager(): bool

Returns

bool

withForceEager

public withForceEager(null|bool $forceEager): ApiPlatform\Metadata\Operation

Parameters

forceEagerbool

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getPriority

public getPriority(): int

Returns

int

withPriority

public withPriority(int $priority): ApiPlatform\Metadata\Operation

Parameters

priorityint

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getName

public getName(): string

Returns

string

withName

public withName(string $name): ApiPlatform\Metadata\Operation

Parameters

namestring

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getProcessor

public getProcessor(): callable|string

Returns

callable
string

withProcessor

public withProcessor(null|callable|string $processor): ApiPlatform\Metadata\Operation

Parameters

processorcallable
string

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getProvider

public getProvider(): callable|string

Returns

callable
string

withProvider

public withProvider(null|callable|string $provider): ApiPlatform\Metadata\Operation

Parameters

providercallable
string

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getExtraProperties

public getExtraProperties(): array

Returns

array

withExtraProperties

public withExtraProperties(array $extraProperties): ApiPlatform\Metadata\Operation

Parameters

extraPropertiesarray

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

getStateOptions

public getStateOptions(): ApiPlatform\State\OptionsInterface

Returns

<a href="/docs/v3.1/references/State/OptionsInterface">ApiPlatform\State\OptionsInterface</a>

withStateOptions

Parameters

stateOptions`ApiPlatform\State\OptionsInterface`

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

withResource

Parameters

resource`ApiPlatform\Metadata\ApiResource`

Returns

<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

copyFrom

Parameters

resource`ApiPlatform\Metadata\ApiResource`
`ApiPlatform\Metadata\Operation`

Returns

<a href="/docs/v3.1/references/Metadata/ApiResource">ApiPlatform\Metadata\ApiResource</a>
<a href="/docs/v3.1/references/Metadata/Operation">ApiPlatform\Metadata\Operation</a>

Made with love by

Les-Tilleuls.coop can help you design and develop your APIs and web projects, and train your teams in API Platform, Symfony, Next.js, Kubernetes and a wide range of other technologies.

Learn more

Copyright © 2023 Kévin Dunglas

Sponsored by Les-Tilleuls.coop