правил нет, есть лишь общие соображения по созданию удобного апи
примеры уверен вырваны из контекста, оба примера плохие.
Первый пример ориентируется на упрощение НО тогда если у тебя существует только ОДНО поле для категории (айди), тогда ты просто пишешь -> {"category": 1} (без айди в имени)
тоесть если и упрощать, так все упрощать, включая названия.
Но скорее всего у категории существует не только идентификатор но также еще и название, что не упростить в одном поле, значит все равно нужно выводить как во втором варианте обьект category, с двумя полями id, и name
просто же выводить обьект с одним вложенным полем - это ненужная избыточность, такое лучше заменить на первый вариант.
-------
по поводу: POST в одном формате, а при GET отдают в другом.
за такое просто в морду бить надо, тк это подразумевает разработчику необходимость создания 2х разных представлений для структур данных одного и тогоже обьекта.