- Fix path generators
- Fix some method signatures related to subresources
- Improve performance of the deserialization mechanism
- Add a builtin HTTP cache invalidation system able to store all requests in Varnish (or any other proxy supporting cache tags) and purge it instantly when needed
- Add an authorization system configurable directly from the resource class
- Add support for subresources (like
/posts/1/comments
or/posts/1/comments/2
- Revamp the automatic documentation UI (upgraded to the React-based version of Swagger UI, added a custom stylesheet)
- Add a new filter to select explicitly which properties to serialize
- Add a new filter to choose which serialization group to apply
- Add a new filter to test if a property value exists or not
- Add support for OAuth 2 in the UI
- Add support for embedded fields
- Add support for customizable API resources folder's name
- Filters's ids now defaults to the Symfony's service name
- Add configuration option to define custom metadata loader paths
- Make Swagger UI compatible with a strict CSP environment
- Add nulls comparison to OrderFilter
- Add a flag to disable all request listeners
- Add a default order option in the configuration
- Allow to disable all operations using the XML configuration format and deprecate the previous format
- Allow upper cased property names
- Improve the overall performance by optimizing
RequestAttributesExtractor
- Improve the performance of the filters subsystem by using a PSR-11 service locator and deprecate the
FilterCollection
class - Add compatibility with Symfony Flex and Symfony 4
- Allow the Symfony Dependency Injection component to autoconfigure data providers and query extensions
- Allow to use service for dynamic validation groups
- Allow using PHP constants in YAML resources files
- Upgrade to the latest version of the Hydra spec
- Add
pagination
anditemPerPage
parameters in the Swagger/Open API documentation - Add support for API key authentication in Swagger UI
- Allow to specify a whitelist of serialization groups
- Allow to use the new immutable date and time types of Doctrine in filters
- Update swagger definition keys to more verbose ones (ie
Resource-md5($groups)
=>Resource-groupa_groupb
) - see api-platform/core#1207
- Ensure PHP 7.2 compatibility
- Fix some bug regarding Doctrine joins
- Let the
hydra_context
option take precedence over operation metadata - Fix relations handling by the non-hypermedia
ItemNormalizer
(raw JSON, XML) - Fix a bug in the JSON-LD context: should not be prefixed by
#
- Fix a bug regarding serialization groups in Hydra docs
- Performance improvement
- Swagger: Allow non-numeric IDs (such as UUIDs) in URLs
- Fix a bug when a composite identifier is missing
ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\OrderFilter::extractProperties
now always return an array- Fix NelmioApiDocParser recursive relations
- Add support for Symfony 3.3
- Disable the partial eager loading by default
- Fix support for ignored attributes in normalizers
- Specify the
LEFT JOIN
clause for filter associations - Move the metadata from validator factory to the validator.xml file
- Throw an exception when the number of items per page is 0
- Improve the Continuous Integration process
- Leverage serialization groups to eager load data
- Fix the Swagger Normalizer to correctly support nested serialization groups
- Use strict types
- Get rid of the dependency to the Templating component
- Explicitly add missing dependency to PropertyAccess component
- Allow the operation name to be null in ResourceMetadata
- Fix an undefined index error occurring in some cases when using sub types
- Make the bundle working even when soft dependencies aren't installed
- Fix serialization of multiple inheritance child types
- Fix the priority of the FOSUSer's event listener
- Fix the resource class resolver with using
\Traversable
values - Fix inheritance of property metadata for the Doctrine ORM property metadata factory
- EagerLoadingExtension: Disable partial fetching if entity has subclasses
- Refactoring and cleanup of the eager loading mechanism
- Fix the handling of composite identifiers
- Fix HAL normalizer when the context isn't serializable
- Fix some quality problems found by PHPStan
- [security] Hide error's message in prod mode when a 500 error occurs (Api Problem format)
- Fix sorting when eager loading is used
- Allow eager loading when using composite identifiers
- Don't use automatic eager loading when disabled in the config
- Use
declare(strict_types=1)
and improve coding standards - Automatically refresh routes in dev mode when a resource is created or deleted
- Correct the XML Schema type generated for floats in the Hydra documentation
- Fix a bug when multiple filters are applied
- [security] Hide error's message in prod mode when a 500 error occurs
- Prevent duplicate data validation
- Fix filter Eager Loading
- Fix the Hydra documentation for
ConstraintViolationList
- Fix some edge cases with the automatic configuration of Symfony
- Remove calls to
each()
(deprecated since PHP 7.2) - Add a missing property in
EagerLoadingExtension
- Fix a bug when handling invalid IRIs
- Allow to have a property called id even in JSON-LD
- Exclude static methods from AnnotationPropertyNameCollectionFactory
- Improve compatibility with Symfony 2.8
- Fix the support of the Symfony's serializer @MaxDepth annotation
- Fix property range of relations in the Hydra doc when an IRI is used
- Fix an error "api:swagger:export" command when decorating the Swagger normalizer
- Fix an an error in the Swagger documentation generator when a property has several serialization groups
- Various fixes related to automatic eager loading
- Symfony 3.2 compatibility
- Full refactoring
- Use PHP 7
- Add support for content negotiation
- Add Swagger/OpenAPI support
- Integrate Swagger UI
- Add HAL support
- Add API Problem support
- Update the Hydra support to be in sync with the last version of the spec
- Full rewrite of the metadata system (annotations, YAML and XML formats support)
- Remove the event system in favor of the builtin Symfony kernel's events
- Use the ADR pattern
- Fix a ton of issues
ItemDataproviderInterface
:fetchData
is now in the context parameterer.getItemFromIri
is now context aware 7f82fd7- Constants for event's priorities 2e7b73e
- Properties mapping with XML/YAML is now possible ef5d037
- Ability to configure and match exceptions with an HTTP status code e9c1863
- Various fixes and improvements (SwaggerUI, filters, stricter property metadata)
- Fix a case typo in a namespace alias in the Hydra documentation
- Allow to configure the default controller to use
- Ability to add route requirements
- Add a range filter
- Search filter: add a case sensitivity setting
- Search filter: fix the behavior of the search filter when 0 is provided as value
- Search filter: allow to use identifiers different than id
- Exclude tests from classmap
- Fix some deprecations and tests
- Support Symfony 3.0
- Support nested properties in Doctrine filters
- Add new
start
andword_start
strategies to the Doctrine Search filter - Add support for abstract resources
- Add a new option to totally disable Doctrine
- Remove the ID attribute from the Hydra documentation when it is read only
- Add method to avoid naming collision of DQL join alias and bound parameter name
- Make exception available in the Symfony Debug Toolbar
- Improve the Doctrine Paginator performance in some cases
- Enhance HTTPS support and fix some bugs in the router
- Fix some edge cases in the date and time normalizer
- Propagate denormalization groups through relations
- Run tests against all supported Symfony versions
- Add a contribution documentation
- Refactor tests
- Check CS with StyleCI
- Avoid an error if the attribute isn't an array
- Extract the documentation in a separate repository
- Add support for eager loading in collections
- The Hydra documentation URL is now
/apidoc
(was/vocab
) - Exceptions implements
Dunglas\ApiBundle\Exception\ExceptionInterface
- Prefix automatically generated route names by
api_
- Automatic detection of the method of the entity class returning the identifier when using Doctrine (previously
getId()
was always used) - New extension point in
Dunglas\ApiBundle\Doctrine\Orm\DataProvider
allowing to customize Doctrine paginator and performance optimization when using typical queries - New
Dunglas\ApiBundle\JsonLd\Event\Events::CONTEXT_BUILDER
event allowing to modify the JSON-LD context - Change HTTP status code from
202
to200
forPUT
requests - Ability to embed the JSON-LD context instead of embedding it
- Preserve indexes when normalizing and denormalizing associative arrays
- Allow to set default order for property when registering a
Doctrine\Orm\Filter\OrderFilter
instance