Features
- Support for advisory upload.
[4012](https://pulp.plan.io/issues/4012)
- Ensure there are no advisories with the same id in a repo version.
In case where there are two advisories with the same id, either
one of them is chosen, or they are merged, or there is an error raised
if there is no way to resolve advisory conflict.
[4295](https://pulp.plan.io/issues/4295)
- No duplicated content can be present in a repository version.
[4898](https://pulp.plan.io/issues/4898)
- Added sync and publish support for comps.xml types.
[5495](https://pulp.plan.io/issues/5495)
- Add/remove RPMs when a repo's modulemd gets added/removed
[5526](https://pulp.plan.io/issues/5526)
- Make repositories "typed". Repositories now live at a detail endpoint. Sync is performed by POSTing to {repo_href}/sync/ remote={remote_href}.
[5625](https://pulp.plan.io/issues/5625)
- Adding sub_repo field to RpmRepository
[5627](https://pulp.plan.io/issues/5627)
Bugfixes
- Fix publication for sub repos
[5630](https://pulp.plan.io/issues/5630)
- Fix ruby bindings for UpdateRecord.
[5650](https://pulp.plan.io/issues/5650)
- Fix sync of a repo which contains modules and advisories.
[5652](https://pulp.plan.io/issues/5652)
- Fix 404 when repo remote URL is without trailing slash.
[5655](https://pulp.plan.io/issues/5655)
- Check that sections exist before parsing them.
[5669](https://pulp.plan.io/issues/5669)
- Stopping to save JSONFields as String.
[5671](https://pulp.plan.io/issues/5671)
- Handling missing trailing slashes on kickstart tree fetching
[5677](https://pulp.plan.io/issues/5677)
- Not require ref_id and title for UpdateReference
[5692](https://pulp.plan.io/issues/5692)
- Refactor treeinfo handling and fix publication for kickstarts
[5729](https://pulp.plan.io/issues/5729)
Deprecations and Removals
- Sync is no longer available at the {remote_href}/sync/ repository={repo_href} endpoint. Instead, use POST {repo_href}/sync/ remote={remote_href}.
Creating / listing / editing / deleting RPM repositories is now performed on /pulp/api/v3/rpm/rpm/ instead of /pulp/api/v3/repositories/. Only RPM content can be present in a RPM repository, and only a RPM repository can hold RPM content.
[5625](https://pulp.plan.io/issues/5625)
- Remove plugin managed repos
[5627](https://pulp.plan.io/issues/5627)
- Rename endpoints for content to be in plural form consistently
Endpoints removed -> added:
/pulp/api/v3/content/rpm/modulemd/ -> /pulp/api/v3/content/rpm/modulemds/
/pulp/api/v3/content/rpm/packagecategory/ -> /pulp/api/v3/content/rpm/packagecategories/
/pulp/api/v3/content/rpm/packageenvironment/ -> /pulp/api/v3/content/rpm/packageenvironments/
/pulp/api/v3/content/rpm/packagegroup/ -> /pulp/api/v3/content/rpm/packagegroups/
[5679](https://pulp.plan.io/issues/5679)
- Rename module-defaults content endpoint for consistency
Endpoints removed -> added:
/pulp/api/v3/content/rpm/modulemd-defaults/ -> /pulp/api/v3/content/rpm/modulemd_defaults/
[5680](https://pulp.plan.io/issues/5680)
- Remove /pulp/api/v3/rpm/copy/ endpoint
Removed the /pulp/api/v3/rpm/copy/ endpoint. To copy all content now with typed repos, use the
modify endpoint on a repository.
[5681](https://pulp.plan.io/issues/5681)
Misc
- [3308](https://pulp.plan.io/issues/3308), [#4295](https://pulp.plan.io/issues/4295), [#5423](https://pulp.plan.io/issues/5423), [#5461](https://pulp.plan.io/issues/5461), [#5495](https://pulp.plan.io/issues/5495), [#5506](https://pulp.plan.io/issues/5506), [#5580](https://pulp.plan.io/issues/5580), [#5611](https://pulp.plan.io/issues/5611), [#5663](https://pulp.plan.io/issues/5663), [#5672](https://pulp.plan.io/issues/5672), [#5684](https://pulp.plan.io/issues/5684)
---