Absinthe.Federation.Notation.external

You're seeing just the macro external, go back to Absinthe.Federation.Notation module for more information.

Adds the @external directive to the field which marks a field as owned by another service. This allows service A to use fields from service B while also knowing at runtime the types of that field.

Example

object :user do
  extends()
  key_fields("email")
  field :email, :string do
    external()
  end
  field :reviews, list_of(:review)
end

SDL Output

# extended from the Users service
type User @key(fields: "email") @extends {
  email: String @external
  reviews: [Review]
}

This type extension in the Reviews service extends the User type from the Users service. It extends it for the purpose of adding a new field called reviews, which returns a list of Reviews.