at.happyproto.registry.updateProfile

happyproto.at

Documentation

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.

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

Input

Encodingapplication/json
record 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 bytes
swapCid stringcid Optional

The CID the profile was read at. The write is refused with InvalidSwap if the profile has changed since.

Output

Encodingapplication/json
cid 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.

Base URL for XRPC calls (e.g., https://bsky.social)
Enter valid JSON for the request body
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"
}

Lexicon Garden

@