GraphQL Directives

Using and defining directives

@include

query GetUser($withEmail: Boolean!) {
    user(id: 1) {
        name
        email @include(if: $withEmail)
    }
} # conditionally include field

@skip

query GetUser($skipEmail: Boolean!) {
    user(id: 1) {
        name
        email @skip(if: $skipEmail)
    }
} # conditionally skip field

@deprecated

type User {
    name: String!
    oldField: String @deprecated(reason: "Use newField instead")
} # mark field as deprecated

Custom Directive

directive @auth(requires: Role!) on FIELD_DEFINITION
type Query {
    adminData: String @auth(requires: ADMIN)
} # define custom directive