apollo-connectors

tarafından apollographql

REST API'lerini @source ve @connect yönergelerini kullanarak GraphQL süper grafiklerine entegre eder. Yapılandırılmış 5 adımlı bir süreç sunar: API yapısını araştırma, yönergelerle şema uygulama, rover supergraph compose ile doğrulama, bağlayıcıları çalıştırma ve test kapsamı. Başlıklar, gövde yükleri, N+1 desenleri için toplu işleme ve $env aracılığıyla ortam değişkeni enjeksiyonu dahil olmak üzere istek yapılandırmasını destekler. Alan seçimi, takma adlandırma, iç içe veriler için alt seçimler ve varlık... ile yanıt eşlemesini yönetir.

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

Apollo Connectors Schema Assistant

MCP Tools

If GraphOS MCP Tools are available, use them:

  • connectors-spec: Fetch the complete Connectors specification before starting any connector work
  • apollo_docs_search: Search for relevant documentation
  • apollo_docs_read: Read specific documentation pages by slug

Documentation paths by topic:

  • Requests: /graphos/connectors/requests/url, /headers, /body, /batching
  • Responses: /graphos/connectors/responses/fields, /error-handling
  • Mapping: /graphos/connectors/mapping, /arrays, /enums, /literals
  • Entities: /graphos/connectors/entities, /patterns

Process

Follow this 5-step process. DO NOT skip any steps.

Step 1: Research

  • Understand the API being called and the structure of responses
  • Ask the user for example API responses if not provided
  • Fetch relevant documentation from MCP tools or reference files
  • DO NOT write any code until research is complete

Step 2: Implement

  • Create the schema using the template below
  • Follow the grammar, methods, and variables in the reference files
  • Ask clarifying questions if unsure about requirements

Step 3: Validate (Compose)

  • Run rover supergraph compose --config ./supergraph.yaml
  • Fix any composition errors before proceeding

Step 4: Execute

  • Run rover connector run --schema <file> -c "<Type.field>" -v "{}"
  • Verify the connector executes correctly

Step 5: Test

  • Create or update test files under /tests/
  • Run rover connector test
  • Ensure full test coverage for each connector

Schema Template

# Note to AI Friends: This is an Apollo Connectors schema. You should use your connectors-spec MCP tool if you have it available before editing this file.

extend schema
  @link(url: "https://specs.apollo.dev/federation/v2.15")
  @link(url: "https://specs.apollo.dev/connect/v0.3", import: ["@source", "@connect"])

@source(name: "api_name", http: { baseURL: "https://api.example.com" })

type Query {
  example(id: ID!): Example
    @connect(
      source: "api_name"
      http: { GET: "/example/{$args.id}" }
      selection: """
      id
      name
      """
    )
}

type Example {
  id: ID!
  name: String
}

Version requirements

Use the latest Long-Term Support (LTS) versions of Apollo Federation and Apollo Connectors. Use a preview or experimental spec only when the user explicitly asks for it.

