Releases: api-platform/core
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
v4.2.19
v4.2.18
What's Changed
- 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
- 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
Full Changelog: v4.2.17...v4.2.18
v4.3.0-alpha.2
What's Changed
- fix(jsonld): restore item_uri_template @type resolution after 4.2 merge by @soyuka in #7764
- Various fixes by @soyuka in #7765
- fix(elasticsearch): mono-repo v9 support by @GeLoLabs in #7766
- fix: remove extra empty lines insertion in SymfonyServiceClassConstantFixer by @Maxcastel in #7761
- fix(state): handle partial pagination with object mapper by @soyuka in #7769
- test(openapi): add openapi test for normalization with attributes by @Maxcastel in #7772
- fix(hydra): hide search key when there is parameter without filter by @VincentLanglet in #7773
- fix(hydra): unique class @id with subClassOf for semantic types by @soyuka in #7771
- feat(doctrine): add nested relation support to IriFilter and UuidFilter by @soyuka in #7759
- fix(symfony): publish mercure updates for all resources of an entity by @soyuka in #7774
- Use values from ProblemExceptionInterface by @bonroyage in #7776
- fix(symfony): use AsCommand description parameter for console commands by @soyuka in #7763
- feat(serializer): global defaults.normalization_context.gen_id configuration option by @olinox14 in #7775
- fix(doctrine): enforce api-platform/serializer dependency by @soyuka in #7781
⚠️ Notes
Hydra class @id now always uses #ShortName (#7771): Hydra documentation classes now consistently use #ShortName as their @id instead of schema.org type URIs (e.g. schema:Product). This properly resolves class identifier collisions when multiple resources shared the same semantic type, which previously caused api-doc-parser conflation. Semantic types configured via types are now exposed through rdfs:subClassOf. Clients should expect class @id and property range changes in the Hydra documentation if resources had custom types configured.
New Contributors
- @bonroyage made their first contribution in #7776
- @olinox14 made their first contribution in #7775
Full Changelog: v4.3.0-alpha.1...v4.3.0-alpha.2
v4.2.17
What's Changed
- fix: remove extra empty lines insertion in SymfonyServiceClassConstantFixer by @Maxcastel in #7761
- fix(state): handle partial pagination with object mapper by @soyuka in #7769
- fix(hydra): hide search key when there is parameter without filter by @VincentLanglet in #7773
- fix(symfony): use AsCommand description parameter for console commands by @soyuka in #7763
- 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
Full Changelog: v4.2.16...v4.2.17
v4.3.0-alpha.1
Features
- feat(mcp): introduce api-platform/mcp component (#7703)
- feat: mcp bundle tool integration (#7595)
- feat: add support of collection to MCP (#7724)
- feat(laravel): mcp support (#7709)
- feat(laravel): object mapper (#7704)
- feat: support relations on filters (#7711)
- feat(jsonschema): support for normalization/denormalization with attributes (#7629)
- feat(symfony): isGranted before provider (#7500)
- feat(doctrine): uuid filter (#7628)
- feat(doctrine): Add caseSensitive option to PartialSearchFilter (#7675)
- feat(doctrine): remove PUT & PATCH for readonly entity (#7453)
- feat(validator): uuid/ulid parameter validation (#7649)
- feat(json-schema): handle union object types in iterable properties (#7726)
- feat: allow both uppercase and lowercase order direction in OrderFilter schema (#7741)
- feat(elasticsearch): add SSL options for Elasticsearch configuration (#4059)
- feat(metadata): expose default attribute on parameters (#7551)
- feat(state): add headers to comply with LDP specification (#6917)
- feat(symfony): allow symfony makers namespace configuration (#7497)
- feat: enable to skip autoconfiguration with new
SkipAutoconfigureattribute (#7467) - feat(metadata): cache operation metadata factory (#7516)
Bug fixes
- fix(validator): validate entities after ObjectMapper transformation (#7731)
- fix(jsonld)!: item uri template type (#7518)
- fix(doctrine): throw exception if property is null for the doctrine filters (#7681)
Breaking changes
- When using
outputwithitemUriTemplateon a collection operation, the JSON-LD@typewill now use the resource class name instead of the output DTO class name for semantic consistency withitemUriTemplatebehavior.
Full Changelog: v4.2.16...v4.3.0-alpha.1
v4.2.16
What's Changed
- fix(laravel): support numeric float types in eloquent metadata factory by @soyuka in #7730
- fix(doctrine): skip uninitialized properties in handleLazyObjectRelations by @marius-swfy in #7738
- fix(hydra): remove duplicate @context in docs.jsonld (fixes #7222) by @soyuka in #7740
- feat(doctrine): allow both uppercase and lowercase order direction in OrderFilter schema by @soyuka in #7742
- feat: support filters with stateOptions by @alexislefebvre in #7739
- refactor: use imported Group instead of FQCN by @Maxcastel in #7754
- refactor: use imported DataProvider instead of FQCN by @Maxcastel in #7753
- fix(serializer): prevent context leakage with service-based entity resolution by @soyuka in #7756
New Contributors
- @marius-swfy made their first contribution in #7738
Full Changelog: v4.2.15...v4.2.16
v4.2.15
What's Changed
- add
phpunit.baseline.xmlto .gitattributes by @gharlan in #7692 - fix: if the relationship is null the jsonapi output must present null by @elfin-sbreuers in #7686
- Fix issues with extending {XML,Yaml} -> {XML,Yaml} resources by @senghe in #5956
- fix: Change payload type from array to free-form object in schema by @DjordyKoert in #7694
- ci: hide progress from PHP-CS-Fixer by @alexislefebvre in #7696
- fix(doctrine): post with mapped relation by @soyuka in #7698
- fix(symfony): prevent symfony name converter service pollution by @soyuka in #7691
- Bump github actions by @VincentLanglet in #7700
- chore(symfony): custom rule to transform class-string to use instructions by @soyuka in #7708
- test: cover exception if property is null for filters by @Maxcastel in #7716
- fix Hydra JsonSchema SchemaFactory by @amenophis in #7718
- chore: split agents to reduce context usage by @soyuka in #7719
- fix(symfony): declare api_platform.normalizer.object fixes #7705 by @soyuka in #7717
- fix(laravel): properly transform invokable service to route action by @soyuka in #7720
New Contributors
- @elfin-sbreuers made their first contribution in #7686
- @senghe made their first contribution in #5956
- @DjordyKoert made their first contribution in #7694
Full Changelog: v4.2.14...v4.2.15
v4.2.14
What's Changed
- fix(doctrine): useless generateParameterName call by @VincentLanglet in #7679
- doc: fix CI badge on README by @alexislefebvre in #7683
- ci: run PHPUnit tests on Mysql and Pgsql by @VincentLanglet in #7680
- fix(laravel): use controller if declared by @soyuka in #7687
- fix(doctrine): PartialSearchFilter on multibyte characters by @VincentLanglet in #7688
- fix(symfony): fix for symfony/json_streamer 8.0 with enable_json_streamer by @aaa2000 in #7684
- fix(jsonschema): call to an undefined method
Symfony\Component\TypeInfo\Type::getClassName()by @Maxcastel in #7685
Full Changelog: v4.2.13...v4.2.14
v4.2.13
What's Changed
- Add phpdoc for array of some interface by @VincentLanglet in #7583
- fix(openapi): phpdoc operation response as array<int|string, OpenApi\Response> by @petski in #7660
- fix(symfony): pass missing arguments to
ConcernsResourceMetadataCollectionFactoryby @ttskch in #7676 - test(validator): improve ValidationException::violations schema by @VincentLanglet in #7673
- fix(metadata): fix losing content on error reponse with no output by @VincentLanglet in #7674
- chore(symfony): bump api platform components by @soyuka in #7677
New Contributors
Full Changelog: v4.2.12...v4.2.13