GraphQL, at the end of the day, responds with your defined types. You just need to put that data into a type. Whether this is a specific type for these different queries, or fields for that data on existing types, it’s up to you but that’s all it boils down to. GraphQL does require more effort up front in terms of defining your types and what all queries will return, which makes it more rigid, but the idea is that on other side of that lies some cool features, like introspection and type checking. If it doesn’t seem to make logical sense to put that sort of “ad hoc” data structures into a GraphQL type, then it’s not illegal to have non-GraphQL endpoints if you need other data sources.