* This report was auto-generated by graphql-http
- 60 audits in total
- ✅ 46 pass
- 💡 6 notices (suggestions)
- ❗️ 7 warnings (optional)
- ❌ 1 errors (required)
4655MUST accept application/json and match the content-type47DESHOULD accept */* and use application/json for the content-type80D8SHOULD assume application/json content-type when accept is missing82A3MUST use utf-8 encoding when respondingBF61MUST accept utf-8 encoded request78D5MUST assume utf-8 in request if encoding is unspecified2C94MUST accept POST requests5A70MAY accept application/x-www-form-urlencoded formatted GET requests9C48MAY NOT allow executing mutations on GET requests9ABEMAY respond with 4xx status code if content-type is not supplied on POST requests03D4MUST accept application/json POST requestsA5BFMAY use 400 status code when request body is missing on POST423LMAY use 400 status code on missing {query} parameterLKJ0MAY use 400 status code on object {query} parameterLKJ3MAY use 400 status code on array {query} parameter34A2SHOULD allow string {query} parameter when accepting application/graphql-response+json13EEMUST allow string {query} parameter when accepting application/json6C00MAY use 400 status code on object {operationName} parameter6C03MAY use 400 status code on array {operationName} parameter8161SHOULD allow string {operationName} parameter when accepting application/graphql-response+jsonB8B3MUST allow string {operationName} parameter when accepting application/json94B0SHOULD allow null {variables} parameter when accepting application/graphql-response+json0220MUST allow null {variables} parameter when accepting application/json94B1SHOULD allow null {operationName} parameter when accepting application/graphql-response+json0221MUST allow null {operationName} parameter when accepting application/json4760MAY use 400 status code on string {variables} parameter4763MAY use 400 status code on array {variables} parameter2EA1SHOULD allow map {variables} parameter when accepting application/graphql-response+json28B9MUST allow map {variables} parameter when accepting application/jsonD6D5MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+json6A70MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/json58B0MAY use 400 status code on string {extensions} parameter58B1MAY use 400 status code on number {extensions} parameter58B2MAY use 400 status code on boolean {extensions} parameter58B3MAY use 400 status code on array {extensions} parameter428FSHOULD allow map {extensions} parameter when accepting application/graphql-response+json1B7AMUST allow map {extensions} parameter when accepting application/jsonB6DCMAY use 4xx or 5xx status codes on JSON parsing failureBCF8MAY use 400 status code on JSON parsing failure8764MAY use 4xx or 5xx status codes if parameters are invalid3E3AMAY use 400 status code if parameters are invalid7B9BSHOULD use a status code of 200 on variable coercion failure when accepting application/json865DSHOULD use 4xx or 5xx status codes on document parsing failure when accepting application/graphql-response+json556ASHOULD use 400 status code on document parsing failure when accepting application/graphql-response+json51FESHOULD use 4xx or 5xx status codes on document validation failure when accepting application/graphql-response+json74FFSHOULD use 400 status code on document validation failure when accepting application/graphql-response+json
LKJ1MAY use 400 status code on number {query} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "keep-alive": "timeout=72", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "61", "connection": "keep-alive" }, "body": { "errors": [ { "message": "Must provide document." } ], "data": null } }LKJ2MAY use 400 status code on boolean {query} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "keep-alive": "timeout=72", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "61", "connection": "keep-alive" }, "body": { "errors": [ { "message": "Must provide document." } ], "data": null } }6C01MAY use 400 status code on number {operationName} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "keep-alive": "timeout=72", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "69", "connection": "keep-alive" }, "body": { "errors": [ { "message": "Unknown operation named \"0\"." } ], "data": null } }6C02MAY use 400 status code on boolean {operationName} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "keep-alive": "timeout=72", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "73", "connection": "keep-alive" }, "body": { "errors": [ { "message": "Unknown operation named \"false\"." } ], "data": null } }4761MAY use 400 status code on number {variables} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "keep-alive": "timeout=72", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "31", "connection": "keep-alive" }, "body": { "data": { "__typename": "Query" } } }4762MAY use 400 status code on boolean {variables} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "keep-alive": "timeout=72", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "31", "connection": "keep-alive" }, "body": { "data": { "__typename": "Query" } } }
22EBSHOULD accept application/graphql-response+json and match the content-typeResponse header content-type does not contain application/graphql-response+json
{ "statusText": "OK", "status": 200, "headers": { "keep-alive": "timeout=72", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "31", "connection": "keep-alive" }, "body": { "data": { "__typename": "Query" } } }94B2SHOULD allow null {extensions} parameter when accepting application/graphql-response+jsonResponse status code is not 200
{ "statusText": "Bad Request", "status": 400, "headers": { "keep-alive": "timeout=72", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "69", "connection": "keep-alive" }, "body": { "errors": [ { "message": "body/extensions must be object" } ], "data": null } }572BSHOULD use 200 status code on document parsing failure when accepting application/jsonResponse status code is not 200
{ "statusText": "Bad Request", "status": 400, "headers": { "keep-alive": "timeout=72", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "116", "connection": "keep-alive" }, "body": { "errors": [ { "message": "Syntax Error: Expected Name, found .", "locations": [ { "line": 1, "column": 2 } ] } ], "data": null } }FDE2SHOULD use 200 status code on document validation failure when accepting application/jsonResponse status code is not 200
{ "statusText": "Bad Request", "status": 400, "headers": { "keep-alive": "timeout=72", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "135", "connection": "keep-alive" }, "body": { "errors": [ { "message": "Syntax Error: Invalid number, expected digit but got: \"f\".", "locations": [ { "line": 1, "column": 4 } ] } ], "data": null } }D586SHOULD not contain the data entry on document parsing failure when accepting application/graphql-response+jsonResponse body execution result data is not "undefined"
{ "statusText": "Bad Request", "status": 400, "headers": { "keep-alive": "timeout=72", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "116", "connection": "keep-alive" }, "body": { "errors": [ { "message": "Syntax Error: Expected Name, found .", "locations": [ { "line": 1, "column": 2 } ] } ], "data": null } }5E5BSHOULD not contain the data entry on document validation failure when accepting application/graphql-response+jsonResponse body execution result data is not "undefined"
{ "statusText": "Bad Request", "status": 400, "headers": { "keep-alive": "timeout=72", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "135", "connection": "keep-alive" }, "body": { "errors": [ { "message": "Syntax Error: Invalid number, expected digit but got: \"f\".", "locations": [ { "line": 1, "column": 4 } ] } ], "data": null } }86EESHOULD use a status code of 400 on variable coercion failure when accepting application/graphql-response+jsonResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "keep-alive": "timeout=72", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "210", "connection": "keep-alive" }, "body": { "errors": [ { "message": "Unknown type \"ID\".", "locations": [ { "line": 1, "column": 26 } ] }, { "message": "Variable \"$id\" is never used in operation \"CoerceFailure\".", "locations": [ { "line": 1, "column": 21 } ] } ], "data": null } }
0222MUST allow null {extensions} parameter when accepting application/jsonResponse status code is not 200
{ "statusText": "Bad Request", "status": 400, "headers": { "keep-alive": "timeout=72", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "69", "connection": "keep-alive" }, "body": { "errors": [ { "message": "body/extensions must be object" } ], "data": null } }