Drivers/Capability matrix
Capability matrix
Not every backend can express every query. Each request strategy declares what it supports, and the builder throws rather than emitting a URI the server would silently ignore.
This table is read from the shipped capabilities flags, so it is always what the code does.
| Driver | Filters | Operators | Sort | Select | Fields | Includes | Search | Embedded |
|---|---|---|---|---|---|---|---|---|
| API Platform | ✅ | ✅ | ✅ | — | — | — | — | — |
| Directus | ✅ | ✅ | ✅ | ✅ | — | ✅ | ✅ | ✅ |
| Django REST Framework | ✅ | ✅ | ✅ | — | — | — | ✅ | — |
| FastAPI | ✅ | ✅ | ✅ | — | — | — | ✅ | — |
| FeathersJS | ✅ | ✅ | ✅ | ✅ | — | — | — | — |
| JSON:API | ✅ | — | ✅ | — | ✅ | ✅ | — | — |
| json-server | ✅ | ✅ | ✅ | — | — | — | ✅ | — |
| Laravel | — | — | — | — | — | — | — | — |
| nestjs-paginate | ✅ | ✅ | ✅ | ✅ | — | — | ✅ | — |
| @nestjsx/crud | ✅ | ✅ | ✅ | ✅ | — | ✅ | — | — |
| OData v4 | ✅ | ✅ | ✅ | ✅ | — | ✅ | ✅ | ✅ |
| Payload CMS | ✅ | ✅ | ✅ | ✅ | — | — | — | — |
| PocketBase | ✅ | ✅ | ✅ | ✅ | — | ✅ | — | — |
| PostgREST | ✅ | ✅ | ✅ | ✅ | — | — | — | ✅ |
| Ransack (Rails) | ✅ | ✅ | ✅ | — | — | — | — | — |
| Sieve | ✅ | ✅ | ✅ | — | — | — | — | — |
| spatie/laravel-query-builder | ✅ | — | ✅ | — | ✅ | ✅ | — | — |
| Spring Data REST | — | — | ✅ | — | — | — | — | — |
| Strapi | ✅ | ✅ | ✅ | ✅ | — | ✅ | — | — |
| WordPress REST API | ✅ | — | ✅ | ✅ | — | ✅ | ✅ | — |
| Supported by | 18/20 | 15/20 | 19/20 | 10/20 | 2/20 | 8/20 | 7/20 | 3/20 |
What each column means
Section titled “What each column means”| Capability | Method | Meaning |
|---|---|---|
| Filters | addFilter() |
capabilities.filters |
| Operators | addFilterOperator() |
capabilities.operatorFilters |
| Sort | addSort() |
capabilities.sort |
| Select | addSelect() |
capabilities.select |
| Fields | addFields() |
capabilities.fields |
| Includes | addIncludes() |
capabilities.includes |
| Search | setSearch() |
capabilities.search |
| Embedded | addEmbedded() |
capabilities.embedded |
