Getting Started
3 snippetsGraphQL basics
Simple Query
query {
user {
name
email
}
}Query with Arguments
query {
user(id: "123") {
name
email
}
}Comments
# Single line comment
query {
# This gets the user
user {
name
}
}Queries
5 snippetsFetching data
Named Query
query GetUser {
user(id: "123") {
name
email
}
}Query Variables
query GetUser($id: ID!) {
user(id: $id) {
name
email
}
}
# Variables
{
"id": "123"
}Multiple Fields
query {
user {
id
name
email
createdAt
}
}Nested Fields
query {
user {
name
posts {
title
content
comments {
text
}
}
}
}Multiple Queries
query {
user(id: "123") {
name
}
posts(limit: 10) {
title
}
}Mutations
4 snippetsModifying data
Simple Mutation
mutation {
createUser(name: "Alice", email: "alice@example.com") {
id
name
}
}Mutation with Variables
mutation CreateUser($name: String!, $email: String!) {
createUser(name: $name, email: $email) {
id
name
email
}
}
# Variables
{
"name": "Alice",
"email": "alice@example.com"
}Update Mutation
mutation {
updateUser(id: "123", name: "Bob") {
id
name
updatedAt
}
}Delete Mutation
mutation {
deleteUser(id: "123") {
success
message
}
}Tired of looking up syntax?
DocuWriter.ai generates documentation and explains code using AI.
Fragments
4 snippetsReusable selections
Define Fragment
fragment UserFields on User {
id
name
email
}Use Fragment
query {
user(id: "123") {
...UserFields
}
}
fragment UserFields on User {
id
name
email
}Multiple Fragments
query {
user {
...UserFields
posts {
...PostFields
}
}
}
fragment UserFields on User {
id
name
}
fragment PostFields on Post {
title
content
}Inline Fragments
query {
search(text: "foo") {
... on User {
name
}
... on Post {
title
}
}
}Directives
3 snippetsConditional execution
@include
query GetUser($withEmail: Boolean!) {
user {
name
email @include(if: $withEmail)
}
}@skip
query GetUser($skipEmail: Boolean!) {
user {
name
email @skip(if: $skipEmail)
}
}Combined Directives
query {
user {
name
email @include(if: $includeEmail)
phone @skip(if: $skipPhone)
}
}Aliases & Pagination
3 snippetsField renaming and lists
Field Aliases
query {
currentUser: user(id: "123") {
name
}
otherUser: user(id: "456") {
name
}
}Pagination
query {
posts(first: 10, after: "cursor") {
edges {
node {
title
}
cursor
}
pageInfo {
hasNextPage
endCursor
}
}
}Offset Pagination
query {
posts(limit: 10, offset: 20) {
id
title
}
}Schema Definition
6 snippetsTypes and schemas
Object Type
type User {
id: ID!
name: String!
email: String!
age: Int
}Query Type
type Query {
user(id: ID!): User
users(limit: Int): [User!]!
}Mutation Type
type Mutation {
createUser(name: String!, email: String!): User!
updateUser(id: ID!, name: String): User
deleteUser(id: ID!): Boolean!
}Input Type
input UserInput {
name: String!
email: String!
age: Int
}
type Mutation {
createUser(input: UserInput!): User!
}Enum Type
enum Role {
ADMIN
USER
GUEST
}
type User {
id: ID!
role: Role!
}Interface
interface Node {
id: ID!
}
type User implements Node {
id: ID!
name: String!
}Subscriptions
2 snippetsReal-time updates
Simple Subscription
subscription {
messageAdded {
id
text
createdAt
}
}Subscription with Filter
subscription OnCommentAdded($postId: ID!) {
commentAdded(postId: $postId) {
id
text
author {
name
}
}
}