@JsonSubTypes(value = {
@JsonSubTypes.Type(name = "json", value = JSONDataSpec.class),
@JsonSubTypes.Type(name = "csv", value = CSVDataSpec.class),
@JsonSubTypes.Type(name = "tsv", value = DelimitedDataSpec.class)
})
only tsv can get the custom delimiter, which is a bit confusing (I would've expected both or none of csv and tsv to work with a custom delimiter). Maybe it's better to have a explicit format="custom" that uses DelimitedDataSpec and leave the "tsv" to use DelimitedDataSpec too for backward compatibility.
I couldn't find an explicit reference to this delimiter support difference between "csv" and "tsv"