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

Can you show how you are setting the tenant with PlugHelpers? Are you getting the tenant from a subdomain, for example?