Sparse fieldsets

You can restrict the fields returned by api with the querystring parameter called “fields”. It is very useful for performance purpose because fields not returned are not resolved by api. You can use “fields” parameter on any kind of route (classical CRUD route or relationships route) and any kind of http methods as long as method return data.


Examples are not urlencoded for a better readability

The syntax of a fields is like that

?fields[<resource_type>]=<list of fields to return>


GET /persons?fields[person]=display_name HTTP/1.1
Accept: application/vnd.api+json

In this example person’s display_name is the only field returned by the api. No relationships links are returned so the response is very fast because api doesn’t have to compute relationships link and it is a very costly work.

You can manage returned fields for the entire response even for included objects


If you don’t want to compute relationships links for included computers of a person you can do something like that

GET /persons/1?include=computers&fields[computer]=serial HTTP/1.1
Accept: application/vnd.api+json

And of course you can combine both like that:


GET /persons/1?include=computers&fields[computer]=serial&fields[person]=name,computers HTTP/1.1
Accept: application/vnd.api+json


If you want to use both “fields” and “include” don’t forget to specify the name of the relationship in fields; if you don’t the include wont work.