GraphQL mutations all begin with the mutation keyword:
mutation($accountNumber: ID!, $newBalance: Int!) { # ^^^^ here setAccountBalance(accountNumber: $accountNumber, newBalance: $newBalance) { # ... } } Operations that begin with mutation get special treatment by the GraphQL runtime: root fields are guaranteed to be executed sequentially. This way, the effect of a series of mutations is predictable.
Mutations are executed by a specific GraphQL object, Mutation. This object is defined like any other GraphQL object:
class Types::Mutation < Types::BaseObject # ... end Then, it must be attached to your schema with the mutation(...) configuration:
class Schema < GraphQL::Schema # ... mutation(Types::Mutation) end Now, whenever an incoming request uses the mutation keyword, it will go to Mutation.
See Mutation Classes for some helpers to define mutation fields.