directive @core(feature: String!) repeatable on SCHEMA directive @join__owner(graph: join__Graph!) on OBJECT directive @join__type( graph: join__Graph! key: String! resolvable: Boolean = true ) repeatable on OBJECT | INTERFACE directive @join__field( graph: join__Graph requires: String provides: String ) on FIELD_DEFINITION directive @join__graph(name: String!, url: String!) on ENUM_VALUE enum join__Graph { PIZZA @join__graph(name: "pizza", url: "http://example.com/pizza") SUSHI @join__graph(name: "sushi", url: "http://example.com/sushi") } type Pizza { id: ID! @join__field(graph: PIZZA) nameEn: String @join__field(graph: PIZZA) nameIt: String! @join__field(graph: PIZZA) toppings: [Topping!]! @join__field(graph: PIZZA) } type Onion { variety: String @join__field(graph: PIZZA) } type Cheese { quantity: Int! @join__field(graph: PIZZA) type: String! @join__field(graph: PIZZA) } type Pineapple { isAnanas: Boolean! @join__field(graph: PIZZA) } type Sushi { id: ID! @join__field(graph: SUSHI) topping: Topping @join__field(graph: SUSHI) } type Salmon { id: ID! @join__field(graph: SUSHI) raw: Boolean @join__field(graph: SUSHI) } type Omelet { isRectangular: Boolean @join__field(graph: SUSHI) } type Query { pizza(id: ID!): Pizza @join__field(graph: PIZZA) } union Topping = Onion | Cheese | Pineapple | Salmon | Omelet