Releases: api-platform/core
Releases · api-platform/core
v4.3.2
What's Changed
- chore(laravel): expand version constraints for Laravel 13 support by @soyuka in #7860
- chore: remove annotation namespaces by @soyuka in #7861
- fix(laravel): resolve casts defined via casts() method by @soyuka in #7859
- ci(laravel): use ^12 on 4.2 by @soyuka in #7863
- fix(metadata): read operation tags from OpenAPI context in XML by @JakovKnezovicc in #7865
- fix(symfony): remove conflicting service by @soyuka in #7867
- fix(openapi)!: oauth scopes with dashes in name by @thomaschaaf in #7853
- fix(metadata): nested filtering only on resource classes by @soyuka in #7864
- test(mongodb): missing nested test by @soyuka in #7872
- fix(openapi): fallback description on summary by @VincentLanglet in #7874
- fix(state): prioritize input class over output in ObjectMapperProvider by @soyuka in #7879
- fix(doctrine): skip links with no join info when fromClass differs from entityClass by @soyuka in #7878
- fix(serializer): disable normalizer cache to prevent wrong normalizer in worker mode by @soyuka in #7873
- fix(openapi): uri variable default description by @VincentLanglet in #7884
- fix(laravel): partial patch validation config to replace required with sometimes by @soyuka in #7882
- fix(serializer): handle nullable constructor params without default value by @soyuka in #7883
- fix(doctrine): inject nameConverter into AbstractFilter via QueryParameter by @soyuka in #7877
New Contributors
- @thomaschaaf made their first contribution in #7853
Full Changelog: v4.3.1...v4.3.2
v4.2.23
What's Changed
- chore: remove annotation namespaces by @soyuka in #7861
- ci(laravel): use ^12 on 4.2 by @soyuka in #7863
- fix(metadata): read operation tags from OpenAPI context in XML by @JakovKnezovicc in #7865
- fix(symfony): remove conflicting service by @soyuka in #7867
- fix(state): prioritize input class over output in ObjectMapperProvider by @soyuka in #7879
- fix(doctrine): skip links with no join info when fromClass differs from entityClass by @soyuka in #7878
- fix(serializer): disable normalizer cache to prevent wrong normalizer in worker mode by @soyuka in #7873
- fix(laravel): partial patch validation config to replace required with sometimes by @soyuka in #7882
- fix(serializer): handle nullable constructor params without default value by @soyuka in #7883
- fix(doctrine): inject nameConverter into AbstractFilter via QueryParameter by @soyuka in #7877
Full Changelog: v4.2.22...v4.2.23
v4.3.1
What's Changed
- chore(github): fix dispatch-demo-update on release by @vincentchalamon in #7842
- fix(validator): fallback to message when detail is uninitialized by @soyuka in #7844
- fix(symfony): do not exclude resources from DI by @VincentLanglet in #7847
- fix(validator): skip ValidateProcessor when ObjectMapper is not used by @Renrhaf in #7848
- fix(serializer): evaluate ApiProperty security on input DTOs by @soyuka in #7852
- fix(hydra): use compact IRI for owl:onProperty and Collection @id in DocumentationNormalizer by @soyuka in #7849
- fix(doctrine): reset nested_properties_info for non-nested properties in FreeTextQueryFilter by @soyuka in #7850
- cs: typo in deprecation message for 'xkey' config by @melany-mai in #7851
New Contributors
- @melany-mai made their first contribution in #7851
Full Changelog: v4.3.0...v4.3.1
v4.2.22
What's Changed
- chore(github): fix dispatch-demo-update on release by @vincentchalamon in #7842
- fix(serializer): evaluate ApiProperty security on input DTOs by @soyuka in #7852
- fix(hydra): use compact IRI for owl:onProperty and Collection @id in DocumentationNormalizer by @soyuka in #7849
- cs: typo in deprecation message for 'xkey' config by @melany-mai in #7851
New Contributors
- @melany-mai made their first contribution in #7851
Full Changelog: v4.2.21...v4.2.22
v4.3.0
Highlights
MCP (Model Context Protocol) Support
- Introduce
api-platform/mcpcomponent (#7703) - MCP bundle tool integration (#7595)
- Collection support for MCP (#7724)
- Laravel MCP support (#7709)
Scalar API Reference Documentation
- Scalar is now available as an alternative documentation UI alongside Swagger UI (#7817)
Security
isGrantedis now evaluated before the provider, preventing unnecessary database queries on unauthorized requests (#7500)
Doctrine Filters
- UUID filter (#7628) with nested relation support (#7759)
- ComparisonFilter decorator for range filtering (#7760) with
ne(not equal) operator (#7814) caseSensitiveoption for PartialSearchFilter (#7675)- ODM SortFilter and nested property support (#7780)
- Support relations on filters (#7711)
- Readonly entities automatically lose PUT & PATCH operations (#7453)
Elasticsearch
Other Notable Features
- Defaults parameters (#7758)
- Laravel object mapper (#7704)
- JSON Schema normalization/denormalization with attributes (#7629)
- JSON:API entity identifiers instead of IRIs as resource id (#7702)
SkipAutoconfigureattribute for Laravel (#7467)- LDP-compliant
AllowandAccept-Postresponse headers (#6917) - Cache operation metadata factory (#7516)
gen_idglobal configuration option (#7775)- Preserve key option in CollectionNormalizer (#7721)
- UUID/ULID parameter validation (#7649)
Breaking Changes
- JSON-LD
@typewithoutputanditemUriTemplate: uses the resource class name instead of the output DTO class name - Doctrine filters require explicit
property(#7681): throwsInvalidArgumentExceptionif missing (unless you use a:propertyplaceholder) - Readonly entities lose PUT & PATCH (#7453): clients will receive 404 instead of processing the request
Behavioral Changes
- Hydra class
@iduses#ShortName(#7771): replaces schema.org type URIs — clients should expect class@idand property range changes - Scalar UI enabled by default (#7817): disable with
enable_scalar: falseif unwanted
See the full changelog with all bug fixes and detailed upgrade notes on the 4.3 branch CHANGELOG.md.
New Contributors
- @hotfix31 made their first contribution in #7450
- @BySplashGm made their first contribution in #7513
- @bonroyage made their first contribution in #7776
- @olinox14 made their first contribution in #7775
Full Changelog: v4.2.21...v4.3.0
v4.2.21
v4.2.21
Bug fixes
- 20ced5fca fix(laravel): clear SkolemIriConverter state between requests (#7838)
- 2b2b7bca2 fix(filter): use correct type for int-backed enums in BackedEnumFilter
- 42a2d7fc6 fix(symfony): register DateTimeValueObjectTransformer for JsonStreamer (#7839)
- 63e6b57f8 fix(openapi): correct redocly openapi errors (#7834)
- 6a472a2db fix(jsonapi): swap arguments in DefinitionNameFactory::create() call
- bbfd4cafa fix(filter): do not nest array while generating default schema (#7832)
- c20a41c20 fix(symfony): clear SkolemIriConverter state between requests via ResetInterface (#7829)
- d6ecbe122 fix(serializer): Use serializer when denormalizing relation inside Input (#7830)
- da6232468 fix(metadata): allow GraphQL-only resources without identifiers (#3975) (#7836)
- f4002902a fix(state): on creation, give expected class to object mapper (#7795)
v4.3.0-beta.2
What's Changed
- fix(odm): partial pagination limit the documents entering $facet by @divine in #7822
- chore: bump sub-components dependencies to ^4.3 by @soyuka in #7820
Full Changelog: v4.3.0-beta.1...v4.3.0-beta.2
v4.2.20
What's Changed
- fix(openapi): allow Operations to override global options in getPaginationParameters by @jamesisaac in #7807
- fix(laravel): exclude .blade.php files from recursive class scan by @Jellyfrog in #7813
- fix(laravel): do not exclude custom primary keys matching HasMany foreign keys by @Jellyfrog in #7810
- fix(symfony): make enable_docs a master switch for disabling documentation by @soyuka in #7806
- fix(odm): partial pagination limit the documents entering $facet by @divine in #7822
New Contributors
- @Jellyfrog made their first contribution in #7813
Full Changelog: v4.2.19...v4.2.20
v4.3.0-beta.1
What's Changed
- fix(serializer): apply API Platform name converter to input/output DTOs by @soyuka in #7779
- fix(JsonSchema): avoid schema name collision when an operation name is already used by another class by @wuchen90 in #7778
- fix(metadata): sort parameters by priority after pattern expansion by @soyuka in #7788
- fix(serializer): prevent api_platform_output context from leaking to nested non-resource objects by @soyuka in #7787
- fix(validator): missing required properties when using GroupSequence by @VincentLanglet in #7784
- ci: php 8.5 (#7585) by @soyuka in #7786
- fix(symfony): allow toggling GraphQL Playground to ensure BC by @bkosun in #7793
- feat(serializer): option to preserve key in CollectionNormalizer by @VincentLanglet in #7721
- fix(validator): handle nested groups and group sequences by @VincentLanglet in #7791
- Fix Hydra example type - use @type prefix per JSON-LD spec by @Copilot in #7768
- feat(laravel): split render logic from error handler by @bonroyage in #7790
- fix(serializer): report all missing constructor arguments in instantiateObject by @soyuka in #7805
- Feature support entity identfiers to become JSON:API semantics compliant by @elfin-sbreuers in #7702
- chore: mcp-bundle:^0.5 by @soyuka in #7809
- fix(openapi): allow Operations to override global options in getPaginationParameters by @jamesisaac in #7807
- feat(doctrine): ComparisonFilter decorator for range filtering by @soyuka in #7760
- fix(laravel): exclude .blade.php files from recursive class scan by @Jellyfrog in #7813
- feat(doctrine): ne (not equal) operator for ComparisonFilter by @soyuka in #7814
- feat(elasticsearch): OpenSearch support by @hotfix31 in #7811
- feat(doctrine): ODM SortFilter and nested property support for parameter-based filters by @soyuka in #7780
- fix(laravel): do not exclude custom primary keys matching HasMany foreign keys by @Jellyfrog in #7810
- fix(symfony): make enable_docs a master switch for disabling documentation by @soyuka in #7806
- fix(jsonapi): wrong variable name during merge by @soyuka in #7816
- feat: defaults parameters by @Maxcastel in #7758
New Contributors
- @Jellyfrog made their first contribution in #7813
Full Changelog: v4.3.0-alpha.2...v4.3.0-beta.1