index.md 1.5 KB
Newer Older
B
Bob Van Landuyt 已提交
1 2 3 4
# GraphQL API (Beta)

> [Introduced][ce-19008] in GitLab 11.0.

5 6 7
[GraphQL](https://graphql.org/) is a query language for APIs that
allows clients to request exactly the data they need, making it
possible to get all required data in a limited number of requests.
B
Bob Van Landuyt 已提交
8

9 10 11 12
The GraphQL data (fields) can be described in the form of types,
allowing clients to use [clientside GraphQL
libraries](https://graphql.org/code/#graphql-clients) to consume the
API and avoid manual parsing.
B
Bob Van Landuyt 已提交
13

14 15 16 17
Since there's no fixed endpoints and datamodel, new abilities can be
added to the API without creating breaking changes. This allows us to
have a versionless API as described in [the GraphQL
documentation](https://graphql.org/learn/best-practices/#versioning).
B
Bob Van Landuyt 已提交
18

19 20 21 22
## Enabling the GraphQL feature

The GraphQL API itself is currently in Alpha, and therefore hidden behind a
feature flag. You can enable the feature using the [features api][features-api] on a self-hosted instance.
B
Bob Van Landuyt 已提交
23

24
For example:
B
Bob Van Landuyt 已提交
25

26 27
```shell
curl --data "value=100" --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v4/features/graphql
B
Bob Van Landuyt 已提交
28 29 30 31
```

## Available queries

32
A first iteration of a GraphQL API includes a query for: `project`. Within a project it is also possible to fetch a `mergeRequest` by IID.
B
Bob Van Landuyt 已提交
33 34 35 36

## GraphiQL

The API can be explored by using the GraphiQL IDE, it is available on your
37
instance on `gitlab.example.com/-/graphql-explorer`.
B
Bob Van Landuyt 已提交
38 39

[ce-19008]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/19008
40
[features-api]: ../features.md