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.
Input
application/jsonrecord
unknown
Required
The replacement at.happyproto.plugin.profile record.
slug
string
Required
The package slug: the record key of the profile to replace.
maxLength: 512 bytesswapCid
stringcid
Optional
The CID the profile was read at. The write is refused with InvalidSwap if the profile has changed since.
Output
application/jsoncid
stringcid
Required
A content identifier (CID) referencing immutable data.
uri
stringat-uri
Required
An AT Protocol URI (e.g., at://did:plc:xyz/app.bsky.feed.post/abc).
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. ProfileMissing
No profile is indexed at that slug for the caller. InvalidSwap
The profile changed after swapCid was read. Upstream
The record could not be written to the caller's repo. NotConfigured
The registry has no identity configured. Try It
Requests are sent directly from your browser. Some servers may block requests due to CORS.
View raw schema
{
"description": "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.",
"errors": [
{
"description": "The caller's identity could not be determined, so there is no repo to write to.",
"name": "AuthRequired"
},
{
"description": "The record is not a profile the indexer would accept. The message names the reason.",
"name": "InvalidRecord"
},
{
"description": "No profile is indexed at that slug for the caller.",
"name": "ProfileMissing"
},
{
"description": "The profile changed after swapCid was read.",
"name": "InvalidSwap"
},
{
"description": "The record could not be written to the caller's repo.",
"name": "Upstream"
},
{
"description": "The registry has no identity configured.",
"name": "NotConfigured"
}
],
"input": {
"encoding": "application/json",
"schema": {
"properties": {
"record": {
"description": "The replacement at.happyproto.plugin.profile record.",
"type": "unknown"
},
"slug": {
"description": "The package slug: the record key of the profile to replace.",
"maxLength": 512,
"type": "string"
},
"swapCid": {
"description": "The CID the profile was read at. The write is refused with InvalidSwap if the profile has changed since.",
"format": "cid",
"type": "string"
}
},
"required": [
"slug",
"record"
],
"type": "object"
}
},
"output": {
"encoding": "application/json",
"schema": {
"properties": {
"cid": {
"format": "cid",
"type": "string"
},
"uri": {
"format": "at-uri",
"type": "string"
}
},
"required": [
"uri",
"cid"
],
"type": "object"
}
},
"type": "procedure"
}