At this level
at.happyproto.registry · 21- at.happyproto.registry.defs defs The version's changelog, from the registry's copy of its site.standard.document.
- at.happyproto.registry.getArtifact query The bytes of a blob the registry has copied, served from its own copy and never redirected to the publisher, so a version stays installable after its publisher deletes it. Name the blob either by version and kind or by its CID. Only blobs that an indexed manifest or publication references are served. The output encoding is `*/*`, as com.atproto.sync.getBlob's is; the media type is the one the blob was published with.
- at.happyproto.registry.getPackage query One package by publisher and slug. A withdrawn package is still returned, flagged `deleted`, because its releases stay resolvable.
- at.happyproto.registry.getProject query One plugin, by publisher and name.
- at.happyproto.registry.getRelease query One release by exact version. Served whatever its status, including `deleted`: that is the left-pad protection the registry exists for.
- at.happyproto.registry.getVersion query One version of a plugin, by exact version, whatever its lifecycle state or availability.
- at.happyproto.registry.listReleases query Every release of a package, newest-indexed first, including withdrawn ones flagged `deleted` — a client resolving an exact version needs to see that it exists.
- at.happyproto.registry.listVersions query A plugin's versions, most recently indexed first, whatever their lifecycle state.
- at.happyproto.registry.project record The HappyView facts about a software.release.project that make it a plugin. The record key is the project's name, and the record lives in the same repo as the project. The registry indexes a project's releases only while this record exists and is valid.
- at.happyproto.registry.promoteRelease procedure Publish an existing version's artifact under a new version, such as `1.2.0-rc.1` as `1.2.0`, without uploading it again. The new software.release.version points at the existing manifest. Optionally moves a channel to it and adds a changelog.
- at.happyproto.registry.publishProfile procedure Check a package profile against the rules the indexer applies, and optionally write it to the caller's repo. The indexer validates a record only after it is published and skips an invalid one quietly, so a publisher writing the record itself gets no feedback; this answers the same refusal before the record exists. Pass validateOnly to check a record without writing it. Like every XRPC procedure this needs an authenticated caller, so validateOnly is a dry run rather than an anonymous one.
- at.happyproto.registry.publishRelease procedure Publish a version of a plugin to the caller's repo. Writes a software.release.manifest carrying the artifact, the changelog as a site.standard.document when one is given, the software.release.version, and the channel named by track, moved to the new version, in that order. A record is written only once everything it points at exists, so a failure part-way leaves no dangling reference. Calling again with the same input after such a failure finishes the release rather than refusing it.
- at.happyproto.registry.putProject procedure Create or update a plugin project in the caller's repo. The first call writes the site.standard.publication, the at.happyproto.registry.project and the software.release.project, in that order, so each is indexed after what it depends on. Later calls update the publication and the at.happyproto.registry.project only; the project record itself is never changed.
- at.happyproto.registry.putStatus procedure Add a software.release.status record about one of the caller's projects or versions. Statuses are never edited or deleted: to cancel one, add another with status `withdrawn` that names it in `withdraws`.
- at.happyproto.registry.resolveChannel query The version a plugin's channel points at.
- at.happyproto.registry.retryRelease procedure Copy a pending release's artifact again. A release is listed only once the registry has copied its artifact, which it tries once when it first indexes the release; this is how the release's publisher tries again after that copy failed. An active release is answered as it is, with nothing enqueued.
- at.happyproto.registry.retryVersion procedure Copy a version's blobs into the registry again, after an earlier copy failed. Only the registry's own account may call this. The copy is enqueued for any indexed version and fetches only what is not held yet, so an available version whose optional images failed can be retried. For a version deleted at its source, the copy keeps whatever blobs the publisher's PDS still serves, so instances that installed it can keep loading it by CID, but the version stays deletedAtSource and is never made availa
- at.happyproto.registry.searchPackages query Find packages. Deleted packages are never returned. With `q` the result is ranked by match and capped rather than paged, because the index's substring search takes no cursor; without it the result is paged.
- at.happyproto.registry.searchProjects query Find plugins. Retired projects are left out unless includeRetired is set.
- at.happyproto.registry.updateProfile procedure Replace a package profile the caller has already published, held to the rules publishProfile applies. This is how a publisher edits a profile: it writes to the caller's own repo as them, where com.atproto.repo.putRecord sent through a HappyView instance goes wherever that instance's proxy routing points. It never creates a profile; publish a new one with publishProfile.
- at.happyproto.registry.withdrawRelease procedure Delete a release record the caller published. This is how a publisher withdraws a release: it deletes from the caller's own repo as them, where com.atproto.repo.deleteRecord sent through a HappyView instance goes wherever that instance's proxy routing points. The release stays indexed and served by exact version, marked withdrawn, and the version can never be published again.