Skip to content
Draft
Changes from 11 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 67 additions & 67 deletions docs/source/schema-design/federated-schemas/composition.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,98 +7,98 @@ redirectFrom:
- /federation/federated-schemas/composition
---

In Apollo Federation, _composition_ is the process of combining a set of subgraph schemas into a supergraph schema:
In Apollo Federation, is the process of combining a set of subgraph schemas into a supergraph schema:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The sentence is grammatically incorrect and unclear. It should state what schema composition is.

Suggested change
In Apollo Federation, is the process of combining a set of subgraph schemas into a supergraph schema:
Schema composition is the process of combining a set of subgraph schemas into a supergraph schema.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The sentence is grammatically incomplete and unclear. It should state what 'is the process' refers to. Rephrased to clarify and improve readability.

Suggested change
In Apollo Federation, is the process of combining a set of subgraph schemas into a supergraph schema:
Schema composition is the process of combining a set of subgraph schemas into a supergraph schema in Apollo Federation:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The sentence is grammatically incorrect and missing a subject. Rephrased for clarity and proper sentence structure.

Suggested change
In Apollo Federation, is the process of combining a set of subgraph schemas into a supergraph schema:
Schema composition is the process of combining a set of subgraph schemas into a supergraph schema in Apollo Federation.


```mermaid
graph TB;
serviceA[Subgraph<br/>schema<br/>A];
serviceB[Subgraph<br/>schema<br/>B];
serviceC[Subgraph<br/>schema<br/>C];
composition[["🛠<br/>Composition "]];
supergraph{{"Supergraph schema<br/>(A + B + C + routing machinery)"}};
serviceA & serviceB & serviceC --> composition;
composition -- "(Composition succeeds)" --> supergraph;
class composition tertiary;
```
```mermaid

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper code block rendering and consistency.

Suggested change
```mermaid
```mermaid

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
```mermaid
```mermaid

graph TB;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper code block rendering and consistency.

Suggested change
graph TB;
graph TB;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
graph TB;
graph TB;

serviceA[Subgraph<br/>schema<br/>A];

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
serviceA[Subgraph<br/>schema<br/>A];
serviceA[Subgraph<br/>schema<br/>A];

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
serviceA[Subgraph<br/>schema<br/>A];
serviceA[Subgraph<br/>schema<br/>A];

serviceB[Subgraph<br/>schema<br/>B];

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
serviceB[Subgraph<br/>schema<br/>B];
serviceB[Subgraph<br/>schema<br/>B];

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
serviceB[Subgraph<br/>schema<br/>B];
serviceB[Subgraph<br/>schema<br/>B];

serviceC[Subgraph<br/>schema<br/>C];

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
serviceC[Subgraph<br/>schema<br/>C];
serviceC[Subgraph<br/>schema<br/>C];

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
serviceC[Subgraph<br/>schema<br/>C];
serviceC[Subgraph<br/>schema<br/>C];

composition[["🛠<br/>Composition "]];

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
composition[["🛠<br/>Composition "]];
composition[["🛠<br/>Composition "]];

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
composition[["🛠<br/>Composition "]];
composition[["🛠<br/>Composition "]];

supergraph{{"Supergraph schema<br/>(A + B + C + routing machinery)"}};

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
supergraph{{"Supergraph schema<br/>(A + B + C + routing machinery)"}};
supergraph{{"Supergraph schema<br/>(A + B + C + routing machinery)"}};

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
supergraph{{"Supergraph schema<br/>(A + B + C + routing machinery)"}};
supergraph{{"Supergraph schema<br/>(A + B + C + routing machinery)"}};

serviceA & serviceB & serviceC --> composition;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
serviceA & serviceB & serviceC --> composition;
serviceA & serviceB & serviceC --> composition;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
serviceA & serviceB & serviceC --> composition;
serviceA & serviceB & serviceC --> composition;

composition -- "(Composition succeeds)" --> supergraph;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
composition -- "(Composition succeeds)" --> supergraph;
composition -- "(Composition succeeds)" --> supergraph;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
composition -- "(Composition succeeds)" --> supergraph;
composition -- "(Composition succeeds)" --> supergraph;

class composition tertiary;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
class composition tertiary;
class composition tertiary;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
class composition tertiary;
class composition tertiary;

```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper code block rendering and consistency.

Suggested change
```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
```


