Last Updated: November 21, 2025
Schema Definition
type User {
id: ID!
name: String!
email: String
posts: [Post!]!
}
type Post {
id: ID!
title: String!
content: String
author: User!
}
type Query {
user(id: ID!): User
users: [User!]!
post(id: ID!): Post
}
type Mutation {
createUser(name: String!, email: String): User!
updateUser(id: ID!, name: String): User
deleteUser(id: ID!): Boolean
}
Queries
# Basic query
query {
user(id: "1") {
name
email
}
}
# Query with variables
query GetUser($id: ID!) {
user(id: $id) {
name
email
posts {
title
}
}
}
# Nested query
query {
users {
name
posts {
title
comments {
text
}
}
}
}
# Aliases
query {
user1: user(id: "1") { name }
user2: user(id: "2") { name }
}
Mutations
# Create
mutation {
createUser(name: "John", email: "john@example.com") {
id
name
}
}
# Update
mutation UpdateUser($id: ID!, $name: String!) {
updateUser(id: $id, name: $name) {
id
name
}
}
# Delete
mutation {
deleteUser(id: "1")
}
Fragments
fragment UserFields on User {
id
name
email
}
query {
user(id: "1") {
...UserFields
posts {
title
}
}
}
💡 Pro Tip:
Use fragments to reuse common field selections across queries!