{
"id": "social.colibri.beta.community.migrate",
"defs": {
"main": {
"type": "procedure",
"input": {
"schema": {
"type": "object",
"required": [
"legacy"
],
"properties": {
"legacy": {
"type": "string",
"format": "at-uri",
"description": "The legacy social.colibri.beta.community record to migrate."
}
}
},
"encoding": "application/json"
},
"errors": [
{
"name": "AuthRequired",
"description": "The request is missing, malformed, or unverifiable service auth."
},
{
"name": "Forbidden",
"description": "The requesting user lacks permission to migrate this community."
},
{
"name": "CommunityNotFound",
"description": "No community exists at the legacy record's DID."
},
{
"name": "AlreadyExists",
"description": "This legacy community has already been migrated."
},
{
"name": "CredentialsUnavailable",
"description": "The AppView's stored credentials for this community are missing or unusable."
},
{
"name": "UpstreamFailure",
"description": "A PDS or third-party call the AppView depends on failed."
}
],
"output": {
"schema": {
"type": "object",
"required": [
"community"
],
"properties": {
"community": {
"ref": "social.colibri.beta.community.defs#communityView",
"type": "ref",
"description": "The newly created, space-backed community."
}
}
},
"encoding": "application/json"
},
"description": "Migrates a repo-backed community onto spaces. Structure is recreated in new spaces and stamped with migratedFrom. Message history stays in the legacy public repos and is served alongside, because messages live in their authors' repos and only their authors can move them."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}