The supergraph schema includes all of the type and field definitions from your subgraph schemas. It also includes metadata that enables your router to intelligently route incoming GraphQL operations across all of your different subgraphs.
The supergraph schema includes all of the type and field definitions from your subgraph schemas. It also includes metadata that enables your router to intelligently route incoming GraphQL operations across all of your different subgraphs.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove 'of the' for conciseness and improved readability. 'All type and field definitions' is more direct and idiomatic.

Suggested change
The supergraph schema includes all of the type and field definitions from your subgraph schemas. It also includes metadata that enables your router to intelligently route incoming GraphQL operations across all of your different subgraphs.
The supergraph schema includes all type and field definitions from your subgraph schemas. It also includes metadata that enables your router to intelligently route incoming GraphQL operations across all of your different subgraphs.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove unnecessary 'of the' for conciseness.

Suggested change
The supergraph schema includes all of the type and field definitions from your subgraph schemas. It also includes metadata that enables your router to intelligently route incoming GraphQL operations across all of your different subgraphs.
The supergraph schema includes all type and field definitions from your subgraph schemas. It also includes metadata that enables your router to intelligently route incoming GraphQL operations across all of your different subgraphs.


## Supported methods
## Supported methods

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper heading rendering and consistency.

Suggested change
## Supported methods
## Supported methods

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the heading is correctly rendered.

Suggested change
## Supported methods
## Supported methods


You can perform schema composition with any of the following methods:
You can perform schema composition with any of the following methods:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces for consistency.

Suggested change
You can perform schema composition with any of the following methods:
You can perform schema composition with any of the following methods:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the content is correctly rendered.

Suggested change
You can perform schema composition with any of the following methods:
You can perform schema composition with any of the following methods:


### Automatically with GraphOS
### Automatically with GraphOS

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper heading rendering and consistency.

Suggested change
### Automatically with GraphOS
### Automatically with GraphOS

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the heading is correctly rendered.

Suggested change
### Automatically with GraphOS
### Automatically with GraphOS


Apollo GraphOS performs composition automatically whenever you publish a subgraph schema.
This enables your running router to dynamically fetch an updated supergraph schema from Apollo as soon as it's available:
Apollo GraphOS performs composition automatically whenever you publish a subgraph schema.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces for consistency.

Suggested change
Apollo GraphOS performs composition automatically whenever you publish a subgraph schema.
Apollo GraphOS performs composition automatically whenever you publish a subgraph schema.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the content is correctly rendered.

Suggested change
Apollo GraphOS performs composition automatically whenever you publish a subgraph schema.
Apollo GraphOS performs composition automatically whenever you publish a subgraph schema.

This enables your running router to dynamically fetch an updated supergraph schema from Apollo as soon as it's available:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces for consistency.

Suggested change
This enables your running router to dynamically fetch an updated supergraph schema from Apollo as soon as it's available:
This enables your running router to dynamically fetch an updated supergraph schema from Apollo as soon as it's available:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the content is correctly rendered.

Suggested change
This enables your running router to dynamically fetch an updated supergraph schema from Apollo as soon as it's available:
This enables your running router to dynamically fetch an updated supergraph schema from Apollo as soon as it's available:


