An input type is an object you pass in as an argument, while a regular object type is what the server returns. You declare an input type with the input keyword instead of type.
The two cannot be mixed. An input type's fields can only be scalars, enums or other input types, and lists of those. Input fields also cannot take arguments. An object type's fields, by contrast, can return other object types and can each have a resolver.
Input types are used for arguments in mutations and queries. They group many values into one structured argument. A common pattern is one input per mutation. CreateUserInput has required fields, while UpdateUserInput has optional ones, so a client sends only the fields it changes.
input CreateUserInput {
name: String!
email: String!
age: Int
}
input UpdateUserInput {
name: String
email: String
age: Int
}
type Mutation {
createUser(input: CreateUserInput!): User!
updateUser(id: ID!, input: UpdateUserInput!): User!
}
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
The diagram below the answer is the concept . Jump to it ↓