Confirm the current LTS before writing @link URLs or federation_version. Prefer the GraphOS docs tools when they are available:

  • Federation: read /graphos/schema-design/federated-schemas/reference/versions and use the highest version marked LTS. That version is the schema @link (https://specs.apollo.dev/federation/vX.Y). Set federation_version in supergraph.yaml to the latest patch of that same LTS line.
  • Connectors: read /graphos/connectors/getting-started/version-requirements and /graphos/connectors/reference/changelog. Use the latest Connectors spec that is generally available (not marked experimental) and compatible with that Federation LTS (https://specs.apollo.dev/connect/vX.Y).

The template above uses the current LTS: Federation v2.15 and Connectors v0.3. If the docs list a newer LTS, use the docs.

Reference Files

Before implementing connectors, read the relevant reference files:

Key Rules

Selection Mapping

  • Prefer sub-selections over ->map for cleaner mappings
  • Do NOT use $ when selecting fields directly from root
  • Field aliasing: newName: originalField (only when renaming)
  • Sub-selection: fieldName { ... } (to map nested content)
# DO - Direct sub-selection for arrays
$.results {
  firstName: name.first
  lastName: name.last
}

# DO NOT - Unnecessary root $
$ {
  id
  name
}

# DO - Direct field selection
id
name

Entities

  • Add @connect on a type to make it an entity (no @key needed)
  • Create entity stubs in parent selections: user: { id: userId }
  • When you see an ID field (e.g., productId), create an entity relationship
  • Each entity should have ONE authoritative subgraph with @connect

Literal Values

Use $() wrapper for literal values in mappings:

$(1)              # number
$(true)           # boolean
$("hello")        # string
$({"a": "b"})     # object

# In body
body: "$({ a: $args.a })"  # CORRECT
body: "{ a: $args.a }"     # WRONG - will not compose

Headers

http: {
  GET: "/api"
  headers: [
    { name: "Authorization", value: "Bearer {$env.API_KEY}" },
    { name: "X-Forwarded", from: "x-client" }
  ]
}

Batching

Convert N+1 patterns using $batch:

type Product @connect(
  source: "api"
  http: {
    POST: "/batch"
    body: "ids: $batch.id"
  }
  selection: "id name"
) {
  id: ID!
  name: String
}

Ground Rules

  • NEVER make up syntax or directive values not in this specification
  • NEVER use --elv2-license accept (for humans only)
  • ALWAYS ask for example API responses before writing code
  • ALWAYS validate with rover supergraph compose after changes
  • ALWAYS create entity relationships when you see ID fields
  • Prefer $env over $config for environment variables
  • Use rover dev for running Apollo Router locally

apollographql tarafından daha fazla skill

apollo-federation
apollographql
Apollo Federation, birden fazla GraphQL API'sini (alt grafikler) birleşik bir süper grafik halinde oluşturmayı sağlar.
apollo-ios
apollographql
We need to translate the given English text into Turkish, preserving the name "apollo-ios" and technical terms like GraphQL, Swift, async/await, SQLite, HTTP, WebSocket, graphql-transport-ws. The instruction says to translate only the text inside <text>, and not include the name unless it appears in the source text. The name "apollo-ios" does not appear in the source text; the source says "Apollo iOS" (with a space). The instruction says "Name to preserve: apollo-ios" but the source has "Apollo iOS". We should preserve the exact name as given? The instruction says "preserve product names" and the name to preserve is "apollo-ios". However, the source text uses "Apollo iOS". I think we should keep "Apollo iOS" as is because that's the product name in the source. But the instruction says "Name to preserve: apollo-ios" - that might be a key. To be safe, I'll keep "Apollo iOS
apollo-router
apollographql
Apollo Router, Apollo Federation 2 süper grafiklerini çalıştırmak için Rust dilinde yazılmış yüksek performanslı bir grafik yönlendiricisidir. Alt grafiklerinizin önünde yer alır ve sorgu planlaması, yürütme ve yanıt birleştirme işlemlerini yönetir.
apollo-router-plugin-creator
apollographql
Apollo Router için yerel Rust eklentileri oluşturun.
apollo-server
apollographql
Apollo Server 5.x ile çeşitli framework'lerde GraphQL sunucuları oluşturmak için kapsamlı rehber. Şema tanımı, çözücüler, bağlam kurulumu ve TypeScript desteğiyle hata yönetimini kapsar. Prototipleme için bağımsız modu ve Express, Fastify, Koa ile sunucusuz ortamlar için entegrasyonları destekler. Çözücü desenleri, kimlik doğrulama/yetkilendirme, eklentiler, N+1 önleme için DataLoader ve performans optimizasyon tekniklerini içerir. Veri kaynakları, hata... için referans dokümantasyon sağlar.
graphql-operations
apollographql
Verimli, tür güvenli GraphQL işlemleri yazmak ve bunları fragmentlerle organize etmek için en iyi uygulamalar kılavuzu. Sorgular, mutasyonlar, abonelikler ve fragmentleri; adlandırma kuralları, değişken sözdizimi ve yönerge kullanımıyla kapsar. Temel ilkeleri vurgular: yalnızca gerekli alanları isteyin, tüm işlemleri adlandırın, sabit kodlanmış değerler yerine değişkenler kullanın ve önbelleğe alınabilirlik için id alanlarını ekleyin. Fragmentlerin bileşenlerle birlikte konumlandırılmasını ve koşullu alanlar için @include / @skip yönergelerinin kullanılmasını önerir...
graphql-schema
apollographql
Endüstriyel en iyi uygulamalar rehberi; sezgisel, yüksek performanslı ve sürdürülebilir GraphQL şemaları tasarlamak için. İstemci odaklı tip organizasyonu, açık nullability desenleri ve geriye dönük uyumlu evrim stratejileri dahil olmak üzere temel tasarım ilkelerini kapsar. Tipler, adlandırma kuralları, imleç tabanlı sayfalama, hata modelleme ve güvenlik hususları hakkında referans dokümantasyonu sağlar. Kod örnekleriyle arayüzler, birleşimler, girdi tipleri, mutasyonlar ve ID stratejileri için pratik desenler içerir...
rover
apollographql
Apollo Rover CLI, GraphQL şemalarını, federasyonu ve yerel süpergraf geliştirmeyi yönetmek içindir. Alt grafik şemalarını yayımlayın, alın ve doğrulayın; federasyonlu süper grafikleri yerel olarak veya GraphOS aracılığıyla oluşturun. Çalışan sunuculardan şema denetimi (dağıtım öncesi doğrulama), linting ve içe bakış içerir. rover dev komutu, geliştirme iş akışları için otomatik şema oluşturma ile yerel bir Yönlendirici başlatır. Yayımlamadan önce doğrulama ve komut dosyası oluşturma için JSON çıktısı ile CI/CD desenlerini destekler. Gerektirir...