What warning "does not have an input type defined" means for embedded resources?

I have this resource in my code:

defmodule Core.Marketplace.Payments.Product.Types.Test do
  @moduledoc false

  use Ash.Resource,
    data_layer: :embedded,
    extensions: [AshGraphql.Resource]

  attributes do
    timestamps(public?: true)
  end

  graphql do
    type :payments_product_test
  end
end

And I use it in this type:

defmodule Core.Marketplace.Payments.Product.Types.Metadata do
  @moduledoc false

  alias Core.Marketplace.Payments.Product.Types

  use AshGraphql.Type

  use Ash.Type.NewType,
    subtype_of: :union,
    constraints: [
      types: [
        ...,
        test: [type: Types.Test, tag: :type, tag_value: :test]
      ]
    ]

  @impl true
  def graphql_type(_), do: :payments_product_metadata
end

When I compile this, I get this warning:

warning: Embedded type Core.Marketplace.Payments.Product.Types.Test does not have an input type defined, but is accepted as input in at least one location.
  (ash_graphql 1.8.3) lib/resource/resource.ex:4835: AshGraphql.Resource.do_field_type/5
  (ash_graphql 1.8.3) lib/resource/resource.ex:3715: anonymous fn/4 in AshGraphql.Resource.union_type_definitions/6
  (elixir 1.18.4) lib/enum.ex:1714: Enum."-map/2-lists^map/1-1-"/2
  (elixir 1.18.4) lib/enum.ex:1714: Enum."-map/2-lists^map/1-1-"/2
  (ash_graphql 1.8.3) lib/resource/resource.ex:3707: AshGraphql.Resource.union_type_definitions/6
  (elixir 1.18.4) lib/enum.ex:4442: Enum.flat_map_list/2

What does this means?

Its telling you to add an input type

 @impl true
  def graphql_type(_), do: :payments_product_metadata
  def graphql_type(_), do: :payments_product_metadata_input

But is not the Metadata type that doesn’t have an input, is the Test resource.

I don’t see a way to set the input type in the AshGraphql.Resource DSL.

Also, from the code above, I guess you meant:

  @impl true
  def graphql_type(_), do: :payments_product_metadata
  def graphql_input_type(_), do: :payments_product_metadata_input

Oh, right :thinking: interesting. Can you create a reproduction and open an issue? It may be a spurious warning.