Linter rulesGraphQLinput-output-types

input-output-types

Since 0.9.0

This rule checks that arguments and input fields have input types, and fields have output types, as the GraphQL specification requires.

Rule Details

The rule reports the issues of the validation rule of the same name, with the messages of graphql-js. A document that breaks it is rejected by GraphQL servers and tools, so the rule should stay enabled with the error severity.

Configuration

This rule has no options.

version: "1.0"
commands:
  lint:
    graphql:
      rules:
        input-output-types: warning

The rule can be disabled for a node and everything nested in it with an # apigenie-lint-disable input-output-types comment on the node, or for a whole file with the comment at the top of the file, separated from the first definition by a blank line. It applies to definitions.

Examples

Good.

type Query { users(filter: UserFilter): [User] }
input UserFilter { name: String }
type User { id: ID! }

Bad. The linter reports The type of Query.users(filter:) must be Input Type but got: User..

type Query { users(filter: User): [User] }
type User { id: ID! }

Further reading