Schema Introspection
You can introspect your schema using __schema, __type, and __typename,
as described in the specification.
Examples
Seeing the names of the types in the schema:
"""
{
  __schema {
    types {
      name
    }
  }
}
""" |> Absinthe.run(MyAppWeb.Schema)
{:ok,
  %{data: %{
    "__schema" => %{
      "types" => [
        %{"name" => "Boolean"},
        %{"name" => "Float"},
        %{"name" => "ID"},
        %{"name" => "Int"},
        %{"name" => "String"},
        ...
      ]
    }
  }}
}
Getting the name of the queried type:
"""
{
  profile {
    name
    __typename
  }
}
""" |> Absinthe.run(MyAppWeb.Schema)
{:ok,
  %{data: %{
    "profile" => %{
      "name" => "Joe",
      "__typename" => "Person"
    }
  }}
}
Getting the name of the fields for a named type:
"""
{
  __type(name: "Person") {
    fields {
      name
      type {
        kind
        name
      }
    }
  }
}
""" |> Absinthe.run(MyAppWeb.Schema)
{:ok,
  %{data: %{
    "__type" => %{
      "fields" => [
        %{
          "name" => "name",
          "type" => %{"kind" => "SCALAR", "name" => "String"}
        },
        %{
          "name" => "age",
          "type" => %{"kind" => "SCALAR", "name" => "Int"}
        },
      ]
    }
  }}
}
Note that you may have to nest several depths of type/ofType, as
type information includes any wrapping layers of List
and/or NonNull.
Using GraphiQL
The GraphiQL project is "an in-browser IDE for exploring GraphQL."
Absinthe provides GraphiQL via a plug in absinthe_plug. See the Plug and Phoenix Guide
for how to install that library. Once installed, usage is simple as:
plug Absinthe.Plug.GraphiQL, schema: MyAppWeb.Schema
If you want to use it at a particular path (in this case graphiql in your Phoenix
router, simply do:
# filename: router.ex
forward "/graphiql", Absinthe.Plug.GraphiQL, schema: MyAppWeb.Schema
This can be trivially reserved to just the :dev elixir environment by doing:
# filename: router.ex
if Mix.env == :dev do
  forward "/graphiql", Absinthe.Plug.GraphiQL, schema: MyAppWeb.Schema
end
If you'd prefer to use a desktop application, we recommend using the pre-built Electron-based wrapper application, GraphiQL.app.
GraphQL Hub
GraphQL Hub is an interesting website that you can use to introspect a number of public GraphQL servers, using GraphiQL in the browser and providing useful examples.