Co-authored-by: Christophe (Xtof) Dehaudt <xtof.dehaudt@gmail.com> Co-authored-by: Christophe (Xtof) Dehaudt <xtofx@github.com>
59 lines
3.8 KiB
Markdown
59 lines
3.8 KiB
Markdown
---
|
|
title: About the GraphQL API
|
|
intro: 'The {% data variables.product.prodname_dotcom %} GraphQL API offers flexibility and the ability to define precisely the data you want to fetch.'
|
|
versions:
|
|
fpt: '*'
|
|
ghec: '*'
|
|
ghes: '*'
|
|
topics:
|
|
- API
|
|
---
|
|
|
|
## Overview
|
|
|
|
Here are some quick links to get you up and running with the GraphQL API:
|
|
|
|
* [Authentication](/graphql/guides/forming-calls-with-graphql#authenticating-with-graphql)
|
|
* [Root endpoint](/graphql/guides/forming-calls-with-graphql#the-graphql-endpoint)
|
|
* [Schema introspection](/graphql/guides/introduction-to-graphql#discovering-the-graphql-api)
|
|
* [Rate limits](/graphql/overview/resource-limitations)
|
|
* [Migrating from REST](/graphql/guides/migrating-from-rest-to-graphql)
|
|
|
|
For more information about {% data variables.product.company_short %}'s APIs, see [AUTOTITLE](/rest/overview/about-githubs-apis).
|
|
|
|
## About GraphQL
|
|
|
|
The [GraphQL](https://graphql.org/) data query language is:
|
|
|
|
* **A [specification](https://spec.graphql.org/June2018/).** The spec determines the validity of the [schema](/graphql/guides/introduction-to-graphql#schema) on the API server. The schema determines the validity of client calls.
|
|
|
|
* **[Strongly typed](#about-the-graphql-schema-reference).** The schema defines an API's type system and all object relationships.
|
|
|
|
* **[Introspective](/graphql/guides/introduction-to-graphql#discovering-the-graphql-api).** A client can query the schema for details about the schema.
|
|
|
|
* **[Hierarchical](/graphql/guides/forming-calls-with-graphql).** The shape of a GraphQL call mirrors the shape of the JSON data it returns. [Nested fields](/graphql/guides/migrating-from-rest-to-graphql#example-nesting) let you query for and receive only the data you specify in a single round trip.
|
|
|
|
* **An application layer.** GraphQL is not a storage model or a database query language. The _graph_ refers to graph structures defined in the schema, where [nodes](/graphql/guides/introduction-to-graphql#node) define objects and [edges](/graphql/guides/introduction-to-graphql#edge) define relationships between objects. The API traverses and returns application data based on the schema definitions, independent of how the data is stored.
|
|
|
|
## Why GitHub is using GraphQL
|
|
|
|
GitHub chose GraphQL because it offers significantly more flexibility for our integrators. The ability to define precisely the data you want—and _only_ the data you want—is a powerful advantage over traditional REST API endpoints. GraphQL lets you replace multiple REST requests with _a single call_ to fetch the data you specify.
|
|
|
|
For more details about why GitHub invested in GraphQL, see the original [announcement blog post](https://github.blog/2016-09-14-the-github-graphql-api/).
|
|
|
|
## About the GraphQL schema reference
|
|
|
|
The docs in the sidebar are generated from the {% data variables.product.prodname_dotcom %} GraphQL [schema](/graphql/guides/introduction-to-graphql#discovering-the-graphql-api). All calls are validated and executed against the schema. Use these docs to find out what data you can call:
|
|
|
|
* Allowed operations: [queries](/graphql/reference/queries) and [mutations](/graphql/reference/mutations).
|
|
|
|
* Schema-defined types: [scalars](/graphql/reference/scalars), [objects](/graphql/reference/objects), [enums](/graphql/reference/enums), [interfaces](/graphql/reference/interfaces), [unions](/graphql/reference/unions), and [input objects](/graphql/reference/input-objects).
|
|
|
|
For other information, such as authentication and rate limit details, check out the [guides](/graphql/guides).
|
|
|
|
## Requesting support
|
|
|
|
{% data reusables.support.help_resources %}
|
|
|
|
If you observe unexpected failures, you can use [githubstatus.com](https://www.githubstatus.com/) or the [{% data variables.product.company_short %} status API](https://www.githubstatus.com/api) to check for incidents affecting the API.
|