GraphQL CHEAT SHEET

This quick reference cheat sheet provides a brief overview of GraphQL.

queryAPI
2
Sections
11
Cards

#Getting Started

Overview
  • An alternative approach to RESTful APIs
  • GraphQL is a query language for APIs
  • Easily describe the shape of the GraphQL API using clear shared terms.
  • Clients issue queries/mutations to read and update data
  • GraphQL syntax can express complex entity relations
  • Libraries to implement GraphQL in different languages

GraphQL {.link-arrow}

Schema
schemaGraphQL schema definition
queryRead and traverse data
mutationModify data or trigger an action
subscriptionRun a query when an event occurs
Built-in Scalar Types
IntSigned 32‐bit integer
FloatSigned double-precision floating-point value
StringUTF‐8 character sequence
Booleantrue or false
IDA Unique identifier
Type Definitions
scalarScalar Type
typeObject Type
interfaceInterface Type
unionUnion Type
enumEnum Type
inputInput Object Type
Type Modifiers
StringNullable String
String!Non-null String
[String]List of nullable Strings
[String]!Non-null list of nullable Strings
[String!]!Non-null list of non-null Strings
Input Arguments

Basic Input

type Query {
    users(limit: Int): [User]
}

Input with default value

type Query {
    users(limit: Int = 10): [User]
}

Input with multiple arguments

type Query {
    users(limit: Int, sort: String): [User]
}

Input with multiple arguments and default values

type Query {
    users(limit: Int = 10, sort: String): [User]
}
type Query {
    users(limit: Int, sort: String = "asc"): [User]
}
type Query {
    users(limit: Int = 10, sort: String = "asc"): [User]
}
Input Types
input ListUsersInput {
    limit: Int
    since_id: ID
}
type Mutation {
    users(params: ListUsersInput): [User]!
}
Custom Scalars
scalar Url
type User {
    name: String
    homepage: Url
}
Interfaces
interface Foo {
    is_foo: Boolean
}
interface Goo {
    is_goo: Boolean
}
type Bar implements Foo {
    is_foo: Boolean
    is_bar: Boolean
}
type Baz implements Foo, Goo {
    is_foo: Boolean
    is_goo: Boolean
    is_baz: Boolean
}

Object implementing one or more Interfaces

Unions
type Foo {
    name: String
}
type Bar {
    is_bar: String
}
union SingleUnion = Foo
union MultipleUnion = Foo | Bar
type Root {
    single: SingleUnion
    multiple: MultipleUnion
}

Union of one or more Objects

Enums
enum USER_STATE {
    NOT_FOUND
    ACTIVE
    INACTIVE
    SUSPENDED
}
type Root {
    stateForUser(userID: ID!): USER_STATE!
    users(state: USER_STATE, limit: Int = 10): [User]
}

#Also see