Exporting the Hasura GraphQL schema
Introduction
If you need to share, introspect or export the GraphQL schema, you can use community tooling such as graphqurl, Apollo CLI, get-graphql-schema, etc.
Using graphqurl
For example, using graphqurl
, you can get the schema as follows:
Run npm install -g graphqurl
to install graphqurl
. Then you can run the following commands to download the GraphQL
schema:
# If the GraphQL engine is running at https://my-graphql-engine.com/v1/graphql,
# without an admin secret
gq https://my-graphql-engine.com/v1/graphql --introspect > schema.graphql
# If Hasura GraphQL engine is running with an admin secret
gq https://my-graphql-engine.com/v1/graphql -H "X-Hasura-Admin-Secret: adminsecretkey" --introspect > schema.graphql
By default, it downloads the schema in .graphql
format. If you want it in JSON format, you can use an additional flag
--format json
:
# Getting the schema in .json format
gq https://my-graphql-engine.com/v1/graphql --introspect --format json > schema.json
Using Apollo CLI
Using Apollo CLI, you can get the schema as follows:
Run npm install -g apollo
to install the Apollo CLI. You can then run the following command to download the GraphQL
schema:
# If the GraphQL engine is running at https://my-graphql-engine.com/v1/graphql,
# without an admin secret
apollo schema:download --endpoint https://my-graphql-engine.com/v1/graphql
# If Hasura GraphQL engine is running with an admin secret
apollo schema:download --endpoint https://my-graphql-engine.com/v1/graphql --header "X-Hasura-Admin-Secret: adminsecretkey"
Note that apollo schema:download
is an alias of the command
apollo service:download.
By default, this downloads the schema to a file called schema.json
. This command has no other output types.