desc('GraphQL Endpoint') ->groups(['api', 'graphql']) ->label('scope', 'public') ->action( function () use ($request, $response, $utopia) { foreach ($utopia->getRoutes() as $method => $routes) { var_dump($method); foreach ($routes as $key => $route) { var_dump($key); } } $userType = new ObjectType([ 'name' => 'User', 'fields' => [ 'name' => [ 'type' => Type::string(), ], ], ]); $queryType = new ObjectType([ 'name' => 'Query', 'fields' => [ 'echo' => [ 'type' => Type::string(), 'args' => [ 'message' => ['type' => Type::string()], ], 'resolve' => function ($rootValue, $args) { return $rootValue['prefix'] . $args['message']; } ], 'users' => [ 'type' => Type::listOf($userType), //'type' => $userType, 'args' => [ 'message' => ['type' => Type::string()], ], 'resolve' => function ($rootValue, $args) { return ['name' => 'Eldad Fux']; return [ ['name' => 'Eldad Fux'], ['name' => 'Sharon Kapon'], ]; } ], ], ]); $mutationType = new ObjectType([ 'name' => 'Mutation', 'fields' => [ 'sum' => [ 'type' => Type::int(), 'args' => [ 'x' => ['type' => Type::int()], 'y' => ['type' => Type::int()], ], 'resolve' => function ($calc, $args) { return $args['x'] + $args['y']; }, ], ], ]); $schema = new Schema([ 'query' => $queryType, 'mutation' => $mutationType, ]); $query = $request->getPayload('query', ''); $variables = $request->getPayload('variables', null); try { $rootValue = []; $result = GraphQL::executeQuery($schema, $query, $rootValue, null, $variables); $output = $result->toArray(); } catch (\Exception $error) { $output = [ 'errors' => [ [ 'message' => $error->getMessage().'xxx', 'code' => $error->getCode(), 'file' => $error->getFile(), 'line' => $error->getLine(), 'trace' => $error->getTrace(), ] ] ]; } $response->json($output); echo "\n"; //TODO REMOVE THIS } );