Hi!
I’ve got a resource with a bunch of attributes that show up in the json response when queried, but this response does not included any aggregates on the resource.
Do I have to do anything to add aggregates to the json api response?
Hi!
I’ve got a resource with a bunch of attributes that show up in the json response when queried, but this response does not included any aggregates on the resource.
Do I have to do anything to add aggregates to the json api response?
The JSON:API provides the fields query option, which controls what fields to return for an individual resource type. For example, fields[type]=foo,bar would return the foo and bar fields for anything w/ type type. The default value of fields is just the attributes. You can set the default_fields to include the attributes and aggregates, or request them on demand.
i.e
json_api do
default_fields [:foo, :bar, :baz]
...
end
or
?fields[type]=foo,bar,baz
Thanks for answering @zachdaniel . default_fields is what I’m looking for, however, trying that is throwing a no such import default_fields/1 error. Any idea why?
Also trying fields[json_api_resource_type]="foo,aggregate_bar" throws an error as well:
** (UndefinedFunctionError) function nil.embedded?/0 is undefined
This only happens when I add the aggregate field aggregate_bar to the fields query
Ah, I was wrong, it looks like default_fields is on a route by route basis. We should probably add a top level version of that as well.
Got a stack trace for that error? I think there is likely a bug somewhere ![]()
Here is a trace:
** (UndefinedFunctionError) function nil.embedded?/0 is undefined
nil.embedded?()
(ash_json_api 0.34.1) lib/ash_json_api/serializer.ex:698: anonymous fn/5 in AshJsonApi.Serializer.serialize_attributes/2
(elixir 1.15.7) lib/enum.ex:2510: Enum."-reduce/3-lists^foldl/2-0-"/3
(ash_json_api 0.34.1) lib/ash_json_api/serializer.ex:456: AshJsonApi.Serializer.serialize_one_record/2
(elixir 1.15.7) lib/enum.ex:1693: Enum."-map/2-lists^map/1-1-"/2
(ash_json_api 0.34.1) lib/ash_json_api/serializer.ex:39: AshJsonApi.Serializer.serialize_many/3
(ash_json_api 0.34.1) lib/ash_json_api/controllers/response.ex:50: AshJsonApi.Controllers.Response.render_many/5
(form_service 0.1.0) deps/plug/lib/plug/router.ex:246: anonymous fn/4 in FormServiceWeb.Forms.Router.dispatch/2
Let me know if this helps ![]()
Ah, right okay that will be a straightforward fix. Can you open an issue on ash_json_api?
Opened a GH issue here
Thanks! Fixed in main ![]()