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
Hello!
Suppose you are building workflow (order / task / payment) processing system with the following requirements:
Each workflow con...
New
I’m in search of an Elixir library that offers PDF generation capabilities similar to Ruby’s Prawn. While there have been discussions abo...
New
I’m looking to build a personal workflow to quickly deploy web applications written in elixir/phoenix, for local consumption (ie not on t...
New
Before I dive in myself, did anyone successfully sprinkle Hologram into their existing LiveView app?
Looking for hints regarding:
Addi...
New
Hi all, I wanted to ask how the community is dealing with post-release steps.
Today we have Ecto migrations, which make sure that the db...
New
Kia ora,
We have been using elixir-google-api to connect to Google Drive. However, with the updates to Tesla due to CVEs this is now bro...
New
Hello,
I have an Elixir backend that implements a custom protocol over TCP. I want to load test the backend and assess the performance o...
New
Other Trending Topics
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
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve.
They are GUI (Emerge) and State management (S...
New
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #blog-post
- #phoenix_html
- #iex
- #graphql
- #genstage
- #ai
- #elixirconf-us
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #security
- #hex










First 4 of 4 Posts
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