📄️ List packages
List packages. The listing must be scoped: send `nrn`, `visible_to`, or both.
📄️ Create a package
Create a package. To publish its first revision in the same call, send `version` together with `components`. The first revision also becomes the package's `default_revision_id`.
📄️ Create or publish a package by slug
Create a package, or publish a new revision of an existing one, in a single idempotent call keyed on `nrn` and `slug`.
📄️ Read a package
Read a package: its envelope plus the components of its resolved revision (`default_revision_id` when it's set, otherwise `latest_revision_id`).
📄️ Update a package
Update `name`, `visible_to` or `default_revision_id`, publish a new revision, or both. To publish, pair `components` with exactly one of `version` or `bump`. `default: true` promotes the revision published in this call and can't be combined with `default_revision_id`.
📄️ Delete a package
Soft-delete a package. Its revisions are retained, so a service that points at one of them keeps resolving its bill of materials.
📄️ List revisions of a package
List a package's revisions, newest first. Items don't include components unless you send `name`: then each item carries only the components with that name, which gives you the history of one component across revisions.
📄️ Read a revision
Read one revision of a package: its version and bill of materials.
📄️ Read a package revision directly by id
Read a package revision when you only have its id, for example a service's `package_revision_id`. Authorized against the parent package.
📄️ Diff two revisions
Compare two revisions of one package. `changes` lists every component name whose pin differs, with the component as pinned by each side (`null` on the side where the name doesn't exist). Artifact components also carry the artifact `type` and the pinned revision's `meta`, so you can tell what changed, for example a new digest or git reference.