Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: api-platform/core
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v4.0.22
Choose a base ref
...
head repository: api-platform/core
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v4.1.0
Choose a head ref
Loading
Showing with 4,877 additions and 1,316 deletions.
  1. +4 −1 .github/workflows/api_platform.yml
  2. +82 −29 .github/workflows/ci.yml
  3. +60 −0 CHANGELOG.md
  4. +4 −0 CONTRIBUTING.md
  5. +6 −6 composer.json
  6. +1 −1 docs/adr/0005-refactor-state-management.md
  7. +11 −10 features/hydra/docs.feature
  8. +2 −2 features/hydra/error.feature
  9. +0 −5 features/main/exception_to_status.feature
  10. +6 −6 features/main/validation.feature
  11. +25 −0 src/Doctrine/Common/Filter/ManagerRegistryAwareInterface.php
  12. +38 −0 src/Doctrine/Common/Filter/PropertyPlaceholderOpenApiParameterTrait.php
  13. +23 −0 src/Doctrine/Common/State/LinksHandlerLocatorTrait.php
  14. +4 −4 src/Doctrine/Common/composer.json
  15. +16 −14 src/Doctrine/Odm/Extension/PaginationExtension.php
  16. +43 −9 src/Doctrine/Odm/Extension/ParameterExtension.php
  17. +29 −6 src/Doctrine/Odm/Filter/AbstractFilter.php
  18. +11 −1 src/Doctrine/Odm/Filter/BooleanFilter.php
  19. +38 −12 src/Doctrine/Odm/Filter/DateFilter.php
  20. +19 −2 src/Doctrine/Odm/Filter/ExistsFilter.php
  21. +8 −1 src/Doctrine/Odm/Filter/NumericFilter.php
  22. +25 −7 src/Doctrine/Odm/Filter/OrderFilter.php
  23. +18 −1 src/Doctrine/Odm/Filter/RangeFilter.php
  24. +31 −61 src/Doctrine/Odm/Paginator.php
  25. +4 −4 src/Doctrine/Odm/PropertyHelperTrait.php
  26. +1 −1 src/Doctrine/Odm/State/CollectionProvider.php
  27. +1 −1 src/Doctrine/Odm/State/ItemProvider.php
  28. +1 −1 src/Doctrine/Odm/State/LinksHandlerTrait.php
  29. +60 −26 src/Doctrine/Odm/Tests/Extension/PaginationExtensionTest.php
  30. +1 −2 src/Doctrine/Odm/Tests/Fixtures/CustomConverter.php
  31. +34 −109 src/Doctrine/Odm/Tests/PaginatorTest.php
  32. +13 −3 src/Doctrine/Odm/Tests/State/CollectionProviderTest.php
  33. +13 −3 src/Doctrine/Odm/Tests/State/ItemProviderTest.php
  34. +7 −7 src/Doctrine/Odm/composer.json
  35. +35 −4 src/Doctrine/Orm/Extension/ParameterExtension.php
  36. +29 −9 src/Doctrine/Orm/Filter/AbstractFilter.php
  37. +11 −1 src/Doctrine/Orm/Filter/BooleanFilter.php
  38. +39 −13 src/Doctrine/Orm/Filter/DateFilter.php
  39. +23 −2 src/Doctrine/Orm/Filter/ExistsFilter.php
  40. +8 −1 src/Doctrine/Orm/Filter/NumericFilter.php
  41. +25 −7 src/Doctrine/Orm/Filter/OrderFilter.php
  42. +18 −1 src/Doctrine/Orm/Filter/RangeFilter.php
  43. +1 −1 src/Doctrine/Orm/PropertyHelperTrait.php
  44. +1 −2 src/Doctrine/Orm/Tests/Fixtures/CustomConverter.php
  45. +7 −7 src/Doctrine/Orm/composer.json
  46. +2 −2 src/Documentation/composer.json
  47. +13 −4 src/Elasticsearch/State/CollectionProvider.php
  48. +11 −4 src/Elasticsearch/State/ItemProvider.php
  49. +6 −6 src/Elasticsearch/composer.json
  50. +9 −1 src/GraphQl/Executor.php
  51. +18 −0 src/GraphQl/Tests/ExecutorTest.php
  52. +1 −2 src/GraphQl/Tests/Fixtures/Serializer/NameConverter/CustomConverter.php
  53. +6 −6 src/GraphQl/composer.json
  54. +5 −5 src/Hal/composer.json
  55. +3 −3 src/HttpCache/composer.json
  56. +51 −54 src/Hydra/Serializer/DocumentationNormalizer.php
  57. +1 −1 src/Hydra/Serializer/EntrypointNormalizer.php
  58. +1 −2 src/Hydra/Tests/Fixtures/CustomConverter.php
  59. +134 −327 src/Hydra/Tests/Serializer/DocumentationNormalizerTest.php
  60. +10 −10 src/Hydra/composer.json
  61. +24 −2 src/JsonApi/JsonSchema/SchemaFactory.php
  62. +1 −2 src/JsonApi/Tests/Fixtures/CustomConverter.php
  63. +6 −6 src/JsonApi/composer.json
  64. +4 −4 src/JsonLd/composer.json
  65. +2 −2 src/JsonSchema/DefinitionNameFactory.php
  66. +9 −4 src/JsonSchema/ResourceMetadataTrait.php
  67. +5 −2 src/JsonSchema/SchemaFactory.php
  68. +3 −3 src/JsonSchema/composer.json
  69. +30 −6 src/Laravel/ApiPlatformProvider.php
  70. +41 −12 src/Laravel/ApiResource/Error.php
  71. +23 −4 src/Laravel/ApiResource/ValidationError.php
  72. +2 −2 src/Laravel/Controller/ApiPlatformController.php
  73. +1 −1 src/Laravel/Eloquent/Extension/FilterQueryExtension.php
  74. +49 −0 src/Laravel/Eloquent/Filter/BooleanFilter.php
  75. +5 −5 src/Laravel/Eloquent/Metadata/Factory/Property/EloquentPropertyMetadataFactory.php
  76. +1 −3 src/Laravel/Exception/ErrorHandler.php
  77. +4 −0 src/Laravel/Metadata/ParameterValidationResourceMetadataCollectionFactory.php
  78. +3 −1 src/Laravel/Routing/IriConverter.php
  79. +6 −2 src/Laravel/State/SwaggerUiProvider.php
  80. +29 −0 src/Laravel/Tests/Eloquent/Filter/BooleanFilterTest.php
  81. +11 −0 src/Laravel/Tests/EloquentTest.php
  82. +79 −2 src/Laravel/Tests/JsonProblemTest.php
  83. +13 −13 src/Laravel/composer.json
  84. +18 −2 src/Laravel/config/api-platform.php
  85. +1 −0 src/Laravel/public/init-swagger-ui.js
  86. +2 −0 src/Laravel/resources/views/swagger-ui.blade.php
  87. +8 −0 src/Laravel/routes/api.php
  88. +4 −2 src/Laravel/workbench/app/Models/Book.php
  89. +4 −0 src/Laravel/workbench/app/Models/Vault.php
  90. +1 −0 src/Laravel/workbench/database/factories/BookFactory.php
  91. +1 −0 src/Laravel/workbench/database/migrations/2023_07_15_231244_create_book_table.php
  92. +44 −27 src/Metadata/ApiProperty.php
  93. +34 −27 src/Metadata/ApiResource.php
  94. +4 −0 src/Metadata/Delete.php
  95. +2 −0 src/Metadata/Error.php
  96. +19 −0 src/Metadata/ErrorResourceInterface.php
  97. +2 −0 src/Metadata/Extractor/XmlResourceExtractor.php
  98. +2 −0 src/Metadata/Extractor/YamlResourceExtractor.php
  99. +1 −0 src/Metadata/Extractor/schema/properties.xsd
  100. +2 −0 src/Metadata/Extractor/schema/resources.xsd
  101. +4 −0 src/Metadata/Get.php
  102. +4 −0 src/Metadata/GetCollection.php
  103. +31 −27 src/Metadata/HttpOperation.php
  104. +28 −0 src/Metadata/Metadata.php
  105. +11 −7 src/Metadata/Operation.php
  106. +12 −4 src/Metadata/Parameter.php
  107. +4 −0 src/Metadata/Patch.php
  108. +4 −0 src/Metadata/Post.php
  109. +8 −2 src/Metadata/Property/Factory/SerializerPropertyMetadataFactory.php
  110. +4 −0 src/Metadata/Put.php
  111. +35 −12 src/Metadata/Resource/Factory/ParameterResourceMetadataCollectionFactory.php
  112. +1 −0 src/Metadata/Tests/Extractor/Adapter/XmlPropertyAdapter.php
  113. +2 −0 src/Metadata/Tests/Extractor/Adapter/XmlResourceAdapter.php
  114. +1 −1 src/Metadata/Tests/Extractor/Adapter/properties.xml
  115. +1 −0 src/Metadata/Tests/Extractor/Adapter/properties.yaml
  116. +1 −1 src/Metadata/Tests/Extractor/Adapter/resources.xml
  117. +4 −0 src/Metadata/Tests/Extractor/Adapter/resources.yaml
  118. +1 −0 src/Metadata/Tests/Extractor/PropertyMetadataCompatibilityTest.php
  119. +6 −0 src/Metadata/Tests/Extractor/ResourceMetadataCompatibilityTest.php
  120. +8 −0 src/Metadata/Tests/Extractor/XmlExtractorTest.php
  121. +4 −0 src/Metadata/Tests/Extractor/YamlExtractorTest.php
  122. +6 −6 src/Metadata/composer.json
  123. +3 −0 src/OpenApi/Attributes/Webhook.php
  124. +7 −4 src/OpenApi/Command/OpenApiCommand.php
  125. +189 −65 src/OpenApi/Factory/OpenApiFactory.php
  126. +2 −0 src/OpenApi/Factory/OpenApiFactoryInterface.php
  127. +62 −0 src/OpenApi/Model/Tag.php
  128. +67 −3 src/OpenApi/Options.php
  129. +184 −78 src/OpenApi/Tests/Factory/OpenApiFactoryTest.php
  130. +4 −0 src/OpenApi/Tests/Serializer/OpenApiNormalizerTest.php
  131. +7 −7 src/OpenApi/composer.json
  132. +3 −3 src/RamseyUuid/composer.json
  133. +1 −2 src/Serializer/Tests/Fixtures/Serializer/NameConverter/CustomConverter.php
  134. +9 −9 src/Serializer/composer.json
  135. +92 −14 src/State/ApiResource/Error.php
  136. +53 −4 src/State/ErrorProvider.php
  137. +50 −0 src/State/Exception/ParameterNotSupportedException.php
  138. +16 −0 src/State/Provider/ParameterProvider.php
  139. +4 −4 src/State/composer.json
  140. +1 −0 src/Symfony/Action/DocumentationAction.php
  141. +0 −38 src/Symfony/Action/ErrorPageAction.php
  142. +20 −3 src/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php
  143. +2 −0 src/Symfony/Bundle/DependencyInjection/Compiler/ElasticsearchClientPass.php
  144. +40 −3 src/Symfony/Bundle/DependencyInjection/Configuration.php
  145. +1 −1 src/Symfony/Bundle/Resources/config/api.xml
  146. +1 −1 src/Symfony/Bundle/Resources/config/doctrine_mongodb_odm.xml
  147. +1 −0 src/Symfony/Bundle/Resources/config/doctrine_orm.xml
  148. +2 −0 src/Symfony/Bundle/Resources/config/graphql.xml
  149. +1 −0 src/Symfony/Bundle/Resources/config/metadata/resource.xml
  150. +4 −0 src/Symfony/Bundle/Resources/config/openapi.xml
  151. +0 −6 src/Symfony/Bundle/Resources/config/routing/errors.xml
  152. +1 −0 src/Symfony/Bundle/Resources/public/init-swagger-ui.js
  153. +1 −0 src/Symfony/Bundle/SwaggerUi/SwaggerUiAction.php
  154. +1 −0 src/Symfony/Bundle/SwaggerUi/SwaggerUiProcessor.php
  155. +5 −1 src/Symfony/Bundle/SwaggerUi/SwaggerUiProvider.php
  156. +4 −4 src/Symfony/Bundle/Test/ApiTestAssertionsTrait.php
  157. +4 −2 src/Symfony/Bundle/Test/ApiTestCase.php
  158. +3 −3 src/Symfony/Controller/MainController.php
  159. +1 −2 src/Symfony/EventListener/ReadListener.php
  160. +1 −0 src/Symfony/Tests/Bundle/DependencyInjection/ApiPlatformExtensionTest.php
  161. +9 −1 src/Symfony/Validator/State/ParameterValidatorProvider.php
  162. +17 −17 src/Symfony/composer.json
  163. +43 −18 src/Validator/Exception/ValidationException.php
  164. +2 −2 src/Validator/composer.json
  165. +11 −7 tests/Behat/ElasticsearchContext.php
  166. +37 −0 tests/Fixtures/TestBundle/ApiResource/Crud.php
  167. +30 −0 tests/Fixtures/TestBundle/ApiResource/CrudOpenApiApiPlatformTag.php
  168. +33 −0 tests/Fixtures/TestBundle/ApiResource/HideHydraClass.php
  169. +32 −0 tests/Fixtures/TestBundle/ApiResource/HideHydraOperation.php
  170. +35 −0 tests/Fixtures/TestBundle/ApiResource/StrictParameters.php
  171. +60 −0 tests/Fixtures/TestBundle/Document/FilteredBooleanParameter.php
  172. +76 −0 tests/Fixtures/TestBundle/Document/FilteredDateParameter.php
  173. +64 −0 tests/Fixtures/TestBundle/Document/FilteredExistsParameter.php
  174. +77 −0 tests/Fixtures/TestBundle/Document/FilteredNumericParameter.php
  175. +75 −0 tests/Fixtures/TestBundle/Document/FilteredOrderParameter.php
  176. +64 −0 tests/Fixtures/TestBundle/Document/FilteredRangeParameter.php
  177. +62 −0 tests/Fixtures/TestBundle/Entity/FilteredBooleanParameter.php
  178. +78 −0 tests/Fixtures/TestBundle/Entity/FilteredDateParameter.php
  179. +66 −0 tests/Fixtures/TestBundle/Entity/FilteredExistsParameter.php
  180. +79 −0 tests/Fixtures/TestBundle/Entity/FilteredNumericParameter.php
  181. +77 −0 tests/Fixtures/TestBundle/Entity/FilteredOrderParameter.php
  182. +66 −0 tests/Fixtures/TestBundle/Entity/FilteredRangeParameter.php
  183. +1 −2 tests/Fixtures/TestBundle/Serializer/NameConverter/CustomConverter.php
  184. +1 −0 tests/Fixtures/app/AppKernel.php
  185. +1 −1 tests/Fixtures/app/config/config_common.yml
  186. +80 −0 tests/Functional/ErrorTest.php
  187. +54 −0 tests/Functional/HydraTest.php
  188. +99 −0 tests/Functional/OpenApiTest.php
  189. +133 −0 tests/Functional/Parameters/BooleanFilterTest.php
  190. +144 −0 tests/Functional/Parameters/DateFilterTest.php
  191. +97 −0 tests/Functional/Parameters/ExistsFilterTest.php
  192. +123 −0 tests/Functional/Parameters/NumericFilterTest.php
  193. +140 −0 tests/Functional/Parameters/OrderFilterTest.php
  194. +136 −0 tests/Functional/Parameters/RangeFilterTest.php
  195. +46 −0 tests/Functional/Parameters/StrictParametersTest.php
  196. +2 −3 tests/JsonSchema/Command/JsonSchemaGenerateCommandTest.php
  197. +16 −0 tests/OpenApi/Command/OpenApiCommandTest.php
  198. +7 −1 tests/Symfony/Bundle/DependencyInjection/Compiler/ElasticsearchClientPassTest.php
  199. +44 −0 tests/Symfony/Bundle/DependencyInjection/ConfigurationTest.php
  200. +4 −1 tests/Symfony/Bundle/SwaggerUi/SwaggerUiActionTest.php
  201. +3 −1 tests/Symfony/Bundle/SwaggerUi/SwaggerUiProviderTest.php
  202. +17 −0 tests/Symfony/Bundle/Test/ApiTestCaseTest.php
  203. +2 −0 tests/Symfony/Controller/MainControllerTest.php
  204. +0 −1 tests/Symfony/Routing/ApiLoaderTest.php
