- Cache: adds a
max_header_length
configuration (#2865) - Cache: support
stale-while-revalidate
andstale-if-error
cache control headers (#3439) - Config: Add an option to set global default values (#3151)
- DTO: Add
ApiPlatform\Core\DataTransformer\DataTransformerInitializerInterface
to pre-hydrate inputs (#3701) - DTO: Improve Input/Output support (#3231)
- Data Persisters: Add
previous_data
to the context passed to persisters when available (#3752) - Data Persister: Add a
ResumableDataPersisterInterface
that allows to call multiple persisters (#3912) - Debug: Display API Platform's version in the debug bar (#3235)
- Docs: Make
asset_package
configurable (#3764) - Doctrine: Allow searching on multiple values on every strategies (#3786)
- Elasticsearch: The
Paginator
class constructor now receives the denormalization context to support denormalizing documents using serialization groups. This change may cause potential BC breaks for existing applications as denormalization was previously done without serialization groups. - GraphQL: BC New syntax for the filters' arguments to preserve the order:
order: [{foo: 'asc'}, {bar: 'desc'}]
(#3468) - GraphQL: BC
operation
is nowoperationName
to follow the standard (#3568) - GraphQL: BC
paginationType
is nowpagination_type
(#3614) - GraphQL: Add page-based pagination (#3175, #3517)
- GraphQL: Allow formatting GraphQL errors based on exceptions (#3063)
- GraphQL: Errors thrown from the GraphQL library can now be handled (#3632, #3643)
- GraphQL: Possibility to add a custom description for queries, mutations and subscriptions (#3477, #3514)
- GraphQL: Subscription support with Mercure (#3321)
- GraphQL: Support for field name conversion (serialized name) (#3455, #3516)
- Hydra: Sort entries in the API entrypoint (#3091)
- Identifiers: Add Symfony Uid support (#3715)
- IriConverter: BC Fix double encoding in IRIs - may cause breaking change as some characters no longer encoded in output (#3552)
- JSON-LD: Add an
iri_only
attribute to simplify documents structure (useful when using Vulcain) (#3275) - Exception: Response error codes can be specified via the
ApiPlatform\Core\Exception\ErrorCodeSerializableInterface
(#2922) - Mercure: Add a
normalization_context
option inmercure
attribute (#3772) - Messenger: Add a context stamp containing contextual data (#3157)
- Metadata: Deprecate
InheritedPropertyMetadataFactory
(#3273) - Metadata: Improve and simplify identifiers management (#3825)
- Metadata: Support the Symfony Serializer's
@Ignore
annotation (#3820) - Metadata: Support using annotations as PHP 8 attributes (#3869, #3868, #3851)
- Metadata: Throw an error when no identifier is defined (#3871)
- Metadata: Use
id
as default identifier if none provided (#3874) - MongoDB: Mercure support (#3290)
- MongoDB: Possibility to add execute options (aggregate command fields) for a resource, like
allowDiskUse
(#3144) - OpenAPI: Add default values of PHP properties to the documentation (#2386)
- OpenAPI: BC Replace all characters other than
[a-zA-Z0-9\.\-_]
to.
in definition names to be compliant with OpenAPI 3.0 (#3669) - OpenAPI: Refactor OpenAPI v3 support, OpenAPI v2 (aka Swagger) is deprecated (#3407)
- Order: Support default order for a specific custom operation (#3784)
- PATCH: Support patching deep objects (#3847)
- Router: UrlGenerator strategy configuration via
url_generation_strategy
(#3198) - Routing: Add stateless
ApiResource
attribute (#3436) - Security: Add support for access control rule on attributes (#3503)
- Subresources:
resourceClass
can now be defined as a container parameter in XML and YAML definitions - Symfony: improved 5.x support with fewer deprecations (#3589)
- Symfony: Allow using
ItemNormalizer
without Symfony SecurityBundle (#3801) - Symfony: Lazy load all commands (#3798)
- Tests: adds a method to retrieve the CookieJar in the test Client
getCookieJar
- Tests: Fix the registration of the
test.api_platform.client
service when theFrameworkBundle
bundle is registered after theApiPlatformBundle
bundle (#3928) - Validator: Add the violation code to the violation properties (#3857)
- Validator: Allow customizing the validation error status code (#3808)
- Validator: Autoconfiguration of validation groups generator via
ApiPlatform\Core\Validator\ValidationGroupsGeneratorInterface
- Validator: Deprecate using a validation groups generator service not implementing
ApiPlatform\Core\Bridge\Symfony\Validator\ValidationGroupsGeneratorInterface
(#3346) - Validator: Property validation through OpenAPI (#33329)
- Validator: Query filters and parameters are validated (#1723)
ExceptionInterface
now extends\Throwable
(#3217)