Api Platform Resources (Symfony)
Use when
- Exposing a new entity or class as an
#[ApiResource].
- Choosing exactly which of
Get, GetCollection, Post, Put, Patch, and Delete the API offers.
- Tuning collection pagination (items per page, partial pagination, client control).
- Documenting operations with typed OpenAPI objects instead of
openapiContext arrays.
Default workflow
- Install only the components you need:
api-platform/symfony, api-platform/doctrine-orm, and optionally api-platform/graphql; on Symfony 6.4 LTS, pin them to ~4.3.0.
- List every operation in
operations:, since declaring any one stops the automatic CRUD, and Put is never automatic.
- Set
uriTemplate, requirements, status, or routePrefix only where the defaults do not fit.
- Configure pagination through resource attributes or
api_platform.defaults in config/packages/api_platform.yaml.
- Describe operations with
openapi: model objects, set validationContext groups, then check the routes and the OpenAPI export.
Guardrails
- Declaring one operation removes the default CRUD: an
operations: [new Get()] resource has no collection, Post, or Delete.
openapiContext arrays are deprecated in v4: use the typed openapi: option.
collectionOperations and itemOperations no longer exist.
paginationClientEnabled lets clients disable pagination: keep paginationMaximumItemsPerPage set.
Progressive disclosure
- Use this file for execution posture and risk controls.
- Open references when deep implementation details are needed.
Output contract
- The resource class with its explicit operation list and the routes it produces.
- Pagination and OpenAPI settings, with the reason for each override.
- Route listing and test results for each declared operation.
References