I want to have an API as such:
public class RelayController : ApiController
{
// POST api/values
public void Post([FromBody]IDataRelayPackage package
You are trying to deserialise to an interface. The serialiser won't know what type to instantiate unless it is told.
Take a look at TypeNameHandling option Posting a collection of subclasses
Or look at creating a custom JsonConverter. Take a look at this question How to implement custom JsonConverter in JSON.NET to deserialize a List of base class objects?