7digital/SevenDigital.Api.Schema

Deprecated fields on releases and tracks

AnthonySteele opened this issue · 4 comments

On Release and Track, the Price and Formats fields are deprecated - they just mirror data from the primary package under Download. ReleaseDate will go the same way soon.

If I mark these fields with the [Obsolete] attribute then the xml deserialisation stops populating them, and they always contain null. We don't want that.

Suggest that we remove the Price and Formats fields from the Release and Track public DTOs entirely, or replace with read-only properties that forward to data from the primary package.

Consumers will see this upon updating to latest schema nuget package.

As the api responses must still contain the deprecated fields, these public dtos cannot then be used to generate releases and track, only to consume them. That's fine - we can use other internal dtos for generation.

Yup, agree in principle with replacing with read only properties that forward the deserialized. Is it possible to then mark those as [Obselete], so we can remove in the next release?

Do people use the schema to generate serialized data then?

  1. Should be possible to mark read-only props as [Obsolete], yes

  2. I will check, some apis that generate lists of releases probably use this. We will swap them over before updating this package.

👍 super

Just resurrecting this as I noticed Locker uses Release as part of LockerRelease, and it still uses ReleaseDate.

Therefore ReleaseDate on Release should not be marked Obselete, unless a whole new Schema object is created for the release in LockerRelease.