# Schema Design

**URL:** https://community.apollographql.com/c/schema-design/19.md

[Latest](https://community.apollographql.com/latest.md) · [Categories](https://community.apollographql.com/categories.md) · [Tags](https://community.apollographql.com/tags.md)

---

## [About the Schema Design category](https://community.apollographql.com/t/about-the-schema-design-category/8142)

<div class="topic-metadata">

**Author:** [@Justin\_Gonzalez](https://community.apollographql.com/u/Justin_Gonzalez)\
**Replies:** 0\
**Last updated:** [January 23, 2025, 11:19pm UTC](https://community.apollographql.com/t/about-the-schema-design-category/8142 "2025-01-23T23:19:28Z")

</div>

If you’re designing schemas, including Apollo Federation and Apollo Connectors, or working with mapping languages, directives, or entities, you’re in the right spot. Why use this category? Use this space to: Get help …

---

## [Mutation signature - what should and shouldn't be in there](https://community.apollographql.com/t/mutation-signature-what-should-and-shouldnt-be-in-there/9947)

<div class="topic-metadata">

**Author:** [@deebugger](https://community.apollographql.com/u/deebugger)\
**Replies:** 0\
**Last updated:** [July 9, 2026, 6:20am UTC](https://community.apollographql.com/t/mutation-signature-what-should-and-shouldnt-be-in-there/9947 "2026-07-09T06:20:55Z")

</div>

Hello everyone! I want to add a mutation to bulk-update several app entities at the same time. For context: we use GraphQL internally, meaning S2S and not exposed to the outside (GraphQL assumes all calls were already …

---

## [Is "Context Entity" Pattern a Best Practice for Multi-Service Relationships in Federation?](https://community.apollographql.com/t/is-context-entity-pattern-a-best-practice-for-multi-service-relationships-in-federation/9551)

<div class="topic-metadata">

**Author:** [@rmjensen](https://community.apollographql.com/u/rmjensen)\
**Replies:** 0\
**Last updated:** [November 10, 2025, 6:33pm UTC](https://community.apollographql.com/t/is-context-entity-pattern-a-best-practice-for-multi-service-relationships-in-federation/9551 "2025-11-10T18:33:22Z")

</div>

Hi Apollo community! I’m working on a federated supergraph (30 subgraphs) - it’s gotten pretty messy and is not working well. It’s more like a collection of unrelated rest endpoints. There are two problems with the grap…

---

## [Single vs. Multiple Mutations for Serial Workflow](https://community.apollographql.com/t/single-vs-multiple-mutations-for-serial-workflow/9504)

<div class="topic-metadata">

**Author:** [@tylergoelz](https://community.apollographql.com/u/tylergoelz)\
**Replies:** 3\
**Last updated:** [October 20, 2025, 7:05pm UTC](https://community.apollographql.com/t/single-vs-multiple-mutations-for-serial-workflow/9504 "2025-10-20T19:05:53Z")

</div>

My team has an end-user requirement to “activate a feature” and then “save a profile” through a single user action (form submission). As we begin the schema design process, my initial thought was to create a single acti…

---

## [Federation Types with no service backing them](https://community.apollographql.com/t/federation-types-with-no-service-backing-them/9510)

<div class="topic-metadata">

**Author:** [@edinstance](https://community.apollographql.com/u/edinstance)\
**Replies:** 0\
**Last updated:** [October 17, 2025, 3:23pm UTC](https://community.apollographql.com/t/federation-types-with-no-service-backing-them/9510 "2025-10-17T15:23:48Z")

</div>

I am creating a federated Graphql API with Apollo Router, I have a couple of types and directives that I want to share between multiple of my subgraphs, such as an authentication directive or a shared type for pagination…

---

## [Is is possible to convey extensions from a subgraph?](https://community.apollographql.com/t/is-is-possible-to-convey-extensions-from-a-subgraph/5815)

<div class="topic-metadata">

**Author:** [@donald.ball](https://community.apollographql.com/u/donald.ball)\
**Replies:** 1\
**Last updated:** [August 7, 2025, 2:33pm UTC](https://community.apollographql.com/t/is-is-possible-to-convey-extensions-from-a-subgraph/5815 "2025-08-07T14:33:03Z")

</div>

We have a gqlgen subgraph running behind the nodejs apollo federated server (@apollo/gateway@2.3.2; @apollo/server@4.4.0). We’d like to offer some semi-structured data for certain queries in the extensions portion of the…

---

## [How to use a common enum type in multiple subgraphs](https://community.apollographql.com/t/how-to-use-a-common-enum-type-in-multiple-subgraphs/9324)

<div class="topic-metadata">

**Author:** [@Ming\_Wu](https://community.apollographql.com/u/Ming_Wu)\
**Replies:** 5\
**Last updated:** [August 2, 2025, 3:19am UTC](https://community.apollographql.com/t/how-to-use-a-common-enum-type-in-multiple-subgraphs/9324 "2025-08-02T03:19:55Z")

</div>

I encountered a scenario where a common Enum type needs to be shared across multiple subgraphs. According to the documentation and my testing, the Enum type must be defined separately in each subgraph. However, this appr…

---

## [Float field returns whole number when decimal is \`.0\`](https://community.apollographql.com/t/float-field-returns-whole-number-when-decimal-is-0/9115)

<div class="topic-metadata">

**Author:** [@tylergoelz](https://community.apollographql.com/u/tylergoelz)\
**Replies:** 4\
**Last updated:** [June 19, 2025, 1:03am UTC](https://community.apollographql.com/t/float-field-returns-whole-number-when-decimal-is-0/9115 "2025-06-19T01:03:34Z")

</div>

Long question short, should I create a Decimal scalar? And if so is there a way to preserve it as an INT with trailing zeros instead of needing to convert it to a string? There is a need from my consumers to always rec…

---

## [What is the best strategy for conditionally removing a field in a Federated GraphQL setup](https://community.apollographql.com/t/what-is-the-best-strategy-for-conditionally-removing-a-field-in-a-federated-graphql-setup/9078)

<div class="topic-metadata">

**Author:** [@ya-at](https://community.apollographql.com/u/ya-at)\
**Replies:** 8\
**Last updated:** [May 22, 2025, 9:09pm UTC](https://community.apollographql.com/t/what-is-the-best-strategy-for-conditionally-removing-a-field-in-a-federated-graphql-setup/9078 "2025-05-22T21:09:31Z")

</div>

Hello everyone, I’m working with two federated subgraphs: • Subgraph A defines an entity EntityA. • Subgraph B defines an entity EntityB. In subgraph A, EntityA references EntityB through a field field1: EntityB. In …

---

## [Is ApolloGateway a must for federation?](https://community.apollographql.com/t/is-apollogateway-a-must-for-federation/9050)

<div class="topic-metadata">

**Author:** [@chungwong](https://community.apollographql.com/u/chungwong)\
**Replies:** 3\
**Last updated:** [May 16, 2025, 4:37am UTC](https://community.apollographql.com/t/is-apollogateway-a-must-for-federation/9050 "2025-05-16T04:37:15Z")

</div>

Say I have two Graphql schemas from two different programming langauges(Rust and Elixir) and the frontend is using Relay. Is it a must to use the ApolloGateway like showed here

---

## [Entity design: creating a new entity vs. adding to an existing entity](https://community.apollographql.com/t/entity-design-creating-a-new-entity-vs-adding-to-an-existing-entity/8781)

<div class="topic-metadata">

**Author:** [@deebugger](https://community.apollographql.com/u/deebugger)\
**Replies:** 3\
**Last updated:** [May 9, 2025, 8:29pm UTC](https://community.apollographql.com/t/entity-design-creating-a-new-entity-vs-adding-to-an-existing-entity/8781 "2025-05-09T20:29:07Z")

</div>

Hiya folks! We have several teams, one for each entity in our portal: Accounts, Apps and Users. Each team managed its own subgraph in the federation, with the Users and Apps teams adding data to the Account entity (like…

---

## [How to use @defer in Apollo GraphQL mutations](https://community.apollographql.com/t/how-to-use-defer-in-apollo-graphql-mutations/8938)

<div class="topic-metadata">

**Author:** [@Varun\_Bezzam](https://community.apollographql.com/u/Varun_Bezzam)\
**Replies:** 4\
**Last updated:** [April 24, 2025, 8:09pm UTC](https://community.apollographql.com/t/how-to-use-defer-in-apollo-graphql-mutations/8938 "2025-04-24T20:09:28Z")

</div>

Hi! I have a Strawberry GraphQL server that supports sending deferred responses to my Apollo client-based frontend, and queries with deferred fields are working as expected. From this relevant PR and reading the latest c…

---

## [Owner Directive - Schema Proposals](https://community.apollographql.com/t/owner-directive-schema-proposals/8541)

<div class="topic-metadata">

**Author:** [@kylekrupp](https://community.apollographql.com/u/kylekrupp)\
**Replies:** 20\
**Last updated:** [April 21, 2025, 8:31pm UTC](https://community.apollographql.com/t/owner-directive-schema-proposals/8541 "2025-04-21T20:31:41Z")

</div>

Hi all, the @owner directive seems like a very useful tool for streamlining the review process and adding the “right” people to review schema changes in a PR, rather than having a long list of gatekeepers. I’m curious i…

---

## [Recommended pattern for orchestrating multiple entities and computed fields](https://community.apollographql.com/t/recommended-pattern-for-orchestrating-multiple-entities-and-computed-fields/7132)

<div class="topic-metadata">

**Author:** [@dpchamps](https://community.apollographql.com/u/dpchamps)\
**Replies:** 1\
**Last updated:** [April 16, 2025, 11:21pm UTC](https://community.apollographql.com/t/recommended-pattern-for-orchestrating-multiple-entities-and-computed-fields/7132 "2025-04-16T23:21:54Z")

</div>

I can’t find much discussion on the internet for how this might be achieved, help would be appreciated. Let’s start with a basic example: # Data1 type Data1 @key(fields: "id") { id: ID! someData: String! } # Anoth…

---

## [Comprehensive GraphQL Specification Proposal](https://community.apollographql.com/t/comprehensive-graphql-specification-proposal/8916)

<div class="topic-metadata">

**Author:** [@Aleksandar\_Susnjar](https://community.apollographql.com/u/Aleksandar_Susnjar)\
**Replies:** 3\
**Last updated:** [April 16, 2025, 2:26pm UTC](https://community.apollographql.com/t/comprehensive-graphql-specification-proposal/8916 "2025-04-16T14:26:27Z")

</div>

Note: this isn’t quite a Schema Design post, but I couldn’t find a more suitable category. I’ve put some more time last weekend to work on a comprehensive GraphQL specification proposal. It is now almost ready to be s…

---

## [Input argument validation](https://community.apollographql.com/t/input-argument-validation/8672)

<div class="topic-metadata">

**Author:** [@tylergoelz](https://community.apollographql.com/u/tylergoelz)\
**Replies:** 22\
**Last updated:** [April 8, 2025, 3:44pm UTC](https://community.apollographql.com/t/input-argument-validation/8672 "2025-04-08T15:44:37Z")

</div>

Hows is everyone handling input argument validation? I’m looking at a start/end date validation. I created a DateTimestamp scalar that will ensure they’re valid dates but what is a good approach to ensuring start date is…

---

## [Best Practices for Designing Operations for Multiple Roles (Customer/Employee)](https://community.apollographql.com/t/best-practices-for-designing-operations-for-multiple-roles-customer-employee/8841)

<div class="topic-metadata">

**Author:** [@michaeldouglasdev](https://community.apollographql.com/u/michaeldouglasdev)\
**Replies:** 1\
**Last updated:** [April 2, 2025, 9:13pm UTC](https://community.apollographql.com/t/best-practices-for-designing-operations-for-multiple-roles-customer-employee/8841 "2025-04-02T21:13:41Z")

</div>

Hi folks! :waving\_hand: Let’s imagine an application for scheduling service appointments. A Customer can use the mobile app to create an appointment, but the same appointment can also be scheduled by an Employee (or Re…

---

## [Schema progression over time](https://community.apollographql.com/t/schema-progression-over-time/8808)

<div class="topic-metadata">

**Author:** [@jleangstartup](https://community.apollographql.com/u/jleangstartup)\
**Replies:** 1\
**Last updated:** [March 26, 2025, 10:46pm UTC](https://community.apollographql.com/t/schema-progression-over-time/8808 "2025-03-26T22:46:12Z")

</div>

I have a question about managing schema progression over time, especially working with different versions of native mobile apps. Say an initial implementation of apollo graphql might start off with a schema that has a t…

---

## [Can an interface implement another interface?](https://community.apollographql.com/t/can-an-interface-implement-another-interface/8798)

<div class="topic-metadata">

**Author:** [@jleangstartup](https://community.apollographql.com/u/jleangstartup)\
**Replies:** 1\
**Last updated:** [March 26, 2025, 6:54pm UTC](https://community.apollographql.com/t/can-an-interface-implement-another-interface/8798 "2025-03-26T18:54:16Z")

</div>

I’ve had a look around and cant find much information on this. Can an interface implement another interface? My example data model is that there are ‘payees’, and these payees can considered ‘billers’ or ‘transfers’, a…

---

## [How would you do \`@shareable\` + \`@requires\`?](https://community.apollographql.com/t/how-would-you-do-shareable-requires/8794)

<div class="topic-metadata">

**Author:** [@markl](https://community.apollographql.com/u/markl)\
**Replies:** 0\
**Last updated:** [March 25, 2025, 5:32pm UTC](https://community.apollographql.com/t/how-would-you-do-shareable-requires/8794 "2025-03-25T17:32:01Z")

</div>

Hi! We have a use case that super-simplified wants to look like the following Schema A type ResponseConfirmation @shareable { """A string to display in the UI thanking the user for their response.""" confirmation: …

---

## [Has the definition of value type changed between federation 1 and federation 2?](https://community.apollographql.com/t/has-the-definition-of-value-type-changed-between-federation-1-and-federation-2/8080)

<div class="topic-metadata">

**Author:** [@ki-ri](https://community.apollographql.com/u/ki-ri)\
**Replies:** 2\
**Last updated:** [March 20, 2025, 12:58pm UTC](https://community.apollographql.com/t/has-the-definition-of-value-type-changed-between-federation-1-and-federation-2/8080 "2025-03-20T12:58:14Z")

</div>

Hi! I noticed that the definition of Value Type has changed between federation 1 and federation 2, am I correct? for federation 1: https://www.apollographql.com/docs/federation/v1/value-types for federation 2: Value Ty…

---

## [Applying @policy to inputs](https://community.apollographql.com/t/applying-policy-to-inputs/8655)

<div class="topic-metadata">

**Author:** [@Jonathan\_Wondrusch](https://community.apollographql.com/u/Jonathan_Wondrusch)\
**Replies:** 1\
**Last updated:** [March 13, 2025, 10:08pm UTC](https://community.apollographql.com/t/applying-policy-to-inputs/8655 "2025-03-13T22:08:07Z")

</div>

The definition @policy doesn’t currently include input types or fields. There are some security scenarios where our team would prefer @policy pruning of inputs to be available. Is this something that is possible for fut…

---

## [Router does redundant call when a Subgraph requires a field](https://community.apollographql.com/t/router-does-redundant-call-when-a-subgraph-requires-a-field/8690)

<div class="topic-metadata">

**Author:** [@awdng](https://community.apollographql.com/u/awdng)\
**Replies:** 2\
**Last updated:** [March 12, 2025, 6:27pm UTC](https://community.apollographql.com/t/router-does-redundant-call-when-a-subgraph-requires-a-field/8690 "2025-03-12T18:27:24Z")

</div>

You have a query where: The initial subgraph already resolves a @shareable field and returns it. A second subgraph requires the same @shareable field using @requires. Instead of passing the existing value which was alr…

---

## [Handling Field-Level Permissions in API Responses](https://community.apollographql.com/t/handling-field-level-permissions-in-api-responses/7725)

<div class="topic-metadata">

**Author:** [@Hentuloo](https://community.apollographql.com/u/Hentuloo)\
**Replies:** 1\
**Last updated:** [March 5, 2025, 3:18am UTC](https://community.apollographql.com/t/handling-field-level-permissions-in-api-responses/7725 "2025-03-05T03:18:05Z")

</div>

I would like the API user to receive responses from the fields they have access to, and an error response for the rest. In the case of a directive, the entire query will return an error, even if the user has access to so…

---

## [Namespacing queries and mutations](https://community.apollographql.com/t/namespacing-queries-and-mutations/8372)

<div class="topic-metadata">

**Author:** [@coman](https://community.apollographql.com/u/coman)\
**Replies:** 4\
**Last updated:** [February 19, 2025, 7:47pm UTC](https://community.apollographql.com/t/namespacing-queries-and-mutations/8372 "2025-02-19T19:47:01Z")

</div>

I haven’t seen many articles or tutorials, so I am curious how you handle large schemas and help your consumers find the queries and/or mutations they need. There is one solution, which is to have a consistent naming pa…

---

## [Is it worth defining a custom scalar even if it doesn't serialize or parse values?](https://community.apollographql.com/t/is-it-worth-defining-a-custom-scalar-even-if-it-doesnt-serialize-or-parse-values/8562)

<div class="topic-metadata">

**Author:** [@tylergoelz](https://community.apollographql.com/u/tylergoelz)\
**Replies:** 2\
**Last updated:** [February 19, 2025, 5:08pm UTC](https://community.apollographql.com/t/is-it-worth-defining-a-custom-scalar-even-if-it-doesnt-serialize-or-parse-values/8562 "2025-02-19T17:08:21Z")

</div>

I’m currently working on exposing display ready fields that include localization, eventually to split all localized fields and logic out into a dedicated subgraph. At it’s core, the localized fields are simple strings, …

---

## [Graphql return None when no values are found](https://community.apollographql.com/t/graphql-return-none-when-no-values-are-found/5796)

<div class="topic-metadata">

**Author:** [@hja24](https://community.apollographql.com/u/hja24)\
**Replies:** 1\
**Last updated:** [February 7, 2025, 1:37am UTC](https://community.apollographql.com/t/graphql-return-none-when-no-values-are-found/5796 "2025-02-07T01:37:23Z")

</div>

I have the following query: """ query Odds($id: ID!) { odds(id: $id) { oddsMarkets { oddsOptions { ... on OddsToWin { …

---

## [Getting error feature https://specs.apollo.dev/connect/v0.1 is for: EXECUTION but is unsupported](https://community.apollographql.com/t/getting-error-feature-https-specs-apollo-dev-connect-v0-1-is-for-execution-but-is-unsupported/7905)

<div class="topic-metadata">

**Author:** [@vishalgupta82](https://community.apollographql.com/u/vishalgupta82)\
**Replies:** 1\
**Last updated:** [January 31, 2025, 4:52pm UTC](https://community.apollographql.com/t/getting-error-feature-https-specs-apollo-dev-connect-v0-1-is-for-execution-but-is-unsupported/7905 "2025-01-31T16:52:16Z")

</div>

I am trying apollo connector (apollographql.com/tutorials/connectors-intro-rest/03-source) and getting this error: ERROR: could not create router: couldn’t build Query Planner Service: couldn’t instantiate query planner…

---

## [Namespacing and nested data-fetchers with federation-jvm](https://community.apollographql.com/t/namespacing-and-nested-data-fetchers-with-federation-jvm/6120)

<div class="topic-metadata">

**Author:** [@Dunc\_T](https://community.apollographql.com/u/Dunc_T)\
**Replies:** 0\
**Last updated:** [April 11, 2023, 12:10am UTC](https://community.apollographql.com/t/namespacing-and-nested-data-fetchers-with-federation-jvm/6120 "2023-04-11T00:10:45Z")

</div>

Hi, So we’re attempting to resolve name-spaced queries with federation-jvm and can’t figure out how to structure the code to do this. Below is a simplified version of the schema we are using. type ProductQueries { …

---

## [Design pattern for router](https://community.apollographql.com/t/design-pattern-for-router/7813)

<div class="topic-metadata">

**Author:** [@Mayank](https://community.apollographql.com/u/Mayank)\
**Replies:** 0\
**Last updated:** [September 10, 2024, 5:06pm UTC](https://community.apollographql.com/t/design-pattern-for-router/7813 "2024-09-10T17:06:35Z")

</div>

I have 5UI interfaces and all are accessing same backend but 1 UI is dedicated for operations staff, 1 UI is dedicated for end user and 2 UIs have mix of end user and operation staff.1 UI is for commercial end user. To m…

[Next page](https://community.apollographql.com/c/schema-design/19.md?page=1)