5 changes: 4 additions & 1 deletion .github/workflows/api_platform.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
name: CI
name: Distribution update

on:
push:
tags:
- v*

env:
GH_TOKEN: ${{ github.token }}

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
111 changes: 82 additions & 29 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -39,7 +39,7 @@ jobs:
strategy:
matrix:
php:
- '8.3'
- '8.4'
fail-fast: false
steps:
- name: Checkout
@@ -99,7 +99,7 @@ jobs:
strategy:
matrix:
php:
- '8.3'
- '8.4'
fail-fast: false
steps:
- name: Checkout
@@ -136,7 +136,7 @@ jobs:
strategy:
matrix:
php:
- '8.3'
- '8.4'
fail-fast: false
env:
APP_DEBUG: '1' # https://github.com/phpstan/phpstan-symfony/issues/37
@@ -201,10 +201,11 @@ jobs:
php:
- '8.2'
- '8.3'
- '8.4'
include:
- php: '8.2'
coverage: true
- php: '8.3'
- php: '8.4'
coverage: true
fail-fast: false
steps:
@@ -245,7 +246,7 @@ jobs:
continue-on-error: true
- name: Upload coverage results to Codecov
if: matrix.coverage
uses: codecov/codecov-action@v3
uses: codecov/codecov-action@v5
with:
directory: build/logs/phpunit
name: phpunit-php${{ matrix.php }}
@@ -271,6 +272,7 @@ jobs:
php:
- '8.2'
- '8.3'
- '8.4'
component:
- api-platform/doctrine-common
- api-platform/doctrine-orm
@@ -290,8 +292,8 @@ jobs:
- api-platform/validator
include:
- php: '8.2'
coverage: true
- php: '8.3'
- php: '8.4'
coverage: true
fail-fast: false
steps:
@@ -323,7 +325,7 @@ jobs:
continue-on-error: true
- name: Upload coverage results to Codecov
if: matrix.coverage
uses: codecov/codecov-action@v3
uses: codecov/codecov-action@v5
with:
directory: /tmp/build/logs/phpunit
name: phpunit-php${{ matrix.php }}
@@ -349,13 +351,12 @@ jobs:
php:
- '8.2'
- '8.3'
- '8.4'
include:
- php: '8.2'
coverage: true
- php: '8.3'
- php: '8.4'
coverage: true
- php: '8.3'
coverage: false
fail-fast: false
steps:
- name: Checkout
@@ -405,7 +406,7 @@ jobs:
continue-on-error: true
- name: Upload coverage results to Codecov
if: matrix.coverage
uses: codecov/codecov-action@v3
uses: codecov/codecov-action@v5
with:
directory: build/logs/behat
name: behat-php${{ matrix.php }}
@@ -449,7 +450,7 @@ jobs:
strategy:
matrix:
php:
- '8.3'
- '8.4'
fail-fast: false
env:
APP_ENV: postgres
@@ -499,7 +500,7 @@ jobs:
strategy:
matrix:
php:
- '8.3'
- '8.4'
fail-fast: false
services:
mysql:
@@ -549,8 +550,7 @@ jobs:
strategy:
matrix:
php:
- '8.2'
- '8.3'
- '8.4'
fail-fast: false
env:
APP_ENV: mongodb
@@ -615,7 +615,7 @@ jobs:
path: build/logs/behat
continue-on-error: true
- name: Upload coverage results to Codecov
uses: codecov/codecov-action@v3
uses: codecov/codecov-action@v5
with:
directory: build/logs/behat
name: behat-php${{ matrix.php }}
@@ -638,8 +638,7 @@ jobs:
strategy:
matrix:
php:
- '8.2'
- '8.3'
- '8.4'
fail-fast: false
env:
APP_ENV: mercure
@@ -706,7 +705,7 @@ jobs:
path: build/logs/behat
continue-on-error: true
- name: Upload coverage results to Codecov
uses: codecov/codecov-action@v3
uses: codecov/codecov-action@v5
with:
directory: build/logs/behat
name: behat-php${{ matrix.php }}
@@ -729,7 +728,7 @@ jobs:
strategy:
matrix:
php:
- '8.3'
- '8.4'
fail-fast: false
env:
APP_ENV: elasticsearch
@@ -774,14 +773,67 @@ jobs:
- name: Run Behat tests
run: vendor/bin/behat --out=std --format=progress --profile=elasticsearch --no-interaction

