How to set tenant parameter in GET call

I’m new to developing with Ash and I want to use AshJsonApi to interact with the application. I managed to configure multitenancy and run tests from IEX, and both actions and queries work correctly.

I’m trying to invoke the same operations from the REST client, but I keep encountering the error ‘(Ash.Error.Invalid.TenantRequired) Queries against the Helpdesk.Support.Ticket resource require a tenant to be specified.

I tried creating a plug to set the tenant using Ash.PlugHelpers.set_tenant and a preparation, but I still can’t make any progress.

The resource:
defmodule Helpdesk.Support.Ticket do
use Ash.Resource,
domain: Helpdesk.Support,
data_layer: AshPostgres.DataLayer,
extensions: [AshJsonApi.Resource]

alias Helpdesk.Support.Ticket

json_api do
type “ticket”
end

postgres do
table “tickets”
repo Helpdesk.Repo
end

actions do
defaults [:read, :destroy]

read :list_tickets do
  get? true
end

read :ticket_by_tenant do
  argument :tenant, :string, allow_nil?: false
  get? true
 end

create :open do
  accept [:subject]
end

update :update do
  accept [:subject]
end

update :close do
  accept []
  change set_attribute(:status, :close)
end

end

Tell Ash that this Resource must belong to a tenant

multitenancy do
# Every tenant will ha
strategy :context
end

preparations do
prepare Helpdesk.Support.TenantPreparation
end

attributes do
uuid_primary_key :id
attribute :subject, :string, allow_nil?: false, public?: true

attribute :status, :atom do
  constraints one_of: [:open, :close]
  default :open
  allow_nil? false
end

timestamps()

end
end

The domain:
defmodule Helpdesk.Support do
use Ash.Domain, extensions: [AshJsonApi.Domain]
alias Helpdesk.Support.Ticket

resources do
resource Ticket do
define :open_ticket, action: :open
define :list_tickets, action: :read
define :update_ticket, action: :update
define :destroy_ticket, action: :destroy
define :close_ticket, action: :close
define :get_ticket_by_tenant, args: [:tenant], action: :ticket_by_tenant
end
end

json_api do
routes do
# in the domain base_route acts like a scope
base_route “/tickets”, Helpdesk.Support.Ticket do
get :read
index :read
post :open
get :list_tickets
get :ticket_by_tenant, route: “get_ticket_by_tenant/:tenant”
end
end
end

end

Thanks