Launch GraphOS Studio

Publishing schemas to GraphOS

Using the Rover CLI

Whenever you make changes to a 's schema, you should publish those changes to using the Rover CLI or the Platform API. Doing so ensures that Apollo always has an up-to-date understanding of your .

This page covers how to publish different kinds of schemas using the . Consult the Platform API reference to learn how to use the API for publication.


Incorporate schema proposals into schema checks to ensure your organization only publishes approved changes. Learn more.


  1. Install the Rover CLI.
  2. Authenticate Rover with .

Publish subgraph schemas

Every in includes one or more subgraphs. These are the individual -powered microservices in your organization.

You individually publish each 's schema to Apollo with rover subgraph publish:

Example command
rover subgraph publish --schema ./products.graphql --name products docs-example-graph@current --routing-url

rover subgraph publish
rover subgraph publish
rover subgraph publish

To publish a subgraph schema to Apollo:

  1. Identify the name of the you're publishing to. You can view the names of your existing subgraphs from your 's Subgraphs page in GraphOS Studio.

  2. If you're publishing a subgraph for the first time, also obtain the routing URL of that . This is the URL that your will use to communicate with the subgraph.

    • If already knows your 's routing URL, you don't need to provide this value unless you're changing it.
  3. Run the rover subgraph publish command and provide it your 's schema in one of the ways shown:

    # Provide a local .graphql file path
    rover subgraph publish my-graph@my-variant --name locations --routing-url --schema ./schema.graphql
    # Provide an introspection result via stdin
    rover subgraph introspect http://localhost:4000 | rover subgraph publish my-graph@my-variant --name locations --routing-url --schema -

Whenever you publish a , attempts to compose all latest versions of your into a single supergraph schema for your :

(Composition succeeds)
Supergraph schema
(A + B + C + routing machinery)

If this succeeds, your is updated with the result. This enables clients to any newly added , and it prevents them from querying any removed fields.

You can manually fetch your 's latest with the rover supergraph fetch command, or retrieve it from your 's Schema > SDL page in .

Publish monograph schemas


These instructions apply only to monographs, which are not recommended.

  1. Decide how you'll provide your server's schema to . You can either:

    • Use a .gql or .graphql file saved on your local machine, or
    • Perform an on your running server to fetch the schema
  2. Run the rover graph publish command, providing your schema in one of the ways shown:

    # Provide a local .graphql file path
    rover graph publish my-graph@my-variant --schema ./schema.graphql
    # Provide an introspection result via stdin
    rover graph introspect http://localhost:4000 | rover graph publish my-graph@my-variant --schema -

    As shown, the first positional you provide rover graph publish is a graph ref, a string that specifies a particular of a particular in .

Publish with continuous delivery

To get the most out of , you should publish each update to any production schema as soon as it occurs. Consequently, schema publishing should be part of your continuous delivery pipeline.

Here's a sample continuous delivery configuration for schema publishing in CircleCI:

version: 2
- image: circleci/node:8
- checkout
- run: npm install
- run:
name: Install Rover
command: |
# Download and install Rover
# This is pinned to a specific version for predictability in CI
curl -sSL | sh
# This allows the PATH changes to persist to the next `run` step
echo 'export PATH=$HOME/.rover/bin:$PATH' >> $BASH_ENV
# Start the GraphQL server. If a different command is used to
# start the server, use it in place of `npm start` here.
- run:
name: Starting server
command: npm start
background: true
# make sure the server has enough time to start up before running
# commands against it
- run: sleep 5
# When running on the 'main' branch, push the latest version
# of the schema to GraphOS.
- run: |
if [ "${CIRCLE_BRANCH}" == "main" ]; then
rover subgraph publish my-graph@my-variant \
--schema ./schema.graphql \
--name locations \
Implement proposals
Edit on GitHubEditForumsDiscord

© 2024 Apollo Graph Inc.

Privacy Policy