Whether the server accepted a GraphQL mutation, read from its answer — the
core's one reading of a mutation's refusal (GraphQL refuses in an HTTP 200).
The root field's value decides: a value that is neither null nor false
is the accepted mutation, even beside errors (GraphQL reports non-fatal
errors next to the data); a null or false root field is the refusal, with
the answer's errors (empty when it carries none). An answer without the
root field at all is not a mutation answer: GraphqlRootFieldMissingError.
The root field is found as graphqlRootField finds it (its exact name
or the server's alias). The brick that sent the mutation names its own
refusal from the verdict.
The one reader of a mutation's acceptance: it takes the response body, which
is parsed the way decodeGraphqlResponse parses it, so a deferred
stream's patches are merged into the payload the verdict reads. No other
path reads a mutation's verdict.
Whether the server accepted a GraphQL mutation, read from its answer — the core's one reading of a mutation's refusal (GraphQL refuses in an HTTP 200). The root field's value decides: a value that is neither
nullnorfalseis the accepted mutation, even besideerrors(GraphQL reports non-fatal errors next to the data); anullorfalseroot field is the refusal, with the answer'serrors(empty when it carries none). An answer without the root field at all is not a mutation answer: GraphqlRootFieldMissingError. The root field is found as graphqlRootField finds it (its exact name or the server's alias). The brick that sent the mutation names its own refusal from the verdict.The one reader of a mutation's acceptance: it takes the response body, which is parsed the way decodeGraphqlResponse parses it, so a deferred stream's patches are merged into the payload the verdict reads. No other path reads a mutation's verdict.