rip.pds.account.putServices

pds.rip

Documentation

Replace the service entries on a did:web account's DID document. The whole set is supplied each time, so an empty list resets the document to its minimal form. Any fragment and type are allowed except the ones this server manages. Only for did:web accounts the caller minted.

main procedure

Replace the service entries on a did:web account's DID document. The whole set is supplied each time, so an empty list resets the document to its minimal form. Any fragment and type are allowed except the ones this server manages. Only for did:web accounts the caller minted.

Input

Encodingapplication/json
did stringdid Required

A decentralized identifier (DID).

labelKey string Optional

Public multikey published as #atproto_label, which a labeler signs its labels with. Required when a labeler entry is present. The private half is never sent here.

services array Optional

The complete set of service entries, in DID document shape. Omit or pass an empty array to reset to the minimal document.

maxLength: 10 items

Output

Encodingapplication/json
did stringdid Required

A decentralized identifier (DID).

document unknown Required

The DID document as it will now be served.

labelKey string Optional

No description available.

services array Required

No description available.

updatedAt stringdatetime Optional

An RFC 3339 formatted timestamp.

warnings array Optional

Advisory notes. A known fragment carrying an unexpected type publishes fine but is ignored by consumers that check the type.

Errors

AccountNotFound No live account with that DID was minted by the caller.
NotAWebIdentity The account is a did:plc, whose document this server cannot edit.
InvalidRequest A fragment, endpoint or label key was not acceptable.
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
{
  "type": "procedure",
  "input": {
    "schema": {
      "type": "object",
      "required": [
        "did"
      ],
      "properties": {
        "did": {
          "type": "string",
          "format": "did"
        },
        "labelKey": {
          "type": "string",
          "description": "Public multikey published as #atproto_label, which a labeler signs its labels with. Required when a labeler entry is present. The private half is never sent here."
        },
        "services": {
          "type": "array",
          "items": {
            "ref": "#serviceEntry",
            "type": "ref"
          },
          "maxLength": 10,
          "description": "The complete set of service entries, in DID document shape. Omit or pass an empty array to reset to the minimal document."
        }
      }
    },
    "encoding": "application/json"
  },
  "errors": [
    {
      "name": "AccountNotFound",
      "description": "No live account with that DID was minted by the caller."
    },
    {
      "name": "NotAWebIdentity",
      "description": "The account is a did:plc, whose document this server cannot edit."
    },
    {
      "name": "InvalidRequest",
      "description": "A fragment, endpoint or label key was not acceptable."
    }
  ],
  "output": {
    "schema": {
      "type": "object",
      "required": [
        "did",
        "document",
        "services"
      ],
      "properties": {
        "did": {
          "type": "string",
          "format": "did"
        },
        "document": {
          "type": "unknown",
          "description": "The DID document as it will now be served."
        },
        "labelKey": {
          "type": "string"
        },
        "services": {
          "type": "array",
          "items": {
            "ref": "#serviceEntry",
            "type": "ref"
          }
        },
        "warnings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Advisory notes. A known fragment carrying an unexpected type publishes fine but is ignored by consumers that check the type."
        },
        "updatedAt": {
          "type": "string",
          "format": "datetime"
        }
      }
    },
    "encoding": "application/json"
  },
  "description": "Replace the service entries on a did:web account's DID document. The whole set is supplied each time, so an empty list resets the document to its minimal form. Any fragment and type are allowed except the ones this server manages. Only for did:web accounts the caller minted."
}
serviceEntry object

A DID document service entry. Extra properties are permitted, as atproto tolerates them.

Properties

id string Required

The fragment, written as '#my_service' or in full as 'did:web:host#my_service'. Fragments this server manages, '#atproto' and '#atproto_pds', cannot be set.

serviceEndpoint string uri Required

An https URL. Private and local addresses are refused, because the document is read by other people's infrastructure.

type string Required

The service type, for example 'BskyFeedGenerator'. Supplied rather than derived, so unrecognised types can be published.

View raw schema
{
  "type": "object",
  "required": [
    "id",
    "type",
    "serviceEndpoint"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The fragment, written as '#my_service' or in full as 'did:web:host#my_service'. Fragments this server manages, '#atproto' and '#atproto_pds', cannot be set."
    },
    "type": {
      "type": "string",
      "description": "The service type, for example 'BskyFeedGenerator'. Supplied rather than derived, so unrecognised types can be published."
    },
    "serviceEndpoint": {
      "type": "string",
      "format": "uri",
      "description": "An https URL. Private and local addresses are refused, because the document is read by other people's infrastructure."
    }
  },
  "description": "A DID document service entry. Extra properties are permitted, as atproto tolerates them."
}

Lexicon Garden

@