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 { FOODSEARCH @join__graph(name: "foodSearch", url: "http://example.com/foodSearch") PRODUCTSEARCH @join__graph(name: "productSearch", url: "http://example.com/productSearch") USERSEARCH @join__graph(name: "userSearch", url: "http://example.com/userSearch") } type Query { searchFood(filterName: FilterName, filterValue: String): [String!] @join__field(graph: FOODSEARCH) searchProduct(filterName: FilterName, filterValue: String): [String!] @join__field(graph: PRODUCTSEARCH) searchUser(filterName: FilterName, filterValue: String): [String!] @join__field(graph: USERSEARCH) } enum FilterName { NAME CREATED_AT }