Changelog
- Swagger UI: Add
usePkceWithAuthorizationCodeGrant
to Swagger UI initOAuth (#4649) - BC:
mapping.paths
in configuration should override bundles configuration (#4465) - GraphQL: Add the ability to use different pagination types for the queries of a resource (#4453)
- Security: BC Fix
ApiProperty
security
attribute expression being passed a class string for theobject
variable on updates/creates - null is now passed instead if the object is not available (#4184) - Security:
ApiProperty
now supports asecurity_post_denormalize
attribute, which provides access to theobject
variable for the object being updated/created andprevious_object
for the object before it was updated (#4184) - Maker: Add
make:data-provider
andmake :data-persister
commands to generate a data provider / persister (#3850) - JSON Schema: Add support for generating property schema with numeric constraint restrictions (#4225)
- JSON Schema: Add support for generating property schema with Collection restriction (#4182)
- JSON Schema: Add support for generating property schema format for Url and Hostname (#4185)
- JSON Schema: Add support for generating property schema with Count restriction (#4186)
- JSON Schema: Manage Compound constraint when generating property metadata (#4180)
- Validator: Add an option to disable query parameter validation (#4165)
- JSON Schema: Add support for generating property schema with Choice restriction (#4162)
- JSON Schema: Add support for generating property schema with Range restriction (#4158)
- JSON Schema: Add support for generating property schema with Unique restriction (#4159)
- BC: Change
api_platform.listener.request.add_format
priority from 7 to 28 to execute it before firewall (priority 8) (#3599) - BC: Use
@final
annotation in ORM filters (#4109) - Allow defining
exception_to_status
per operation (#3519) - Doctrine: Better exception to find which resource is linked to an exception (#3965)
- Doctrine: Allow mixed type value for date filter (notice if invalid) (#3870)
- Doctrine: Add
nulls_always_first
andnulls_always_last
tonulls_comparison
in order filter (#4103) - Doctrine: Add a global
order_nulls_comparison
configuration (#3117) - MongoDB:
date_immutable
support (#3940) - DataProvider: Add
TraversablePaginator
(#3783) - JSON:API: Support inclusion of resources from path (#3288)
- Swagger UI: Add
swagger_ui_extra_configuration
to Swagger / OpenAPI configuration (#3731) - Allow controller argument with a name different from
$data
thanks to an argument resolver (#3263) - GraphQL: Support
ApiProperty
security (#4143) - GraphQL: BC Fix security on association collection properties. The collection resource
item_query
security is no longer used.ApiProperty
security can now be used to secure collection (or any other) properties. (#4143) - Deprecate
allow_plain_identifiers
option (#4167) - Exception: Add the ability to customize multiple status codes based on the validation exception (#4017)
- ApiLoader: Support
_format
resolving (#4292) - Metadata: new namespace
ApiPlatform\Metadata
instead ofApiPlatform\Core\Metadata
, for exampleApiPlatform\Metadata\ApiResource
(#4351) - Metadata: deprecation of
ApiPlatform\Core\Annotation
(#4351) - Metadata:
ApiPlatform\Core\Metadata\Resource\Factory\ResourceMetadataFactoryInterface
is deprecated in favor ofApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface
(#4351) - Metadata: item and collection prefixes for operations are deprecated, as well as the
ApiPlatform\Core\Api\OperationType
class (#4351) - Graphql:
ApiPlatform\Metadata\GraphQl
follow the same metadata conventions (a Subscription operation is available and isn't hidden behind an update Mutation anymore), interfaces got simplified (being @experimental) (#4351) - IriConverter: new interface for
ApiPlatform\Bridge\Symfony\Routing\IriConverter
that adds an operationName, same forApiPlatform\Api\IdentifiersExtractor
(#4351) - DataProvider: new
ApiPlatform\State\ProviderInterface
that replaces DataProviders (#4351) - DataPersister: new
ApiPlatform\State\ProcessorInterface
that replaces DataPersisters (#4351) - A new configuration is available to keep old services (IriConverter, IdentifiersExtractor and OpenApiFactory)
metadata_backward_compatibility_layer
(defaults to false) (#4351) - Add support for
security_post_validation
attribute - Mark the GraphQL subsystem as stable (#4500)
- feat(test): add
Client::loginUser()
(#4588) - feat(http_cache): use symfony/http-client instead of guzzlehttp/guzzle,
ApiPlatform\Core\HttpCache\PurgerInterface
is deprecated in favor ofApiPlatform\HttpCache\PurgerInterface
, new purger that uses PURGE (#4695) - Implements Skolem IRIs instead of blank nodes, can be disabled using
iri: false
(#4731) - IRI Converter: new interface declaring
getIriFromResource
andgetResourceFromIri
(#4734) - Backward compatibility: fix dependency injection (#4744)
- Metadata: allow extra keys within defaults (#4743)
- Backward compatibility: fix upgrade script for subresources (#4747)
- Backward compatibility: fix dependency injection (#4748)
- GraphQl: output creates its own type in TypeBuilder (#4766)
- Metadata: clear missing metadata cache pools (#4770)
- Metadata: property override when value is set (#4767)
- Metadata: add read and write to extractor (#4760)
- JsonSchema: factory backward compatibility layer (#4758)
- Metadata: defaults properly overrides metadata (#4759)
- Metadata: Add missing processor and provider to extractor (#4754)
- Metadata: defaults deprecation (#4772)
- Json-Ld: property metadata types and iris (#4769)
- Symfony: write listener uri variables converter (#4774)
- Metadata: extra properties operation inheritance (#4773)
- Processor: adds
previous_data
to the context (#4776) - JsonApi: Use skolem IRIs (#4796)
- Metadata: Merge defaults instead of overriding (#4796)
- ApiTestCase: Fix JSON Schema assertions (#4796)
- Input/Output: backport serializer changes to make input/output work as resource classes without data transformers (#4804)
- GraphQl: the SerializerContextBuilder interface changes to reflect operation instead of the operation name BC (#4804)
- Metadata: reduce coalescing operator call (#4810)
- Serializer: ignore no-operation on SerializeListener (#4828)
- Schema: schema generation with default operation (#4818)
- Symfony: deprecate the
$exceptionOnNoToken
parameter inResourceAccessChecker::__construct()
(#4900) - chore: remove @experimental phpdoc (#4933)
- Metadata: do not set id when identifier is
false
(#4880) - Metadata: automatic GET operation when none is declared (#4881)
- Metadata: exception to status on operations (#4861)
- Serializer: adds the JSON_INVALID_UTF8_IGNORE flag to JsonEncode (#4741)
- Symfony: autoconfigure legacy Doctrine extensions (#4909)
- Elasticsearch: skip metadata without ES nodes (#4913)