elasticsearch-v7:
name: Behat (PHP ${{ matrix.php }}) (Elasticsearch v7)
runs-on: ubuntu-latest
timeout-minutes: 20
strategy:
matrix:
php:
- '8.3'
fail-fast: false
env:
APP_ENV: elasticsearch
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Configure sysctl limits
run: |
sudo swapoff -a
sudo sysctl -w vm.swappiness=1
sudo sysctl -w fs.file-max=262144
sudo sysctl -w vm.max_map_count=262144
- name: Runs Elasticsearch
uses: elastic/elastic-github-actions/elasticsearch@master
with:
stack-version: '7.17.0'
security-enabled: false
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
tools: pecl, composer
extensions: intl, bcmath, curl, openssl, mbstring, mongodb
coverage: none
ini-values: memory_limit=-1
- name: Get composer cache directory
id: composercache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache dependencies
uses: actions/cache@v4
with:
path: ${{ steps.composercache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
restore-keys: ${{ runner.os }}-composer-
- name: Update project dependencies
run: |
composer global require soyuka/pmu
composer global config allow-plugins.soyuka/pmu true --no-interaction
composer global link .
composer update elasticsearch/elasticsearch --prefer-lowest
- name: Clear test app cache
run: tests/Fixtures/app/console cache:clear --ansi
- name: Run Behat tests
run: vendor/bin/behat --out=std --format=progress --profile=elasticsearch --no-interaction

phpunit-no-deprecations:
name: PHPUnit (PHP ${{ matrix.php }}) (no deprecations)
runs-on: ubuntu-latest
timeout-minutes: 20
strategy:
matrix:
php:
- '8.3'
- '8.4'
fail-fast: false
steps:
- name: Checkout
@@ -820,7 +872,7 @@ jobs:
strategy:
matrix:
php:
- '8.3'
- '8.4'
fail-fast: false
steps:
- name: Checkout
@@ -863,7 +915,7 @@ jobs:
strategy:
matrix:
php:
- '8.3'
- '8.4'
fail-fast: false
steps:
- name: Checkout
@@ -1008,7 +1060,7 @@ jobs:
strategy:
matrix:
php:
- '8.3'
- '8.4'
fail-fast: false
steps:
- name: Checkout
@@ -1054,9 +1106,9 @@ jobs:
strategy:
matrix:
php:
- '8.3'
- '8.4'
include:
- php: '8.3'
- php: '8.4'
coverage: true
fail-fast: false
steps:
@@ -1106,7 +1158,7 @@ jobs:
continue-on-error: true
- name: Upload coverage results to Codecov
if: matrix.coverage
uses: codecov/codecov-action@v3
uses: codecov/codecov-action@v5
with:
directory: build/logs/phpunit
name: phpunit-php${{ matrix.php }}
@@ -1132,7 +1184,7 @@ jobs:
strategy:
matrix:
php:
- '8.3'
- '8.4'
fail-fast: false
steps:
- name: Checkout
@@ -1202,10 +1254,11 @@ jobs:
php:
- '8.2'
- '8.3'
- '8.4'
include:
- php: '8.2'
coverage: true
- php: '8.3'
- php: '8.4'
coverage: true
fail-fast: false
steps:
60 changes: 60 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,65 @@
# Changelog

## v4.1.0-beta.2

### Bug fixes

* [da37ca91c](https://github.com/api-platform/core/commit/da37ca91c83e4f715c5acbbe3dc0296e8055bebc) fix(laravel): default to file cache instead of cache.default (#6955)
* [e041d721e](https://github.com/api-platform/core/commit/e041d721ea6fe24026eb021905740b25102d7966) fix: errors retrieval and documentation (#6952)
* [e6130cbcc](https://github.com/api-platform/core/commit/e6130cbccc1a8963b731769ef34f39e09f5d2cde) fix: missing filters on swagger ui entrypoint (#6950)

### Features

* [771d9401c](https://github.com/api-platform/core/commit/771d9401cffa0463928bb35ab52a56b269d57e1b) feat(elasticsearch): re-introduce v7 support (#6827)
* [b5372ddee](https://github.com/api-platform/core/commit/b5372ddeef2067333761104f3c17ed1b86001bf4) feat(openapi): filter x-apiplatform-tags to produce different openapi specifications (#6945)

## v4.1.0-beta.1

### Features

* [2e2debb94](https://github.com/api-platform/core/commit/2e2debb94b06752262b0d18b736edc22b501266b) feat(mongodb): Replace usage of deprecated method `AggregationBuilder::execute()` (#6933)
* [4bdf042e5](https://github.com/api-platform/core/commit/4bdf042e5cab1ddb931562cf98a97686d8c415ae) feat(mongodb): Add pagination metadata to the aggregation results (#6912)
* [b968ccd50](https://github.com/api-platform/core/commit/b968ccd5026afb5562c4c4588929885b86ecb3cb) feat(openapi): document error outputs using json-schemas (#6923)

## v4.1.0-alpha.2

### Bug fixes

* [01fd74268](https://github.com/api-platform/core/commit/01fd74268cf0e4a289b31ea74bea7f4e089b8361) fix(laravel): restore accidentally removed BooleanFilter
* [db40a63e7](https://github.com/api-platform/core/commit/db40a63e729fe03be84111dac2b0774fea4ab343) fix(hydra): rdfs:label should not duplicate title (#6748)
* [deb2ed265](https://github.com/api-platform/core/commit/deb2ed265dfee7b8a73fd3b542aef3e29eca3412) fix(laravel): fix use laravel fillable for writable props (#6898)

### Features

* [c97db6bb2](https://github.com/api-platform/core/commit/c97db6bb2f6b2db9a6a17141bdb56bd51e9fc50d) feat: swagger ui persist authorization option (#6877)

### Notes

The [hydra patch](#6748) changes default `hydra:title` and uses the resource `shortname`. Previously the `hydra:title` information was duplicating the `hydra:description`.
The `rdfs:label` got removed from the `hydra:Class` as it was used instead of the `hydra:title`.
On `hydra:property` `rdfs:label` got renamed to `label` as the `rdfs` namespace is available in the context.
The `ApiPlatform\Metadata\ErrorResource` and the `ConstraintViolation` (`ValidationException` class) are now generated directly from your PHP classes, only our `ConstraintViolationList` is hard-written and documents the `ConstraintViolation::violation` property. Therefore, your [own error resources](https://api-platform.com/docs/guides/error-resource/) are also documented. On top of that, we now set the `rdfs:subClassOf` to `hydra:Error`.
`#[ApiProperty(hydra: false)]` allows you to skip a documented `hydra:supportedProperty` on a class.
On write operations, we added the [expectsHeader](https://www.hydra-cg.com/spec/latest/core/#hydra:expectsHeader) field.


## v4.1.0-alpha.1

### Bug fixes

* [67fbe51c5](https://github.com/api-platform/core/commit/67fbe51c570abe1ece6651ae6a037662e9012881) fix: reintroduce the `show_webby` parameter in Laravel config (#6741)

### Features

* [00787f32d](https://github.com/api-platform/core/commit/00787f32da54418de7d869cff218e22d8ae2ae1d) feat(laravel): automatically register policies (#6623)
* [12c42096b](https://github.com/api-platform/core/commit/12c42096bb0006d6ebae60ae5d90e9b356f9a335) feat(metadata): ability to hide an hydra class/operation (#6871)
* [57f15cf4f](https://github.com/api-platform/core/commit/57f15cf4f38278315c5f31d3949416c9455ba0d0) feat(state): strict query parameters (#6399)
* [bd0e92936](https://github.com/api-platform/core/commit/bd0e92936f82d3cd4563cd45ebf1f73fd1db9f01) feat(openapi): HTTP Authentication Support for Swagger UI (#6665)
* [be98f4e01](https://github.com/api-platform/core/commit/be98f4e01a52d8341ef9b65ed2f4e3b46ab31165) feat(graphql): allow to configure max query depth and max query complexity (#6880)
* [c78ed0b78](https://github.com/api-platform/core/commit/c78ed0b78baf5d2e1b7444a9882ba039c70a3887) feat(laravel): boolean filter (#6806)
* [d0a442786](https://github.com/api-platform/core/commit/d0a44278630d201b91cbba0774a09f4eeaac88f7) feat(doctrine): enhance getLinksHandler with method validation and typo suggestions (#6874)
* [f67f6f1ac](https://github.com/api-platform/core/commit/f67f6f1acb6476182c18a3503f2a8bc80ae89a0b) feat(doctrine): doctrine filters like laravel eloquent filters (#6775)

## v4.0.17

### Bug fixes
4 changes: 4 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -187,6 +187,10 @@ The last step is to add you feature inside `features/`. You can add your test in
API Platform is split into several components. There are tests for each of these, to run them `cd src/Doctrine/Common` then `composer update` and `./vendor/bin/phpunit`.
We do not provide a way to run all these tests at once yet.

## Changing a version constraint

Preferably change the version inside the root `composer.json`, then use `composer blend --all` to re-map the depedency accross each sub-project automatically.

# License and Copyright Attribution

When you open a Pull Request to the API Platform project, you agree to license your code under the [MIT license](LICENSE)
Loading