Curate, publish, or unpublish a platform Fleet library entry
Partial update. description and required_credentials_reasons are the two fields no bundle can supply, so they are operator-owned: a later bundle refetch never overwrites them. published moves the entry between draft (stored, invisible to every tenant) and public (live in every workspace gallery and installable). Publishing an entry whose bundle was never fetched is refused — a published entry always has something to install. Requires the platform-library:write scope. Send If-Match with the row’s etag to reject stale edits before they can repoint the source or unpublish the entry. Omitting the header preserves last-write-wins behavior.
Authorizations
Obtain a token via the CLI auth flow (POST /v1/auth/sessions) or GitHub OAuth
Headers
Optional catalog row version from the list response. Stale values return 412 with the current etag.
Path Parameters
The catalog id — the bundle's SKILL.md frontmatter name (a slug, not a UUID).
Body
Partial update of a catalog entry. Every field is optional, and an absent field is left untouched. Editing the description never blanks the credential copy, and the entry id is never patchable.
A source_repo or source_ref that differs from the stored value discards the stored bundle and returns the entry to draft, atomically. The bundle was built from the old source, so an entry never advertises a source it is not serving. Re-sending the stored value is a no-op.
Display name. Operator-owned — survives bundle refetches.
200owner/repo. Validated with the same rules as onboarding.
512Branch or tag the next fetch should use.
100true publishes the entry (requires a bundle); false withdraws it back to draft, which removes it from every gallery and blocks new installs. Workspaces already running the fleet are unaffected.
Response
The entry as it now stands.
One row of the platform Fleet library catalog, as the operator sees it. Metadata only — never bundle markdown, a support-file body, or an object-store key.
The catalog id — the bundle's SKILL.md frontmatter name.
Operator-owned after the entry is created. Seeded from the bundle on the first fetch; a later refetch never overwrites it.
The GitHub repository the bundle was fetched from, as owner/repo.
The git ref the bundle was fetched at.
The publish lifecycle. draft — the bundle is stored and the fleet is invisible to every tenant. public — live in every workspace gallery and installable.
draft, public The content hash of the stored bundle, or null when no bundle has ever been fetched for this entry. A null hash can never be published.
Per-credential "why this fleet needs it" copy, keyed by credential name, shown at the install gate. Operator-owned: the importer cannot derive it, and a bundle refetch never overwrites it.
Optimistic-concurrency tag over the operator-editable catalog row fields. Send it as If-Match on PATCH to prevent stale overwrites.
Milliseconds since the Unix epoch.