```mermaid
graph LR;
subgraph "Your infrastructure"
serviceA[Products<br/>subgraph];
serviceB[Reviews<br/>subgraph];
gateway([Router]);
end
subgraph "GraphOS"
registry{{Schema Registry}};
uplink{{Apollo<br/>Uplink}}
end
serviceA & serviceB -->|Publishes schema| registry;
registry -->|Updates config| uplink;
gateway -->|Polls for config changes| uplink;
class registry secondary;
class uplink secondary;
```
```mermaid

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper code block rendering and consistency.

Suggested change
```mermaid
```mermaid

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
```mermaid
```mermaid

graph LR;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper code block rendering and consistency.

Suggested change
graph LR;
graph LR;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
graph LR;
graph LR;

subgraph "Your infrastructure"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
subgraph "Your infrastructure"
subgraph "Your infrastructure"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
subgraph "Your infrastructure"
subgraph "Your infrastructure"

serviceA[Products<br/>subgraph];

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
serviceA[Products<br/>subgraph];
serviceA[Products<br/>subgraph];

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
serviceA[Products<br/>subgraph];
serviceA[Products<br/>subgraph];

serviceB[Reviews<br/>subgraph];

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
serviceB[Reviews<br/>subgraph];
serviceB[Reviews<br/>subgraph];

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
serviceB[Reviews<br/>subgraph];
serviceB[Reviews<br/>subgraph];

gateway([Router]);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
gateway([Router]);
gateway([Router]);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
gateway([Router]);
gateway([Router]);

end

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
end
end

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
end
end

subgraph "GraphOS"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
subgraph "GraphOS"
subgraph "GraphOS"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
subgraph "GraphOS"
subgraph "GraphOS"

registry{{Schema Registry}};

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
registry{{Schema Registry}};
registry{{Schema Registry}};

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
registry{{Schema Registry}};
registry{{Schema Registry}};

uplink{{Apollo<br/>Uplink}}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
uplink{{Apollo<br/>Uplink}}
uplink{{Apollo<br/>Uplink}}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
uplink{{Apollo<br/>Uplink}}
uplink{{Apollo<br/>Uplink}}

end

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
end
end

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
end
end

serviceA & serviceB -->|Publishes schema| registry;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
serviceA & serviceB -->|Publishes schema| registry;
serviceA & serviceB -->|Publishes schema| registry;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
serviceA & serviceB -->|Publishes schema| registry;
serviceA & serviceB -->|Publishes schema| registry;

registry -->|Updates config| uplink;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
registry -->|Updates config| uplink;
registry -->|Updates config| uplink;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
registry -->|Updates config| uplink;
registry -->|Updates config| uplink;

gateway -->|Polls for config changes| uplink;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
gateway -->|Polls for config changes| uplink;
gateway -->|Polls for config changes| uplink;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
gateway -->|Polls for config changes| uplink;
gateway -->|Polls for config changes| uplink;

class registry secondary;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
class registry secondary;
class registry secondary;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
class registry secondary;
class registry secondary;

class uplink secondary;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation for consistency within the mermaid diagram. All elements in the diagram should have consistent indentation.

Suggested change
class uplink secondary;
class uplink secondary;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
class uplink secondary;
class uplink secondary;

```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper code block rendering and consistency.

Suggested change
```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
```


<Note>
<Note>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper rendering of the HTML tag and consistency.

Suggested change
<Note>
<Note>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the admonition is correctly rendered.

Suggested change
<Note>
<Note>


