Выглядит очень тяжеловесно. А где эти media types описывать? Как версионирование вести? Наверно для проекта, по водопаду, где всё полностью описывается сначала, сойдет...
Ты так говоришь, будто я когда-либо в жизни REST API пилил. Я даже видел-то, по-моему, чуть ли не один раз в жизни API, который действительно имеет право называться RESTful.
Версионирование, наверное, можно было бы вести с помощью заголовка Accept, с помощью ссылок на разные версии документа. Как ведется версионирование HTML/CSS/JS? Тут ведь прямая аналогия, по-моему. Media types описываются в доке, вот такой MIME type, вот такие поля.
Кстати, в оригинальной работе про REST API тоже упоминалась возможность расширения API путём использования чего-то типа JS. Т.е. по сути это как обобщение web browser. Теоретически могли бы быть какие-то универсальные клиенты, которые понимают большое количество media types.
Но на мой взгляд, это просто всё слишком сложно. Проще писать какие-то частные клиенты, где клиент и сервер понимают как примерно выглядит приложение.