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 { ELECTRONICS @join__graph(name: "electronics", url: "http://example.com/electronics") PHYSICAL @join__graph(name: "physical", url: "http://example.com/physical") SOCIAL @join__graph(name: "social", url: "http://example.com/social") } type Furby implements FurbyType & SocialFurby { batteryType: String! @join__field(graph: SOCIAL) canDance: Boolean! @join__field(graph: SOCIAL) canSing: Boolean! @join__field(graph: SOCIAL) color: String! @join__field(graph: SOCIAL) connectivity: String @join__field(graph: SOCIAL) friends: [Furby!] @join__field(graph: SOCIAL) height: Float! @join__field(graph: SOCIAL) id: ID! @join__field(graph: SOCIAL) languages: [String!] @join__field(graph: SOCIAL) sensorTypes: [String!] @join__field(graph: SOCIAL) weight: Float! @join__field(graph: SOCIAL) } type Query { furby: Furby @join__field(graph: SOCIAL) } interface FurbyType { batteryType: String! canDance: Boolean! canSing: Boolean! color: String! connectivity: String height: Float! id: ID! languages: [String!] sensorTypes: [String!] weight: Float! } interface SocialFurby { friends: [Furby!] }