Skip to content

GraphQL – Schema generated remove not null indication when in an array

In a custom module in etc/schema.graphqls, I declared my query :

type Query {
    getAvailableCountries: [Country!]
    @resolver(class: "\Vendor\Module\Model\Resolver\getAvailableCountries")
    @doc(description: "Get list of country allowed on magento's side.")
}

There is my resolver code :

public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null)
{
        $allowedCountries = $this->scopeConfig->getValue(
            AllowedCountries::ALLOWED_COUNTRIES_PATH
        );

        if (empty($allowedCountries)) {
            return [];
        }

        $allowedCountries = explode(",", $allowedCountries);

        $return = [];

        foreach ($allowedCountries as $countryCode) {
            $return[] = [
                "two_letter_abbreviation" => $countryCode,
                "full_name_english" => $this->translate->getCountryTranslation($countryCode, "en_US")
            ];
        }

        return $return;
    }

In the schema.graphql generated I have : getAvailableCountries: [Country]
Why is the ! not kept ?

I also tried [Country!]! and it’s becoming [Country]!

Is there a way to force it to be : [Country!]
the type Country is coming from Magento_DirectoryGraphQl but i also tried to declare my own type with only the two field i want and it’s the same, the ! is still removed