Ситуация, которую вы описываете, довольно часто встречается в ситуациях, когда вам нужно создавать / обновлять сущности.
Я бы порекомендовал вам оставить ваши как есть.CreatedOn не имеет смысла, когда вы хотите обновить и Id, ну, он никогда не изменится после создания, поэтому, опять же, не имеет смысла иметь его в сущности изменения.Кроме того, есть вероятность, что вы предоставите свой Id в маршруте, так что действительному объекту он все равно не нужен:
PUT против:
www.somedomain.com/entity/id
объекту не нужно поле id какон приходит из URI.
Да, вы можете утверждать, что в итоге вы получите сущности с дублирующимися полями, но в то же время у вас будет чистый API, который имеет смысл, и это более важно, так как этото, что клиенты будут видеть и использовать.
Еще одна вещь, я за сохранение четкого соглашения о присвоении имен, так что если одна сущность будет InsertRequest , тогда другая будет UpdateRequest.