GraphOS also provides a [schema linter](/graphos/platform/schema-management/linting) with [composition specific rules](/graphos/platform/schema-management/linting/rules#composition-rules) to help you follow best practices. You can set up schema checks for your graph in GraphOS Studio or perform one-off linting with the Rover CLI. Check out the [schema linting](/graphos/platform/schema-management/linting) docs to learn more.
GraphOS also provides a [schema linter](/graphos/platform/schema-management/linting) with [composition specific rules](/graphos/platform/schema-management/linting/rules#composition-rules) to help you follow best practices. You can set up schema checks for your graph in GraphOS Studio or perform one-off linting with the Rover CLI. Check out the [schema linting](/graphos/platform/schema-management/linting) docs to learn more.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces for consistency within the note.

Suggested change
GraphOS also provides a [schema linter](/graphos/platform/schema-management/linting) with [composition specific rules](/graphos/platform/schema-management/linting/rules#composition-rules) to help you follow best practices. You can set up schema checks for your graph in GraphOS Studio or perform one-off linting with the Rover CLI. Check out the [schema linting](/graphos/platform/schema-management/linting) docs to learn more.
GraphOS also provides a [schema linter](/graphos/platform/schema-management/linting) with [composition specific rules](/graphos/platform/schema-management/linting/rules#composition-rules) to help you follow best practices. You can set up schema checks for your graph in GraphOS Studio or perform one-off linting with the Rover CLI. Check out the [schema linting](/graphos/platform/schema-management/linting) docs to learn more.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the content is correctly rendered.

Suggested change
GraphOS also provides a [schema linter](/graphos/platform/schema-management/linting) with [composition specific rules](/graphos/platform/schema-management/linting/rules#composition-rules) to help you follow best practices. You can set up schema checks for your graph in GraphOS Studio or perform one-off linting with the Rover CLI. Check out the [schema linting](/graphos/platform/schema-management/linting) docs to learn more.
GraphOS also provides a [schema linter](/graphos/platform/schema-management/linting) with [composition specific rules](/graphos/platform/schema-management/linting/rules#composition-rules) to help you follow best practices. You can set up schema checks for your graph in GraphOS Studio or perform one-off linting with the Rover CLI. Check out the [schema linting](/graphos/platform/schema-management/linting) docs to learn more.


</Note>
</Note>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper rendering of the HTML tag and consistency.

Suggested change
</Note>
</Note>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the admonition is correctly rendered.

Suggested change
</Note>
</Note>


### Manually with the Rover CLI
### Manually with the Rover CLI

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper heading rendering and consistency.

Suggested change
### Manually with the Rover CLI
### Manually with the Rover CLI

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the heading is correctly rendered.

Suggested change
### Manually with the Rover CLI
### Manually with the Rover CLI


The [Rover CLI](https://www.apollographql.com/docs/rover/) supports a `supergraph compose` command that you can use to compose a supergraph schema from a collection of subgraph schemas:
The [Rover CLI](https://www.apollographql.com/docs/rover/) supports a `supergraph compose` command that you can use to compose a supergraph schema from a collection of subgraph schemas:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use backticks for inline code (supergraph compose) instead of <code> tags. This is the standard Markdown approach for code snippets and aligns with the style guide's preference for code font. This improves consistency.

Suggested change
The [Rover CLI](https://www.apollographql.com/docs/rover/) supports a `supergraph compose` command that you can use to compose a supergraph schema from a collection of subgraph schemas:
The [Rover CLI](https://www.apollographql.com/docs/rover/) supports a `supergraph compose` command that you can use to compose a supergraph schema from a collection of subgraph schemas:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use backticks for inline code supergraph compose instead of <code> tags for consistency with Markdown.

Suggested change
The [Rover CLI](https://www.apollographql.com/docs/rover/) supports a `supergraph compose` command that you can use to compose a supergraph schema from a collection of subgraph schemas:
The [Rover CLI](https://www.apollographql.com/docs/rover/) supports a `supergraph compose` command that you can use to compose a supergraph schema from a collection of subgraph schemas:


```bash showLineNumbers=false
rover supergraph compose --config ./supergraph-config.yaml
```
```bash showLineNumbers=false

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper code block rendering and consistency.

Suggested change
```bash showLineNumbers=false
```bash showLineNumbers=false

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
```bash showLineNumbers=false
```bash showLineNumbers=false

rover supergraph compose --config ./supergraph-config.yaml

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces for consistency within the code block.

Suggested change
rover supergraph compose --config ./supergraph-config.yaml
rover supergraph compose --config ./supergraph-config.yaml

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
rover supergraph compose --config ./supergraph-config.yaml
rover supergraph compose --config ./supergraph-config.yaml

```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper code block rendering and consistency.

Suggested change
```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
```


To learn how to install Rover and use this command, see the [Rover docs](/rover/).
To learn how to install Rover and use this command, see the [Rover docs](/rover/).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces for consistency.

Suggested change
To learn how to install Rover and use this command, see the [Rover docs](/rover/).
To learn how to install Rover and use this command, see the [Rover docs](/rover/).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the content is correctly rendered.

Suggested change
To learn how to install Rover and use this command, see the [Rover docs](/rover/).
To learn how to install Rover and use this command, see the [Rover docs](/rover/).


## Breaking composition
## Breaking composition

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper heading rendering and consistency.

Suggested change
## Breaking composition
## Breaking composition

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the heading is correctly rendered.

Suggested change
## Breaking composition
## Breaking composition


Sometimes, your subgraph schemas might conflict in a way that causes composition to fail. This is called _breaking composition_.
Sometimes, your subgraph schemas might conflict in a way that causes composition to fail. This is called _breaking composition_.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces for consistency.

Suggested change
Sometimes, your subgraph schemas might conflict in a way that causes composition to fail. This is called _breaking composition_.
Sometimes, your subgraph schemas might conflict in a way that causes composition to fail. This is called _breaking composition_.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the content is correctly rendered.

Suggested change
Sometimes, your subgraph schemas might conflict in a way that causes composition to fail. This is called _breaking composition_.
Sometimes, your subgraph schemas might conflict in a way that causes composition to fail. This is called _breaking composition_.


For example, take a look at these two subgraph schemas:
For example, take a look at these two subgraph schemas:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces for consistency.

Suggested change
For example, take a look at these two subgraph schemas:
For example, take a look at these two subgraph schemas:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use 'consider' instead of 'take a look at' for more concise and formal language, aligning with the Apollo voice.

Suggested change
For example, take a look at these two subgraph schemas:
For example, consider these two subgraph schemas:


<p style="margin-bottom: 0">❌</p>
<CodeColumns>
<p style="margin-bottom: 0">❌</p>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper rendering of the HTML tag and consistency.

Suggested change
<p style="margin-bottom: 0">❌</p>
<p style="margin-bottom: 0">❌</p>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the HTML tag is correctly rendered.

Suggested change
<p style="margin-bottom: 0">❌</p>
<p style="margin-bottom: 0">❌</p>

<CodeColumns>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper rendering of the HTML tag and consistency.

Suggested change
<CodeColumns>
<CodeColumns>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the shortcode is correctly rendered.

Suggested change
<CodeColumns>
<CodeColumns>


```graphql {2} title="Subgraph A"
type Event @shareable {
timestamp: String!
}
```
```graphql {2} title="Subgraph A"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper code block rendering and consistency.

Suggested change
```graphql {2} title="Subgraph A"
```graphql {2} title="Subgraph A"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
```graphql {2} title="Subgraph A"
```graphql {2} title="Subgraph A"

type Event @shareable {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces for consistency within the code block.

Suggested change
type Event @shareable {
type Event @shareable {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
type Event @shareable {
type Event @shareable {

timestamp: String!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation to be consistent with 2-space YAML indentation as per style guide. This ensures consistent formatting across code blocks.

Suggested change
timestamp: String!
timestamp: String!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
timestamp: String!
timestamp: String!

}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces for consistency within the code block.

Suggested change
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
}
}

```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper code block rendering and consistency.

Suggested change
```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
```


```graphql {2} title="Subgraph B"
type Event @shareable {
timestamp: Int!
}
```
```graphql {2} title="Subgraph B"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper code block rendering and consistency.

Suggested change
```graphql {2} title="Subgraph B"
```graphql {2} title="Subgraph B"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
```graphql {2} title="Subgraph B"
```graphql {2} title="Subgraph B"

type Event @shareable {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces for consistency within the code block.

Suggested change
type Event @shareable {
type Event @shareable {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
type Event @shareable {
type Event @shareable {

timestamp: Int!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adjust indentation to be consistent with 2-space YAML indentation as per style guide. This ensures consistent formatting across code blocks.

Suggested change
timestamp: Int!
timestamp: Int!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
timestamp: Int!
timestamp: Int!

}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces for consistency within the code block.

Suggested change
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
}
}

```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper code block rendering and consistency.

Suggested change
```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the code block is correctly rendered.

Suggested change
```


</CodeColumns>
</CodeColumns>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper rendering of the HTML tag and consistency.

Suggested change
</CodeColumns>
</CodeColumns>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the shortcode is correctly rendered.

Suggested change
</CodeColumns>
</CodeColumns>


One subgraph defines `Event.timestamp` as a `String`, and the other defines it as an `Int`. Composition doesn't know which type to use, so it fails.
One subgraph defines `Event.timestamp` as a `String`, and the other defines it as an `Int`. Composition doesn't know which type to use, so it fails.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HTML code tags (<code>) should be replaced with Markdown's backticks (`) for inline code snippets to ensure consistent formatting across the documentation site.

Suggested change
One subgraph defines `Event.timestamp` as a `String`, and the other defines it as an `Int`. Composition doesn't know which type to use, so it fails.
One subgraph defines `Event.timestamp` as a `String`, and the other defines it as an `Int`. Composition doesn't know which type to use, so it fails.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use backticks for inline code (Event.timestamp, String, Int) instead of <code> tags. This is the standard Markdown approach for code snippets and aligns with the style guide's preference for code font. This improves consistency.

Suggested change
One subgraph defines `Event.timestamp` as a `String`, and the other defines it as an `Int`. Composition doesn't know which type to use, so it fails.
One subgraph defines `Event.timestamp` as a `String`, and the other defines it as an `Int`. Composition doesn't know which type to use, so it fails.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use backticks for inline code (Event.timestamp, String, Int) instead of <code> tags for consistency with Markdown.

Suggested change
One subgraph defines `Event.timestamp` as a `String`, and the other defines it as an `Int`. Composition doesn't know which type to use, so it fails.
One subgraph defines `Event.timestamp` as a `String`, and the other defines it as an `Int`. Composition doesn't know which type to use, so it fails.


<Note>
<Note>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper rendering of the HTML tag and consistency.

Suggested change
<Note>
<Note>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the admonition is correctly rendered.

Suggested change
<Note>
<Note>


For examples of valid inconsistencies in field return types, see [Differing shared field return types](/graphos/schema-design/federated-schemas/sharing-types/#return-types).
For examples of valid inconsistencies in field return types, see [Differing shared field return types](/graphos/schema-design/federated-schemas/sharing-types/#return-types).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces for consistency within the note.

Suggested change
For examples of valid inconsistencies in field return types, see [Differing shared field return types](/graphos/schema-design/federated-schemas/sharing-types/#return-types).
For examples of valid inconsistencies in field return types, see [Differing shared field return types](/graphos/schema-design/federated-schemas/sharing-types/#return-types).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the content is correctly rendered.

Suggested change
For examples of valid inconsistencies in field return types, see [Differing shared field return types](/graphos/schema-design/federated-schemas/sharing-types/#return-types).
For examples of valid inconsistencies in field return types, see [Differing shared field return types](/graphos/schema-design/federated-schemas/sharing-types/#return-types).


</Note>
</Note>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper rendering of the HTML tag and consistency.

Suggested change
</Note>
</Note>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the admonition is correctly rendered.

Suggested change
</Note>
</Note>


Breaking composition is a helpful feature of federation! Whenever a team modifies their subgraph schema, those changes might conflict with another subgraph. But that conflict won't affect your router, because composition fails to generate a new supergraph schema. It's like a compiler error that prevents you from running invalid code. Refer to the [Composition Rules Reference](/graphos/reference/federation/composition-rules) for details.
Breaking composition is a helpful feature of federation! Whenever a team modifies their subgraph schema, those changes might conflict with another subgraph. But that conflict won't affect your router, because composition fails to generate a new supergraph schema. It's like a compiler error that prevents you from running invalid code. Refer to the [Composition Rules Reference](/graphos/reference/federation/composition-rules) for details.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replaced 'But' with 'However' to maintain a more formal and professional tone in technical documentation.

Suggested change
Breaking composition is a helpful feature of federation! Whenever a team modifies their subgraph schema, those changes might conflict with another subgraph. But that conflict won't affect your router, because composition fails to generate a new supergraph schema. It's like a compiler error that prevents you from running invalid code. Refer to the [Composition Rules Reference](/graphos/reference/federation/composition-rules) for details.
Breaking composition is a helpful feature of federation! Whenever a team modifies their subgraph schema, those changes might conflict with another subgraph. However, that conflict won't affect your router, because composition fails to generate a new supergraph schema. It's like a compiler error that prevents you from running invalid code. Refer to the [Composition Rules Reference](/graphos/reference/federation/composition-rules) for details.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Capitalize "Federation" as it refers to the product. Replace "But that" with "This" for better flow and conciseness, avoiding the slightly informal tone.

Suggested change
Breaking composition is a helpful feature of federation! Whenever a team modifies their subgraph schema, those changes might conflict with another subgraph. But that conflict won't affect your router, because composition fails to generate a new supergraph schema. It's like a compiler error that prevents you from running invalid code. Refer to the [Composition Rules Reference](/graphos/reference/federation/composition-rules) for details.
Breaking composition is a helpful feature of Federation! Whenever a team modifies their subgraph schema, those changes might conflict with another subgraph. This conflict won't affect your router, because composition fails to generate a new supergraph schema. It's like a compiler error that prevents you from running invalid code. Refer to the [Composition Rules Reference](/graphos/reference/federation/composition-rules) for details.


## Next steps
## Next steps

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure proper heading rendering and consistency.

Suggested change
## Next steps
## Next steps

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the heading is correctly rendered.

Suggested change
## Next steps
## Next steps


Ready to compose your first supergraph? [Get started with GraphOS!](/graphos/get-started/guides/quickstart)
Ready to compose your first supergraph? [Get started with GraphOS!](/graphos/get-started/guides/quickstart)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces for consistency.

Suggested change
Ready to compose your first supergraph? [Get started with GraphOS!](/graphos/get-started/guides/quickstart)
Ready to compose your first supergraph? [Get started with GraphOS!](/graphos/get-started/guides/quickstart)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove leading spaces to ensure the content is correctly rendered.

Suggested change
Ready to compose your first supergraph? [Get started with GraphOS!](/graphos/get-started/guides/quickstart)
Ready to compose your first supergraph? [Get started with GraphOS!](/graphos/get-started/guides/quickstart)