V25 multitenency

Hello, I am experimenting with adding multitenency to my application, based on the new features in v25. For me the use case is more about data separation (e.g. dropping and reloading a specific separated graph via drop namespace) than having user based separation or permissions.

On the DQL side it is mostly working well, apart from a json parsing issue in the v2 api (Lexing error in v2 API · Issue #265 · hypermodeinc/dgo · GitHub). I can create new namespaces via Client.SetSchema(ctx, namespace, schema), and interact with them via Client.RunDQL(ctx, namespace, query).

On the graphQL side the documentation is less clear. E.g. when tring to load a corresponding GraphQL schema e.g.

mutation($schema: String!){updateGQLSchema(input:{set:{schema: $schema}}){gqlSchema{schema generatedSchema}}}

There does not seem to be a way to apply this to a specific namespace. Do I have to enable ACL/auth/JWTs etc to log into a specific namespace, before my graphQL operations can be directed to a that namespace? Or is there an equivalent GraphQL syntax where i can direct queries an mutations to a specified namespace via a parameter?

Probably related, I also cannot see a way in play.dgraph.io or ratel to view different namespaces, is this also bound to users/auth?

It would be great if the two apis could be brought in line with each other here!

Thanks, and let me know if I can help with additional info or testing.

Part of the v25 namespace improvements is to decouple the requirement for ACL (of course it can still be used). But if you’re not using ACL (maybe you’re controlling a18n in a rproxy or something), how would you feel about the namespace being set in an HTTP header? Seems in keeping with other GraphQL options.

This sounds perfect, i don’t need ACL for my usecase. A header would be ideal, happy to test branches!