Well, you could have one or the other and then just convert a schema to an Interface [1], or vice versa [2].
The reason I like schema-first is because a schema allows you to be way more strict about what's accepted in most cases, e.g. validating an entry via RegEx. It tends to make APIs safer and runtime errors more clear.