at.happyproto.registry.publishProfile

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.

Repository @happyproto.at did:plc:mo7vq4jbioxwafy5zkcc3eux namespace authority
Details · procedure
Kindprocedure
Authorityregistry.happyproto.at
Indexed

Procedure

procedure · POST

Input

application/json

record

requiredunknown

An at.happyproto.plugin.profile record.

slug

requiredstring

The package slug, which becomes the record key. A profile record carries no slug of its own.

  • maxLength: 512

Check the record and write nothing. Still requires authentication, as every procedure does.

  • default: false

Output

application/json

cid

string · cid

uri

string · at-uri

The record written. Absent when validateOnly was set.

valid

requiredboolean

Always true; an invalid record is an error, not a result.

Errors

AuthRequired

The caller's identity could not be determined, so there is no repo to write to.

InvalidRecord

The record is not a profile the indexer would accept. The message names the reason.

Upstream

The record could not be written to the caller's repo.

NotConfigured

The registry has no identity configured.

Similar lexicons

semantic match

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • 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.

  • 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.

  • 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.