* This report was auto-generated by graphql-http
- 60 audits in total
- ✅ 46 pass
- 💡 10 notices (suggestions)
⚠️ 4 warnings (optional)
4655
MUST accept application/json and match the content-type47DE
SHOULD accept */* and use application/json for the content-type80D8
SHOULD assume application/json content-type when accept is missing82A3
MUST use utf-8 encoding when respondingBF61
MUST accept utf-8 encoded request78D5
MUST assume utf-8 in request if encoding is unspecified2C94
MUST accept POST requests9C48
MAY NOT allow executing mutations on GET requests9ABE
MAY respond with 4xx status code if content-type is not supplied on POST requests03D4
MUST accept application/json POST requestsA5BF
MAY use 400 status code when request body is missing on POST423L
MAY use 400 status code on missing {query} parameterLKJ1
MAY use 400 status code on number {query} parameterLKJ2
MAY use 400 status code on boolean {query} parameter34A2
SHOULD allow string {query} parameter when accepting application/graphql-response+json13EE
MUST allow string {query} parameter when accepting application/json6C00
MAY use 400 status code on object {operationName} parameter6C01
MAY use 400 status code on number {operationName} parameter6C02
MAY use 400 status code on boolean {operationName} parameter6C03
MAY use 400 status code on array {operationName} parameter8161
SHOULD allow string {operationName} parameter when accepting application/graphql-response+jsonB8B3
MUST allow string {operationName} parameter when accepting application/json94B0
SHOULD allow null {variables} parameter when accepting application/graphql-response+json0220
MUST allow null {variables} parameter when accepting application/json94B1
SHOULD allow null {operationName} parameter when accepting application/graphql-response+json0221
MUST allow null {operationName} parameter when accepting application/json94B2
SHOULD allow null {extensions} parameter when accepting application/graphql-response+json0222
MUST allow null {extensions} parameter when accepting application/json4760
MAY use 400 status code on string {variables} parameter4761
MAY use 400 status code on number {variables} parameter4762
MAY use 400 status code on boolean {variables} parameter2EA1
SHOULD allow map {variables} parameter when accepting application/graphql-response+json28B9
MUST allow map {variables} parameter when accepting application/json428F
SHOULD allow map {extensions} parameter when accepting application/graphql-response+json1B7A
MUST allow map {extensions} parameter when accepting application/jsonB6DC
MAY use 4xx or 5xx status codes on JSON parsing failureBCF8
MAY use 400 status code on JSON parsing failure8764
MAY use 4xx or 5xx status codes if parameters are invalid3E3A
MAY use 400 status code if parameters are invalid865D
SHOULD use 4xx or 5xx status codes on document parsing failure when accepting application/graphql-response+json556A
SHOULD use 400 status code on document parsing failure when accepting application/graphql-response+jsonD586
SHOULD not contain the data entry on document parsing failure when accepting application/graphql-response+json51FE
SHOULD use 4xx or 5xx status codes on document validation failure when accepting application/graphql-response+json74FF
SHOULD use 400 status code on document validation failure when accepting application/graphql-response+json5E5B
SHOULD not contain the data entry on document validation failure when accepting application/graphql-response+json86EE
SHOULD use a status code of 400 on variable coercion failure when accepting application/graphql-response+json
5A70
MAY accept application/x-www-form-urlencoded formatted GET requestsResponse status code is not 200
{ "statusText": "Method Not Allowed", "status": 405, "headers": { "keep-alive": "timeout=5", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "60", "connection": "keep-alive", "allow": "POST, OPTIONS" }, "body": { "errors": [ { "message": "Only `POST` requests are allowed." } ] } }
LKJ0
MAY use 400 status code on object {query} parameterResponse status code is not 400
{ "statusText": "Internal Server Error", "status": 500, "headers": { "keep-alive": "timeout=5", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "77", "connection": "keep-alive" }, "body": { "errors": [ { "message": "Body must be a string. Received: { obj: \"ect\" }." } ] } }
LKJ3
MAY use 400 status code on array {query} parameterResponse status code is not 400
{ "statusText": "Internal Server Error", "status": 500, "headers": { "keep-alive": "timeout=5", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "152", "connection": "keep-alive" }, "body": { "errors": [ { "message": "The \"data\" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received an instance of Array" } ] } }
4763
MAY use 400 status code on array {variables} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "keep-alive": "timeout=5", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "31", "connection": "keep-alive" }, "body": { "data": { "__typename": "Query" } } }
D6D5
MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+jsonResponse status code is not 200
{ "statusText": "Method Not Allowed", "status": 405, "headers": { "keep-alive": "timeout=5", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "60", "connection": "keep-alive", "allow": "POST, OPTIONS" }, "body": { "errors": [ { "message": "Only `POST` requests are allowed." } ] } }
6A70
MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/jsonResponse status code is not 200
{ "statusText": "Method Not Allowed", "status": 405, "headers": { "keep-alive": "timeout=5", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "60", "connection": "keep-alive", "allow": "POST, OPTIONS" }, "body": { "errors": [ { "message": "Only `POST` requests are allowed." } ] } }
58B0
MAY use 400 status code on string {extensions} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "keep-alive": "timeout=5", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "31", "connection": "keep-alive" }, "body": { "data": { "__typename": "Query" } } }
58B1
MAY use 400 status code on number {extensions} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "keep-alive": "timeout=5", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "31", "connection": "keep-alive" }, "body": { "data": { "__typename": "Query" } } }
58B2
MAY use 400 status code on boolean {extensions} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "keep-alive": "timeout=5", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "31", "connection": "keep-alive" }, "body": { "data": { "__typename": "Query" } } }
58B3
MAY use 400 status code on array {extensions} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "keep-alive": "timeout=5", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "31", "connection": "keep-alive" }, "body": { "data": { "__typename": "Query" } } }
22EB
SHOULD 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=5", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "31", "connection": "keep-alive" }, "body": { "data": { "__typename": "Query" } } }
572B
SHOULD 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=5", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "104", "connection": "keep-alive" }, "body": { "errors": [ { "message": "Syntax Error: Expected Name, found .", "locations": [ { "line": 1, "column": 2 } ] } ] } }
FDE2
SHOULD 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=5", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "123", "connection": "keep-alive" }, "body": { "errors": [ { "message": "Syntax Error: Invalid number, expected digit but got: \"f\".", "locations": [ { "line": 1, "column": 4 } ] } ] } }
7B9B
SHOULD use a status code of 200 on variable coercion failure when accepting application/jsonResponse status code is not 200
{ "statusText": "Bad Request", "status": 400, "headers": { "keep-alive": "timeout=5", "date": "", "content-type": "application/json; charset=utf-8", "content-length": "126", "connection": "keep-alive" }, "body": { "errors": [ { "message": "Variable \"$id\" is never used in operation \"CoerceFailure\".", "locations": [ { "line": 1, "column": 21 } ] } ] } }