apollo-federation

O Apollo Federation permite compor múltiplas APIs GraphQL (subgrafos) em um supergrafo unificado.

npx skills add https://github.com/apollographql/skills --skill apollo-federation

Apollo Federation Schema Authoring

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

Federation 2 Schema Setup

Every Federation 2 subgraph must opt-in via @link:

extend schema
  @link(url: "https://specs.apollo.dev/federation/v2.12",
        import: ["@key", "@shareable", "@external", "@requires", "@provides"])

Import only the directives your subgraph uses. The version shown (v2.12) is illustrative — check the Federation changelog for currently supported versions before copying it verbatim.

A subgraph's @link version is a floor, not the composition version — see Federation versions for the full explanation.

Core Directives Quick Reference

DirectivePurposeExample
@keyDefine entity with unique keytype Product @key(fields: "id")
@shareableAllow multiple subgraphs to resolve fieldtype Position @shareable { x: Int! }
@externalReference field from another subgraphweight: Int @external
@requiresComputed field depending on external fieldsshippingCost: Int @requires(fields: "weight")
@providesConditionally resolve external field@provides(fields: "name")
@overrideMigrate field to this subgraph@override(from: "Products")
@inaccessibleHide from API schemainternalId: ID! @inaccessible
@interfaceObjectAdd fields to entity interfacetype 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

type Product @key(fields: "id") {
  id: ID!
  name: String!
  price: Int
}

Entity Contributions Across Subgraphs

# 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

type Product @key(fields: "id") {
  id: ID!
  size: Int @external
  weight: Int @external
  shippingEstimate: String @requires(fields: "size weight")
}

Value Types with @shareable

type Money @shareable {
  amount: Int!
  currency: String!
}

Entity Stub (Reference Without Contributing)

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

Mais skills de apollographql

apollo-ios
apollographql
Apollo iOS é um cliente GraphQL fortemente tipado para plataformas Apple. Ele gera tipos Swift a partir das suas operações e schema GraphQL, e inclui um cliente async/await, um cache normalizado (em memória ou com suporte a SQLite), um transporte HTTP baseado em interceptadores plugáveis que lida com queries, mutations e assinaturas multipart, e um transporte WebSocket opcional (graphql-transport-ws) que pode transportar qualquer tipo de operação.
apollo-router
apollographql
O Apollo Router é um roteador de grafos de alto desempenho escrito em Rust para executar supergrafos do Apollo Federation 2. Ele fica na frente dos seus subgrafos e lida com planejamento de consultas, execução e composição de respostas.
apollo-router-plugin-creator
apollographql
Crie plugins nativos em Rust para o Apollo Router.
apollo-server
apollographql
Guia completo para construir servidores GraphQL com Apollo Server 5.x em diferentes frameworks. Aborda definição de esquemas, resolvers, configuração de contexto e tratamento de erros com suporte a TypeScript. Suporta modo standalone para prototipagem e integrações com Express, Fastify, Koa e ambientes serverless. Inclui padrões de resolvers, autenticação/autorização, plugins, DataLoader para prevenção de N+1 e técnicas de otimização de desempenho. Fornece documentação de referência para fontes de dados, erros...
graphql-operations
apollographql
Guia de melhores práticas para escrever operações GraphQL eficientes e type-safe, organizando-as com fragments. Aborda queries, mutations, subscriptions e fragments com convenções de nomenclatura, sintaxe de variáveis e uso de diretivas. Enfatiza princípios fundamentais: solicitar apenas os campos necessários, nomear todas as operações, usar variáveis em vez de valores fixos e incluir campos de id para capacidade de cache. Recomenda colocar fragments junto com componentes e usar as diretivas @include / @skip para campos condicionais...
graphql-schema
apollographql
Guia de melhores práticas da indústria para projetar schemas GraphQL intuitivos, performáticos e de fácil manutenção. Aborda princípios fundamentais de design, incluindo organização de tipos centrada no cliente, padrões explícitos de nulidade e estratégias de evolução com compatibilidade reversa. Fornece documentação de referência sobre tipos, convenções de nomenclatura, paginação baseada em cursor, modelagem de erros e considerações de segurança. Inclui padrões práticos para interfaces, uniões, tipos de entrada, mutações e estratégias de ID com exemplos de código...
rover
apollographql
CLI Apollo Rover para gerenciar esquemas GraphQL, federação e desenvolvimento local de supergraph. Publique, busque e valide esquemas de subgraph; componha supergraphs federados localmente ou via GraphOS. Inclui verificação de esquema (validação pré-implantação), linting e introspecção de servidores em execução. O comando rover dev inicia um Router local com composição automática de esquema para fluxos de desenvolvimento. Suporta padrões de CI/CD com validação check-before-publish e saída JSON para scripts. Requer...
rust-best-practices
apollographql
Padrões de codificação idiomáticos em Rust baseados no manual de melhores práticas da Apollo GraphQL. Abrange nove áreas principais: estilos e expressões idiomáticas de codificação, linting com clippy, otimização de desempenho, tratamento de erros, padrões de teste, genéricos e dispatch, padrão de estado de tipo, documentação e segurança de ponteiros. Enfatiza borrowing em vez de clonagem, tratamento de erros baseado em Result com thiserror/anyhow e perfilamento de desempenho com builds de release. Inclui orientação de referência rápida sobre padrões de ownership, prevenção de pânicos,...