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 { PRODUCT @join__graph(name: "product", url: "http://example.com/product") USER @join__graph(name: "user", url: "http://example.com/user") } type Product implements Node { description: String @join__field(graph: PRODUCT) id: ID! @join__field(graph: PRODUCT) name: String! @join__field(graph: PRODUCT) price: Float! @join__field(graph: PRODUCT) } type User implements Timestamped { createdAt: String! @join__field(graph: USER) email: String! @join__field(graph: USER) id: ID! @join__field(graph: USER) updatedAt: String! @join__field(graph: USER) username: String! @join__field(graph: USER) } type Query { user(id: ID!): User @join__field(graph: USER) } interface Node { id: ID! } interface Timestamped implements Node { createdAt: String! id: ID! updatedAt: String! }