README.md
January 23, 2025 ยท View on GitHub
* This report was auto-generated by graphql-http
GraphQL over HTTP audit report
- 60 audits in total
- โ 29 pass
- ๐ก 18 notices (suggestions)
- โ๏ธ 13 warnings (optional)
Passing
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 POST13EEMUST allow string {query} parameter when accepting application/jsonB8B3MUST allow string {operationName} parameter when accepting application/json0220MUST allow null {variables} parameter when accepting application/json0221MUST allow null {operationName} parameter when accepting application/json0222MUST allow null {extensions} parameter when accepting application/json4760MAY use 400 status code on string {variables} parameter4761MAY use 400 status code on number {variables} parameter4762MAY use 400 status code on boolean {variables} parameter28B9MUST allow map {variables} parameter when accepting application/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 failure572BSHOULD use 200 status code on document parsing failure when accepting application/jsonFDE2SHOULD use 200 status code on document validation failure when accepting application/json7B9BSHOULD 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+json51FESHOULD use 4xx or 5xx status codes on document validation failure when accepting application/graphql-response+json
Notices
The server MAY support these, but are truly optional. These are suggestions following recommended conventions.423LMAY use 400 status code on missing {query} parameterResponse status code is not 400
{ "statusText": "Not Acceptable", "status": 406, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "text/plain;charset=UTF-8", "content-length": "14" }, "body": "Not Acceptable" } LKJ0MAY use 400 status code on object {query} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "application/json", "content-length": "45", "content-encoding": "gzip" }, "body": { "errors": [ {} ] } } LKJ1MAY use 400 status code on number {query} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "application/json", "content-length": "45", "content-encoding": "gzip" }, "body": { "errors": [ {} ] } } LKJ2MAY use 400 status code on boolean {query} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "application/json", "content-length": "45", "content-encoding": "gzip" }, "body": { "errors": [ {} ] } } LKJ3MAY use 400 status code on array {query} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "application/json", "content-length": "45", "content-encoding": "gzip" }, "body": { "errors": [ {} ] } } 6C00MAY use 400 status code on object {operationName} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "application/json", "content-length": "105", "content-encoding": "gzip" }, "body": { "errors": [ { "message": "Unknown operation named \"[object Object]\"." } ] } } 6C01MAY use 400 status code on number {operationName} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "application/json", "content-length": "95", "content-encoding": "gzip" }, "body": { "errors": [ { "message": "Unknown operation named \"0\"." } ] } } 6C02MAY use 400 status code on boolean {operationName} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "application/json", "content-length": "98", "content-encoding": "gzip" }, "body": { "errors": [ { "message": "Unknown operation named \"false\"." } ] } } 6C03MAY use 400 status code on array {operationName} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "application/json", "content-length": "98", "content-encoding": "gzip" }, "body": { "errors": [ { "message": "Unknown operation named \"array\"." } ] } } 4763MAY use 400 status code on array {variables} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "application/json", "content-length": "59", "content-encoding": "gzip" }, "body": { "data": { "__typename": "Query" } } } D6D5MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+jsonResponse status code is not 200
{ "statusText": "Not Acceptable", "status": 406, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "text/plain;charset=UTF-8", "content-length": "14" }, "body": "Not Acceptable" } 6A70MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/jsonResponse body execution result has a property "errors"
{ "statusText": "OK", "status": 200, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "application/json", "content-length": "163", "content-encoding": "gzip" }, "body": { "errors": [ { "message": "Variable \"$name\" of required type \"String!\" was not provided.", "locations": [ { "line": 1, "column": 12 } ] } ] } } 58B0MAY use 400 status code on string {extensions} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "application/json", "content-length": "59", "content-encoding": "gzip" }, "body": { "data": { "__typename": "Query" } } } 58B1MAY use 400 status code on number {extensions} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "application/json", "content-length": "59", "content-encoding": "gzip" }, "body": { "data": { "__typename": "Query" } } } 58B2MAY use 400 status code on boolean {extensions} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "application/json", "content-length": "59", "content-encoding": "gzip" }, "body": { "data": { "__typename": "Query" } } } 58B3MAY use 400 status code on array {extensions} parameterResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "application/json", "content-length": "59", "content-encoding": "gzip" }, "body": { "data": { "__typename": "Query" } } } 8764MAY use 4xx or 5xx status codes if parameters are invalidResponse status is not between 400 and 599
{ "statusText": "OK", "status": 200, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "application/json", "content-length": "45", "content-encoding": "gzip" }, "body": { "errors": [ {} ] } } 3E3AMAY use 400 status code if parameters are invalidResponse status code is not 400
{ "statusText": "OK", "status": 200, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "application/json", "content-length": "45", "content-encoding": "gzip" }, "body": { "errors": [ {} ] } }
Warnings
The server SHOULD support these, but is not required.22EBSHOULD accept application/graphql-response+json and match the content-typeResponse status code is not 200
{ "statusText": "Not Acceptable", "status": 406, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "text/plain;charset=UTF-8", "content-length": "14" }, "body": "Not Acceptable" } 34A2SHOULD allow string {query} parameter when accepting application/graphql-response+jsonResponse status code is not 200
{ "statusText": "Not Acceptable", "status": 406, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "text/plain;charset=UTF-8", "content-length": "14" }, "body": "Not Acceptable" } 8161SHOULD allow string {operationName} parameter when accepting application/graphql-response+jsonResponse status code is not 200
{ "statusText": "Not Acceptable", "status": 406, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "text/plain;charset=UTF-8", "content-length": "14" }, "body": "Not Acceptable" } 94B0SHOULD allow null {variables} parameter when accepting application/graphql-response+jsonResponse status code is not 200
{ "statusText": "Not Acceptable", "status": 406, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "text/plain;charset=UTF-8", "content-length": "14" }, "body": "Not Acceptable" } 94B1SHOULD allow null {operationName} parameter when accepting application/graphql-response+jsonResponse status code is not 200
{ "statusText": "Not Acceptable", "status": 406, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "text/plain;charset=UTF-8", "content-length": "14" }, "body": "Not Acceptable" } 94B2SHOULD allow null {extensions} parameter when accepting application/graphql-response+jsonResponse status code is not 200
{ "statusText": "Not Acceptable", "status": 406, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "text/plain;charset=UTF-8", "content-length": "14" }, "body": "Not Acceptable" } 2EA1SHOULD allow map {variables} parameter when accepting application/graphql-response+jsonResponse status code is not 200
{ "statusText": "Not Acceptable", "status": 406, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "text/plain;charset=UTF-8", "content-length": "14" }, "body": "Not Acceptable" } 428FSHOULD allow map {extensions} parameter when accepting application/graphql-response+jsonResponse status code is not 200
{ "statusText": "Not Acceptable", "status": 406, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "text/plain;charset=UTF-8", "content-length": "14" }, "body": "Not Acceptable" } 556ASHOULD use 400 status code on document parsing failure when accepting application/graphql-response+jsonResponse status code is not 400
{ "statusText": "Not Acceptable", "status": 406, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "text/plain;charset=UTF-8", "content-length": "14" }, "body": "Not Acceptable" } D586SHOULD not contain the data entry on document parsing failure when accepting application/graphql-response+jsonResponse body is not valid JSON
{ "statusText": "Not Acceptable", "status": 406, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "text/plain;charset=UTF-8", "content-length": "14" }, "body": null } 74FFSHOULD use 400 status code on document validation failure when accepting application/graphql-response+jsonResponse status code is not 400
{ "statusText": "Not Acceptable", "status": 406, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "text/plain;charset=UTF-8", "content-length": "14" }, "body": "Not Acceptable" } 5E5BSHOULD not contain the data entry on document validation failure when accepting application/graphql-response+jsonResponse body is not valid JSON
{ "statusText": "Not Acceptable", "status": 406, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "text/plain;charset=UTF-8", "content-length": "14" }, "body": null } 86EESHOULD use a status code of 400 on variable coercion failure when accepting application/graphql-response+jsonResponse status code is not 400
{ "statusText": "Not Acceptable", "status": 406, "headers": { "vary": "Accept-Encoding", "date": "", "content-type": "text/plain;charset=UTF-8", "content-length": "14" }, "body": "Not Acceptable" }