- 
            
      
        
      
    Star
      
          
          (200)
      
  
You must be signed in to star a gist 
- 
              
      
        
      
    Fork
      
          
          (47)
      
  
You must be signed in to fork a gist 
- 
      
- 
        Save craigbeck/b90915d49fda19d5b2b17ead14dcd6da to your computer and use it in GitHub Desktop. 
| query IntrospectionQuery { | |
| __schema { | |
| queryType { name } | |
| mutationType { name } | |
| subscriptionType { name } | |
| types { | |
| ...FullType | |
| } | |
| directives { | |
| name | |
| description | |
| args { | |
| ...InputValue | |
| } | |
| onOperation | |
| onFragment | |
| onField | |
| } | |
| } | |
| } | |
| fragment FullType on __Type { | |
| kind | |
| name | |
| description | |
| fields(includeDeprecated: true) { | |
| name | |
| description | |
| args { | |
| ...InputValue | |
| } | |
| type { | |
| ...TypeRef | |
| } | |
| isDeprecated | |
| deprecationReason | |
| } | |
| inputFields { | |
| ...InputValue | |
| } | |
| interfaces { | |
| ...TypeRef | |
| } | |
| enumValues(includeDeprecated: true) { | |
| name | |
| description | |
| isDeprecated | |
| deprecationReason | |
| } | |
| possibleTypes { | |
| ...TypeRef | |
| } | |
| } | |
| fragment InputValue on __InputValue { | |
| name | |
| description | |
| type { ...TypeRef } | |
| defaultValue | |
| } | |
| fragment TypeRef on __Type { | |
| kind | |
| name | |
| ofType { | |
| kind | |
| name | |
| ofType { | |
| kind | |
| name | |
| ofType { | |
| kind | |
| name | |
| } | |
| } | |
| } | |
| } | 
npm install -g graphql-introspect
graphql-introspect URL > schema.graphqlconst path = require("path");
const fs = require("fs");
const fetch = require("node-fetch");
const {
    getIntrospectionQuery,
    printSchema,
    buildClientSchema
} = require("graphql");
async function main() {
  const introspectionQuery = getIntrospectionQuery();
    const response = await fetch(
        "https://<URL_HERE>/graphql",
        {
            method: "POST",
            headers: {
                "Content-Type": "application/json"
            },
            body: JSON.stringify({ query: introspectionQuery })
        }
    );
    const { data } = await response.json();
    const schema = buildClientSchema(data);
    const outputFile = path.join(__dirname, "./result.gql");
    await fs.promises.writeFile(outputFile, printSchema(schema));
}
main();@danstarns what is the query here?
@danstarns what is the query here?
introspectionQuery is an exported member of graphql, the query is that.
const { introspectionQuery } = require("graphql");
console.log(introspectionQuery);@danstarns thank you.
The graphql reference implementation on JS has changed slightly and introspectionQuery is no longer exported as above. For newer versions of graphql (after graphql/graphql-js#2718), the above will break/not work, however, this seems to work after adapting to getIntrospectionQuery:
const path = require("path");
const fs = require("fs");
const fetch = require("node-fetch");
const {
    getIntrospectionQuery,
    printSchema,
    buildClientSchema
} = require("graphql");
async function main() {
  const introspectionQuery = getIntrospectionQuery();
    const response = await fetch(
        "https://<URL_HERE>/graphql",
        {
            method: "POST",
            headers: {
                "Content-Type": "application/json"
            },
            body: JSON.stringify({ query: introspectionQuery })
        }
    );
    const { data } = await response.json();
    const schema = buildClientSchema(data);
    const outputFile = path.join(__dirname, "./result.gql");
    await fs.promises.writeFile(outputFile, printSchema(schema));
}
main();
The graphql reference implementation on JS has changed slightly and introspectionQuery is no longer exported as above. For newer versions of graphql (after graphql/graphql-js#2718), the above will break/not work, however, this seems to work after adapting to getIntrospectionQuery:
const path = require("path"); const fs = require("fs"); const fetch = require("node-fetch"); const { getIntrospectionQuery, printSchema, buildClientSchema } = require("graphql"); async function main() { const introspectionQuery = getIntrospectionQuery(); const response = await fetch( "https://<URL_HERE>/graphql", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ query: introspectionQuery }) } ); const { data } = await response.json(); const schema = buildClientSchema(data); const outputFile = path.join(__dirname, "./result.gql"); await fs.promises.writeFile(outputFile, printSchema(schema)); } main();
Good call updated getIntrospectionQuery 👍
I was looking for the following when I came across this gist:
https://graphql.org/graphql-js/utilities/#introspectionquery