Sangria
Scala GraphQL implementation
... has a type system, the server defines a schema that the client can query using the introspection API. This provides the client with a set of possibilities. After the client got this information and decided which parts of the data it needs, it is able to describe its data requirements in form of a GraphQL query. An important aspect of GraphQL is that it’s completely backend agnostic.