A list of validation errors (not all of them) that can be returned when validating a subgraph, in isolation.
The root query type must be accessible.
Example error message:
Type "Query" is @inaccessible but is the root query type, which must be in the API schema.
Example error message:
Invalid use of @shareable on field "Product.name": only object type fields can be marked with @shareable
Example error messages:
Cannot use @requires on field "Product.price" of parent type "Product": @requires is not yet supported within interfaces.
On field "Product.price", for @requires(fields: "<value>"): Invalid value for argument "fields": must be a string.
On field "Product.price", for @requires(fields: "<value>"): <error message>
On field "Product.price", for @requires(fields: "<value>"): Cannot query field "uuid" on type "Product" (if the field is defined in another subgraph, you need to add it to this subgraph with @external).
On field "Product.price", for @requires(fields: "<value>"): Unknown directive "@<directive-name>" in selection
On field "Product.price", for @requires(fields: "<value>"): cannot have directive applications in the @requires(fields:) argument but found @<directive-name>.
On field "Product.price", for @requires(fields: "<value>"): field "Product.uuid" should not be part of a @requires since it is already provided by this subgraph (it is not marked @external)
Invalid @provides directive on field "Price.price": field has type "Float!" which is not a Composite Type
Cannot use @provides on field "Product.price" of parent type "Product": @provides is not yet supported within interfaces
On field "Product.price", for @provides(fields: "<value>"): Invalid value for argument "fields": must be a string.
On field "Product.price", for @provides(fields: "<value>"): <error message>
On field "Product.price", for @provides(fields: "<value>"): Invalid empty selection set for field "Price.details" of non-leaf type "Price"
On field "Product.price", for @provides(fields: "<value>"): Cannot query field "details" on type "Price" (if the field is defined in another subgraph, you need to add it to this subgraph with @external).
On field "Product.price", for @provides(fields: "<value>"): Unknown directive "@<directive-name>" in selection
On field "Product.price", for @provides(fields: "<value>"): cannot have directive applications in the @provides(fields:) argument but found @<directive-name>.
On field "Product.price", for @provides(fields: "<value>"): field "Price.details" cannot be included because it has arguments (fields with argument are not allowed in @provides)
On field "Product.price", for @provides(fields: "<value>"): field "Price.details" should not be part of a @provides since it is already provided by this subgraph (it is not marked @external)
On field "Product.price", for @provides(fields: "<value>"): field "Price.details" should not be part of a @provides since it is already "effectively" provided by this subgraph (while it is marked @external, it is a @key field of an extension type, which are not internally considered external for historical/backward compatibility reasons)
Cannot use @key on interface "Node": @key is not yet supported on interfaces
On type "Product", for @key(fields: "<value>"): Invalid value for argument "fields": must be a string.
On type "Product", for @key(fields: "<value>"): <error-message>
On type "Product", for @key(fields: "<value>"): Cannot query field "name" on type "Product" (the field should either be added to this subgraph or, if it should not be resolved by this subgraph, you need to add it to this subgraph with @external).
On type "Product", for @key(fields: "<value>"): Unknown directive "@<directive-name>"
On type "Product", for @key(fields: "<value>"): cannot have directive applications in the @key(fields:) argument but found @<directive-name>.
On type "Product", for @key(fields: "<value>"): field Product.name cannot be included because it has arguments (fields with argument are not allowed in @key)
On type "Product", for @key(fields: "<value>"): field "Product.price" is a Interface type which is not allowed in @key
Key @key(fields: "<value>") on interface type "Product" is missing on implementation type "<type-name>".
It applies mostly to @tag
and @inaccessible
directives. They cannot overlap with @external
fields.
Cannot apply merged directive <directive> to external field "Product.price"
Field "Product.name" is marked @external but is not used in any federation directive (@key, @provides, @requires) or to satisfy an interface; the field declaration has no use and should be removed (or the field should not be @external).