at.happyproto.registry.publishRelease
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.
Details · procedure
| Kind | procedure |
|---|---|
| Authority | registry.happyproto.at |
| Indexed |
Showing version bafyreiccjd6dykih6i6yj2heb6jyzceinjqv7ibyxpkqxzso5ejg3v34pq. Show the latest
Procedure
procedure · POSTInput
application/jsonThe plugin. Every blob it references must already be uploaded to the caller's repo.
changelog
stringRelease notes as CommonMark. The registry writes them to the caller's repo as a site.standard.document and links it from the version.
maxLength: 200000maxGraphemes: 20000
The project's name, which is the record key of its software.release.project: 1 to 64 lowercase letters, digits and interior hyphens.
minLength: 1maxLength: 64
The channel to move to the new version.
knownValues: latest | beta | alpha
validateOnly
booleanCheck the input against every rule the registry applies, and write nothing. Works without authentication, but only a signed-in call is also checked against the caller's existing records.
default: false
A semver version without build metadata, with an optional lowercase prerelease, such as `1.2.0` or `1.2.0-beta.1`.
minLength: 1maxLength: 64
Output
application/jsonchangelog
refThe changelog's site.standard.document, when a changelog was given.
channel
refThe software.release.channel. Absent when validateOnly was set.
manifest
refThe software.release.manifest. Absent when validateOnly was set.
resumed
booleanTrue when the version already existed with this artifact, so this call only finished what an earlier one started.
Always true; invalid input is an error, not a result.
version
refThe software.release.version. Absent when validateOnly was set.
Errors
AuthRequired
The caller's identity could not be determined, so there is no repo to write to.
NotConfigured
The registry has no identity configured. An operator problem, not a caller's.
InvalidRecord
The input breaks a rule the registry applies, so it would refuse the records. The message names the field.
InvalidRequest
The input breaks the method's lexicon, such as a field of the wrong format or past its length, and HappyView refused it before the registry saw it. The message names the field.
Upstream
A record could not be written to the caller's repo. Records written before the failure stay, and the same call can be made again.
ProjectMissing
The caller has no project of that name, or the registry has not indexed its at.happyproto.registry.project record. Call putProject first.
VersionExists
That version is already published with a different artifact. A version never changes once published; publish a new one.
NotInstallable
The project is unavailable or retired, so the channel cannot be moved to a new version.
Similar lexicons
semantic matchLexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
at.happyproto.registry.promoteRelease
procedurePublish 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.putProject
procedureCreate 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.plugin.release
recordOne version of a package. The record key is '<slug>:<version>'. A release at a given version is never modified: a registry that later sees a different CID at this key keeps the first and flags the conflict.
-
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.withdrawRelease
procedureDelete 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.