From 62c2d41c19cbaf5befe18e2927bfffe599aaaa68 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan Date: Tue, 3 Mar 2026 17:56:12 +0530 Subject: [PATCH] added graphql fix --- app/controllers/api/graphql.php | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/app/controllers/api/graphql.php b/app/controllers/api/graphql.php index 2d0a840bd6..7717da8981 100644 --- a/app/controllers/api/graphql.php +++ b/app/controllers/api/graphql.php @@ -115,13 +115,16 @@ Http::post('/v1/graphql/mutation') ->inject('promiseAdapter') ->action(function (Request $request, Response $response, GQLSchema $schema, Adapter $promiseAdapter) { $query = $request->getParams(); + $type = $request->getHeader('content-type', ''); - if ($request->getHeader('x-sdk-graphql') == 'true') { - $query = $query['query']; + if (empty($query) && \str_starts_with($type, 'application/json')) { + $rawPayload = $request->getRawPayload(); + $decoded = \json_decode($rawPayload, true); + if (\is_array($decoded)) { + $query = $decoded; + } } - $type = $request->getHeader('content-type'); - if (\str_starts_with($type, 'application/graphql')) { $query = parseGraphql($request); } @@ -130,6 +133,10 @@ Http::post('/v1/graphql/mutation') $query = parseMultipart($query, $request); } + if ($request->getHeader('x-sdk-graphql') == 'true' && isset($query['query'])) { + $query = $query['query']; + } + $output = execute($schema, $promiseAdapter, $query); $response @@ -166,13 +173,16 @@ Http::post('/v1/graphql') ->inject('promiseAdapter') ->action(function (Request $request, Response $response, GQLSchema $schema, Adapter $promiseAdapter) { $query = $request->getParams(); + $type = $request->getHeader('content-type', ''); - if ($request->getHeader('x-sdk-graphql') == 'true') { - $query = $query['query']; + if (empty($query) && \str_starts_with($type, 'application/json')) { + $rawPayload = $request->getRawPayload(); + $decoded = \json_decode($rawPayload, true); + if (\is_array($decoded)) { + $query = $decoded; + } } - $type = $request->getHeader('content-type'); - if (\str_starts_with($type, 'application/graphql')) { $query = parseGraphql($request); } @@ -181,6 +191,10 @@ Http::post('/v1/graphql') $query = parseMultipart($query, $request); } + if ($request->getHeader('x-sdk-graphql') == 'true' && isset($query['query'])) { + $query = $query['query']; + } + $output = execute($schema, $promiseAdapter, $query); $response