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 { MULTI_KEY @join__graph(name: "multi-key", url: "http://example.com/multi-key") SINGLE_KEY @join__graph(name: "single-key", url: "http://example.com/single-key") } type User @join__type(graph: MULTI_KEY, key: "id") @join__type(graph: MULTI_KEY, key: "name email") @join__type(graph: SINGLE_KEY, key: "id") { comments: [Comment!]! @join__field(graph: MULTI_KEY) email: String! id: ID! name: String! posts: [Post!]! @join__field(graph: SINGLE_KEY) } type Comment { id: ID! @join__field(graph: MULTI_KEY) text: String! @join__field(graph: MULTI_KEY) } type Post { body: String! @join__field(graph: SINGLE_KEY) id: ID! @join__field(graph: SINGLE_KEY) published: Boolean! @join__field(graph: SINGLE_KEY) title: String! @join__field(graph: SINGLE_KEY) } type Query { getUser(id: ID!): User @join__field(graph: SINGLE_KEY) getUserComments(name: String!, email: String!): User @join__field(graph: MULTI_KEY) }