References GetCollection
Reference
A
Attribute

ApiPlatform\Metadata\GetCollection

OptionTypesDescription
`uriTemplate`string
`types`array
`formats`
`inputFormats`
`outputFormats`
`uriVariables`
`routePrefix`string
`routeName`string
`defaults`array
`requirements`array
`options`array
`stateless`bool
`sunset`string
`acceptPatch`string
`status`
`host`string
`schemes`array
`condition`string
`controller`string
`headers`array
`cacheHeaders`array
`paginationViaCursor`array
`hydraContext`array
`openapiContext`array
`openapi``ApiPlatform\OpenApi\Model\Operation`
`ApiPlatform\OpenApi\Attributes\Webhook`
bool
`exceptionToStatus`array
`queryParameterValidationEnabled`bool
`links`array
`shortName`string
`class`string
`paginationEnabled`bool
`paginationType`string
`paginationItemsPerPage`int
`paginationMaximumItemsPerPage`int
`paginationPartial`bool
`paginationClientEnabled`bool
`paginationClientItemsPerPage`bool
`paginationClientPartial`bool
`paginationFetchJoinCollection`bool
`paginationUseOutputWalkers`bool
`order`array
`description`string
`normalizationContext`array
`denormalizationContext`array
`collectDenormalizationErrors`bool
`security`Stringable
string
`securityMessage`string
`securityPostDenormalize`Stringable
string
`securityPostDenormalizeMessage`string
`securityPostValidation`Stringable
string
`securityPostValidationMessage`string
`deprecationReason`string
`filters`array
`validationContext`array
`input`
`output`
`mercure`
`messenger`
`elasticsearch`bool
`urlGenerationStrategy`int
`read`bool
`deserialize`bool
`validate`bool
`write`bool
`serialize`bool
`fetchPartial`bool
`forceEager`bool
`priority`int
`name`string
`provider`
`processor`
`stateOptions``ApiPlatform\State\OptionsInterface`
`parameters``ApiPlatform\Metadata\Parameters`
array
`extraProperties`array
`itemUriTemplate`string

Description

Options

method

string $method

uriTemplate

string $uriTemplate

types

array $types

formats

$formats

inputFormats

$inputFormats

outputFormats

$outputFormats

uriVariables

$uriVariables

routePrefix

string $routePrefix

routeName

string $routeName

defaults

array $defaults

requirements

array $requirements

options

array $options

stateless

bool $stateless

sunset

string $sunset

The sunset option indicates when a deprecated operation will be removed.

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

#[Get(deprecationReason: 'Create a Book instead', sunset: '01/01/2020')]
class Parchment
{
    // ...
}
# api/config/api_platform/resources.yaml
resources:
    App\Entity\Parchment:
        - operations:
              ApiPlatform\Metadata\Get:
                  deprecationReason: 'Create a Book instead'
                  sunset: '01/01/2020'
<?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" sunset="01/01/2020" />
        <operations>
    </resource>
</resources>

acceptPatch

string $acceptPatch

status

$status

host

string $host

schemes

array $schemes

condition

string $condition

controller

string $controller

headers

array $headers

cacheHeaders

array $cacheHeaders

paginationViaCursor

array $paginationViaCursor

hydraContext

array $hydraContext

openapiContext

array $openapiContext

openapi

exceptionToStatus

array $exceptionToStatus

queryParameterValidationEnabled

bool $queryParameterValidationEnabled
array $links

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.

order

array $order

description

string $description

normalizationContext

array $normalizationContext

denormalizationContext

array $denormalizationContext

collectDenormalizationErrors

bool $collectDenormalizationErrors

security

Stringable|string $security

securityMessage

string $securityMessage

securityPostDenormalize

Stringable|string $securityPostDenormalize

securityPostDenormalizeMessage

string $securityPostDenormalizeMessage

securityPostValidation

Stringable|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

The priority helps with the order of operations when looping over a resource’s operations. It can be usefull when we loop over operations to find a matching IRI, although most of the use cases should be covered by the HttpOperation::itemUriTemplate or the ApiProperty::uriTemplate functionalities. Sort is ascendant: a lower priority comes first in the list.

name

string $name

provider

$provider

processor

$processor

stateOptions

parameters

extraProperties

array $extraProperties

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