Skip to content

noRootType

PropertyValue
Config namenoRootType
Default severity
ContextSchema
In recommendedNo

Disallows specific root type definitions (Query, Mutation, Subscription) from appearing in the schema. This is useful for enforcing architectural constraints — for example, a read-only API might disallow Mutation, or a project that doesn’t use real-time features might disallow Subscription.

This rule requires the disallow option to be configured. Without it, no diagnostics are produced.

# ❌ Bad — Mutation root type is disallowed
type Query {
users: [User!]!
}
type Mutation {
deleteUser(id: ID!): Boolean
}
# ✅ Good — only allowed root types are defined
type Query {
users: [User!]!
}
OptionTypeDefaultDescription
disallowstring[][]Which root types to disallow. Valid values: query, mutation, subscription
# Disallow mutations (read-only API)
extensions:
graphql-analyzer:
lint:
rules:
noRootType: [error, { disallow: ["mutation"] }]
# Disallow subscriptions
extensions:
graphql-analyzer:
lint:
rules:
noRootType: [error, { disallow: ["subscription"] }]
# Disallow both mutations and subscriptions
extensions:
graphql-analyzer:
lint:
rules:
noRootType:
severity: error
options:
disallow: ["mutation", "subscription"]