Labsco
apollographql logo

apollo-federation

โ˜… 90

by apollographql ยท part of apollographql/skills

Apollo Federation enables composing multiple GraphQL APIs (subgraphs) into a unified supergraph.

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅโœ“ VerifiedFreeQuick setup
๐Ÿงฉ One of 7 skills in the apollographql/skills package โ€” works on its own, and pairs well with its siblings.

Apollo Federation enables composing multiple GraphQL APIs (subgraphs) into a unified supergraph.

Inspect the full instructions your agent will receiveExpand

This is the exact playbook injected into your agent when the skill activates โ€” shown here so you can audit it before installing. You don't need to read it to use the skill.

by apollographql

Apollo Federation enables composing multiple GraphQL APIs (subgraphs) into a unified supergraph. npx skills add https://github.com/apollographql/skills --skill apollo-federation Download ZIPGitHub90

Apollo Federation Schema Authoring

Apollo Federation enables composing multiple GraphQL APIs (subgraphs) into a unified supergraph.

Core Directives Quick Reference

Directive Purpose Example @key Define entity with unique key type Product @key(fields: "id") @shareable Allow multiple subgraphs to resolve field type Position @shareable { x: Int! } @external Reference field from another subgraph weight: Int @external @requires Computed field depending on external fields shippingCost: Int @requires(fields: "weight") @provides Conditionally resolve external field @provides(fields: "name") @override Migrate field to this subgraph @override(from: "Products") @inaccessible Hide from API schema internalId: ID! @inaccessible @interfaceObject Add fields to entity interface type Media @interfaceObject

Reference Files

Detailed documentation for specific topics:

  • Directives - All federation directives with syntax, examples, and rules

  • Schema Patterns - Multi-subgraph patterns and recipes

  • Composition - Composition rules, error codes, and debugging

Key Patterns

Entity Definition

Copy & paste โ€” that's it
type Product @key(fields: "id") {
 id: ID!
 name: String!
 price: Int
}

Entity Contributions Across Subgraphs

Copy & paste โ€” that's it
# Products subgraph
type Product @key(fields: "id") {
 id: ID!
 name: String!
 price: Int
}

# Reviews subgraph
type Product @key(fields: "id") {
 id: ID!
 reviews: [Review!]!
 averageRating: Float
}

Computed Fields with @requires

Copy & paste โ€” that's it
type Product @key(fields: "id") {
 id: ID!
 size: Int @external
 weight: Int @external
 shippingEstimate: String @requires(fields: "size weight")
}

Value Types with @shareable

Copy & paste โ€” that's it
type Money @shareable {
 amount: Int!
 currency: String!
}

Entity Stub (Reference Without Contributing)

Copy & paste โ€” that's it
type Product @key(fields: "id", resolvable: false) {
 id: ID!
}

Ground Rules

  • ALWAYS use Federation 2.x syntax with @link directive

  • ALWAYS import only the directives your subgraph uses

  • NEVER use @shareable without ensuring all subgraphs return identical values for that field

  • PREFER @key with single ID field for simple entity identification

  • USE rover supergraph compose to validate composition locally

  • USE rover subgraph check to validate against production supergraph