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 { CHILIES @join__graph(name: "chilies", url: "http://example.com/chilies") FARMS @join__graph(name: "farms", url: "http://example.com/farms") } type Farm @join__type(graph: CHILIES, key: "id") @join__type(graph: FARMS, key: "id") { chiliDetails: ChiliVariety @join__field(graph: CHILIES, requires: "chiliId") chiliId: ID! @join__field(graph: FARMS) id: ID! location: String! @join__field(graph: FARMS) name: String! @join__field(graph: FARMS) } type ChiliVariety { description: String @join__field(graph: CHILIES) id: ID! @join__field(graph: CHILIES) name: String! @join__field(graph: CHILIES) spicinessScale: Int! @join__field(graph: CHILIES) } type Query { chiliVarieties: [ChiliVariety] @join__field(graph: CHILIES) chiliVariety(id: ID!): ChiliVariety @join__field(graph: CHILIES) farm(id: ID!): Farm @join__field(graph: FARMS) farms: [Farm] @join__field(graph: FARMS) }