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 requests5A70 MAY accept application/x-www-form-urlencoded formatted GET 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 POST13EE MUST allow string {query} parameter when accepting application/jsonB8B3 MUST allow string {operationName} parameter when accepting application/json0220 MUST allow null {variables} parameter when accepting application/json0221 MUST allow null {operationName} parameter when accepting application/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} parameter28B9 MUST allow map {variables} parameter when accepting application/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 failure572B SHOULD use 200 status code on document parsing failure when accepting application/jsonFDE2 SHOULD use 200 status code on document validation failure when accepting application/json7B9B SHOULD use a status code of 200 on variable coercion failure when accepting application/json865D SHOULD use 4xx or 5xx status codes 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+json423L MAY use 400 status code on missing {query} parameter
{
"statusText": "Not Acceptable",
"status": 406,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "text/plain;charset=UTF-8",
"content-length": "14"
},
"body": "Not Acceptable"
}
LKJ0 MAY use 400 status code on object {query} parameter
{
"statusText": "OK",
"status": 200,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "application/json",
"content-length": "45",
"content-encoding": "gzip"
},
"body": {
"errors": [
{}
]
}
}
LKJ1 MAY use 400 status code on number {query} parameter
{
"statusText": "OK",
"status": 200,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "application/json",
"content-length": "45",
"content-encoding": "gzip"
},
"body": {
"errors": [
{}
]
}
}
LKJ2 MAY use 400 status code on boolean {query} parameter
{
"statusText": "OK",
"status": 200,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "application/json",
"content-length": "45",
"content-encoding": "gzip"
},
"body": {
"errors": [
{}
]
}
}
LKJ3 MAY use 400 status code on array {query} parameter
{
"statusText": "OK",
"status": 200,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "application/json",
"content-length": "45",
"content-encoding": "gzip"
},
"body": {
"errors": [
{}
]
}
}
6C00 MAY use 400 status code on object {operationName} parameter
{
"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]\"."
}
]
}
}
6C01 MAY use 400 status code on number {operationName} parameter
{
"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\"."
}
]
}
}
6C02 MAY use 400 status code on boolean {operationName} parameter
{
"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\"."
}
]
}
}
6C03 MAY use 400 status code on array {operationName} parameter
{
"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\"."
}
]
}
}
4763 MAY use 400 status code on array {variables} parameter
{
"statusText": "OK",
"status": 200,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "application/json",
"content-length": "59",
"content-encoding": "gzip"
},
"body": {
"data": {
"__typename": "Query"
}
}
}
D6D5 MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+json
{
"statusText": "Not Acceptable",
"status": 406,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "text/plain;charset=UTF-8",
"content-length": "14"
},
"body": "Not Acceptable"
}
6A70 MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/json
{
"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
}
]
}
]
}
}
58B0 MAY use 400 status code on string {extensions} parameter
{
"statusText": "OK",
"status": 200,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "application/json",
"content-length": "59",
"content-encoding": "gzip"
},
"body": {
"data": {
"__typename": "Query"
}
}
}
58B1 MAY use 400 status code on number {extensions} parameter
{
"statusText": "OK",
"status": 200,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "application/json",
"content-length": "59",
"content-encoding": "gzip"
},
"body": {
"data": {
"__typename": "Query"
}
}
}
58B2 MAY use 400 status code on boolean {extensions} parameter
{
"statusText": "OK",
"status": 200,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "application/json",
"content-length": "59",
"content-encoding": "gzip"
},
"body": {
"data": {
"__typename": "Query"
}
}
}
58B3 MAY use 400 status code on array {extensions} parameter
{
"statusText": "OK",
"status": 200,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "application/json",
"content-length": "59",
"content-encoding": "gzip"
},
"body": {
"data": {
"__typename": "Query"
}
}
}
8764 MAY use 4xx or 5xx status codes if parameters are invalid
{
"statusText": "OK",
"status": 200,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "application/json",
"content-length": "45",
"content-encoding": "gzip"
},
"body": {
"errors": [
{}
]
}
}
3E3A MAY use 400 status code if parameters are invalid
{
"statusText": "OK",
"status": 200,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "application/json",
"content-length": "45",
"content-encoding": "gzip"
},
"body": {
"errors": [
{}
]
}
}
22EB SHOULD accept application/graphql-response+json and match the content-type
{
"statusText": "Not Acceptable",
"status": 406,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "text/plain;charset=UTF-8",
"content-length": "14"
},
"body": "Not Acceptable"
}
34A2 SHOULD allow string {query} parameter when accepting application/graphql-response+json
{
"statusText": "Not Acceptable",
"status": 406,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "text/plain;charset=UTF-8",
"content-length": "14"
},
"body": "Not Acceptable"
}
8161 SHOULD allow string {operationName} parameter when accepting application/graphql-response+json
{
"statusText": "Not Acceptable",
"status": 406,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "text/plain;charset=UTF-8",
"content-length": "14"
},
"body": "Not Acceptable"
}
94B0 SHOULD allow null {variables} parameter when accepting application/graphql-response+json
{
"statusText": "Not Acceptable",
"status": 406,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "text/plain;charset=UTF-8",
"content-length": "14"
},
"body": "Not Acceptable"
}
94B1 SHOULD allow null {operationName} parameter when accepting application/graphql-response+json
{
"statusText": "Not Acceptable",
"status": 406,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "text/plain;charset=UTF-8",
"content-length": "14"
},
"body": "Not Acceptable"
}
94B2 SHOULD allow null {extensions} parameter when accepting application/graphql-response+json
{
"statusText": "Not Acceptable",
"status": 406,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "text/plain;charset=UTF-8",
"content-length": "14"
},
"body": "Not Acceptable"
}
2EA1 SHOULD allow map {variables} parameter when accepting application/graphql-response+json
{
"statusText": "Not Acceptable",
"status": 406,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "text/plain;charset=UTF-8",
"content-length": "14"
},
"body": "Not Acceptable"
}
428F SHOULD allow map {extensions} parameter when accepting application/graphql-response+json
{
"statusText": "Not Acceptable",
"status": 406,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "text/plain;charset=UTF-8",
"content-length": "14"
},
"body": "Not Acceptable"
}
556A SHOULD use 400 status code on document parsing failure when accepting application/graphql-response+json
{
"statusText": "Not Acceptable",
"status": 406,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "text/plain;charset=UTF-8",
"content-length": "14"
},
"body": "Not Acceptable"
}
D586 SHOULD not contain the data entry on document parsing failure when accepting application/graphql-response+json
{
"statusText": "Not Acceptable",
"status": 406,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "text/plain;charset=UTF-8",
"content-length": "14"
},
"body": null
}
74FF SHOULD use 400 status code on document validation failure when accepting application/graphql-response+json
{
"statusText": "Not Acceptable",
"status": 406,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "text/plain;charset=UTF-8",
"content-length": "14"
},
"body": "Not Acceptable"
}
5E5B SHOULD not contain the data entry on document validation failure when accepting application/graphql-response+json
{
"statusText": "Not Acceptable",
"status": 406,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "text/plain;charset=UTF-8",
"content-length": "14"
},
"body": null
}
86EE SHOULD use a status code of 400 on variable coercion failure when accepting application/graphql-response+json
{
"statusText": "Not Acceptable",
"status": 406,
"headers": {
"vary": "Accept-Encoding",
"date": "",
"content-type": "text/plain;charset=UTF-8",
"content-length": "14"
},
"body": "Not Acceptable"
}