{
"id": "rip.pds.account.putServices",
"defs": {
"main": {
"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": 2,
"description": "The complete set of service entries. 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"
}
},
"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. Only for did:web accounts the caller minted."
},
"serviceEntry": {
"type": "object",
"required": [
"fragment",
"endpoint"
],
"properties": {
"endpoint": {
"type": "string",
"format": "uri",
"description": "An https URL. Private and local addresses are refused, because the document is read by other people's infrastructure."
},
"fragment": {
"type": "string",
"description": "One of #bsky_fg or #atproto_labeler. The service type is derived from this rather than supplied. Fragments this server manages cannot be set.",
"knownValues": [
"#bsky_fg",
"#atproto_labeler"
]
}
}
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}