Hey folks,
I’m looking for some advice / patterns around decoupling the presentation layer from the data layer in Ash, specifically when exposing GraphQL APIs to third-party services.
Right now:
We have core Ash resources that model our internal domain and is stored in db
We expose GraphQL APIs (via ash_graphql) to external consumers
I’d like the gql-facing models to be independent from the core domain models, so that:
- we can evolve the internal domain more freely
- the public gql schema remains stable and intentional
I’m curious how others approach this in Ash:
Do you create separate “public/API” resources with manual actions that delegate to core resources?
Do you rely on field hiding/renaming/calculations on the same resource?
Any patterns around DTO-like resources, versioning, or bounded contexts for GraphQL?
Or cases where you’ve decided not to use ash_graphql directly for public APIs?
I’d love to hear real-world strategies, trade-offs, or examples that worked (or didn’t) for you.
Thanks!