A framework for building self-describing model-based restful APIs