Довольно часто значения enum должны быть написаны маленькими буквами, но Kotlin ожидает большими. Поэтому такое поведение нужно дополнительно настраивать.

Если нужно использовать enum в теле запроса или ответа, то это выглядит так:

import com.fasterxml.jackson.annotation.JsonValue

enum class SampleEnum(@field:JsonValue val value: String) {
    VALUE_1("value_1"),
    OTHER("other"),
}

(вместо field можно так же get использовать; надеюсь, что в каком-то будущем такой префикс будет вообще не нужен)

Но если этот же перечисление попробовать использовать в запросе (query params), то так не сработает. Почему? Для тела запроса и ответа используется JSON (и соответствующая библиотека), а для query params используется Spring-специфичный механизм преобразования.

Тем не менее, можно написать универсальный преобразователь для enum (идея народная, реализация на Kotlin моя):

@Component
class JacksonEnumConverter(private val mapper: ObjectMapper): GenericConverter {
    private val types = setOf(
        ConvertiblePair(String::class.java, Enum::class.java),
    )

	override fun getConvertibleTypes() = types

	override fun convert(
	    source: Any?,
	    sourceType: TypeDescriptor,
	    targetType: TypeDescriptor,
	): Any? {
	    if (source == null) return null
	    try {
	        return mapper.readValue("\"$source\"", targetType.type)
	    } catch (e: IOException) {
	        throw IllegalArgumentException(
	            "Conversion failed for $source to ${targetType.name}",
	            e
	        )
	    }
	}
}