m9t
Hi there!
I’m using ash_json_api and I’m trying to add metadata to the response of a create action, but it doesn’t seem to be included in the meta field. I’ve got the following relevant pieces in my resource:
json_api do
type "asset"
routes do
base "/assets"
get :read
index :read
post :create
end
end
actions do
defaults [:read]
create :create do
# Set the current user as the owner of the asset
change relate_actor(:user)
# Create signed url for the asset
metadata :signed_url, :string, allow_nil?: false
change Swoop.Media.Changes.GeneratePresignedUrl
end
end
In GeneratePresignedUrl I’m returning this in a after_action function:
result = Ash.Resource.put_metadata(result, :signed_url, url)
{:ok, result}
But unfortunately after doing a POST to the endpoint with curl, I’m getting empty meta fields:
{"data":{"attributes":{},"id":"11700f40-c37b-4776-b3b0-7d1207cbb6d0","links":{},"meta":{},"relationships":{},"type":"asset"},"jsonapi":{"version":"1.0"},"links":{"self":"http://localhost:4000/api/json/assets"},"meta":{}}
What am I missing?
Thanks in advance!
Trending in Questions
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
Hello,
I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
Documentation
While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
Hi everyone,
I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding.
I sta...
New
So my question is quite simple and i have found no conclusive answer on forum, google or AI.
Should we use :erlang.float for Integer to ...
New
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
I’m new to elixir and just tried to install the elixirLS extension for VScode(ium) and it is throwing some errors that I would like help ...
New
Other Trending Topics
Edit: 2026 May 15 - This post is archived.
Mob is alive!!
Main docs: mob v0.7.11 — Documentation
A bit of explanation for the slightly c...
New
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
Hi there! We created Gust: A task orchestrator inspired by Airflow.
For those who have never heard about Aiflow, it’s a Python-based wor...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #ai
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #elixirconf-eu
- #metaprogramming
- #hex










Showing Posts 1 to 4- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
zachdaniel
At the moment, action metadata isn’t translated to record
metain the JSON:API. Please open a feature request for thisTo accomplish what you want, you have two options:
you can use the
metadataoption on the route to add route-level meta. This is done via a function of the various components of the request. This will be in the top levelmeta, not the record’s metadata. AshJsonApi.Resource — ash_json_api v1.7.0you can use a calculation instead of metadata:
This can then be requested in the
fieldsparameter, i.efields[type-name]=foo,bar,baz,signed_url.m9t
Great, thanks! I’ll use one of those options for now and open a feature request.
Just out of curiosity, what is the
metadataoption on the actions used for?m9t
Actually kept my code the same, but changed my create route to:
So that I possibly can reuse the metadata in other places than the route. But still curious to know if there may be other use cases
zachdaniel
The way you are attempting to use it is actually its intended use case
However, it just hasn’t been hooked up to
ash_json_apiyet.AshGraphqlhas a way to expose metadata in exactly that same way. It requires some adjustments to our open api schema generation logic, because we need to do one of three things:asset-with-urlmetato all typesmetaas untyped “object”Its a solvable problem, just hasn’t been implemented yet