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 { ACTIVITIES @join__graph(name: "activities", url: "http://example.com/activities") EPISODES @join__graph(name: "episodes", url: "http://example.com/episodes") TELETUBBYREPOSITORY @join__graph(name: "teletubbyRepository", url: "http://example.com/teletubbyRepository") } type Activity { description: String! @join__field(graph: ACTIVITIES) name: String! @join__field(graph: ACTIVITIES) participatingTeletubby: Teletubby! @join__field(graph: ACTIVITIES) } type Teletubby @join__type(graph: ACTIVITIES, key: "name") @join__type(graph: EPISODES, key: "name") @join__type(graph: TELETUBBYREPOSITORY, key: "name") { activities: [Activity] @join__field(graph: ACTIVITIES) color: String! @join__field(graph: TELETUBBYREPOSITORY) episodesFeatured: [Episode] @join__field(graph: EPISODES) favoriteToy: FavoriteToy @join__field(graph: ACTIVITIES) @join__field(graph: EPISODES) @join__field(graph: TELETUBBYREPOSITORY) mood: Mood @join__field(graph: TELETUBBYREPOSITORY) name: String! } type Episode { duration: Int! @join__field(graph: EPISODES) featuredTeletubby: Teletubby! @join__field(graph: EPISODES) featuredToys: [FavoriteToy!] @join__field(graph: EPISODES) title: String! @join__field(graph: EPISODES) } type Query { getActivity(name: String!): Activity @join__field(graph: ACTIVITIES) getEpisode(title: String!): Episode @join__field(graph: EPISODES) getTeletubby(name: String!): Teletubby @join__field(graph: TELETUBBYREPOSITORY) } enum FavoriteToy { PLUSHTOY TOBOGGAN SCOOTER BAG HAT BALL } enum Mood { HAPPY SAD }