social.colibri.community.migrate

colibri.social

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "channelMapping": {
      "description": "A single channel's old AT-URI mapped to its new AT-URI.",
      "properties": {
        "new": {
          "format": "at-uri",
          "type": "string"
        },
        "old": {
          "format": "at-uri",
          "type": "string"
        }
      },
      "required": [
        "old",
        "new"
      ],
      "type": "object"
    },
    "main": {
      "description": "Migrates a source record into a fresh community, cloning its structure and importing its members. The 'kind' discriminator selects the migration; today only legacy communities are supported, but the endpoint is designed to host future migrations. Provisioning mirrors community.create (managed when no PDS credentials are supplied, bring-your-own otherwise).",
      "input": {
        "description": "Optional replacement community picture image bytes.",
        "encoding": "*/*"
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "channelMap": {
              "description": "Maps each cloned channel from its old AT-URI to its new AT-URI.",
              "items": {
                "ref": "lex:social.colibri.community.migrate#channelMapping",
                "type": "ref"
              },
              "type": "array"
            },
            "community": {
              "format": "at-uri",
              "type": "string"
            },
            "did": {
              "format": "did",
              "type": "string"
            }
          },
          "required": [
            "did",
            "community",
            "channelMap"
          ],
          "type": "object"
        }
      },
      "parameters": {
        "properties": {
          "description": {
            "type": "string"
          },
          "identifier": {
            "description": "Bring-your-own DID or handle.",
            "type": "string"
          },
          "kind": {
            "description": "The migration to run. 'legacy-community' migrates a pre-rework community record.",
            "knownValues": [
              "legacy-community"
            ],
            "type": "string"
          },
          "mimeType": {
            "description": "MIME type of the picture body, if provided.",
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "password": {
            "description": "Bring-your-own account password.",
            "type": "string"
          },
          "pds": {
            "description": "Bring-your-own PDS endpoint.",
            "type": "string"
          },
          "requiresApprovalToJoin": {
            "type": "boolean"
          },
          "source": {
            "description": "The record being migrated (e.g. the legacy community).",
            "format": "at-uri",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "source"
        ],
        "type": "params"
      },
      "type": "procedure"
    }
  },
  "id": "social.colibri.community.migrate",
  "lexicon": 1
}

Validate Record

Validate a record against social.colibri.community.migrate

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:mprdjqjluoswa7awzggaggj3
CID
bafyreidhbbtq5xjh4ohqnkmlvtg5pyio5exfywiafz6ykkqzvi3x3vdega
Indexed At
2026-07-24 14:44 UTC
AT-URI
at://did:plc:mprdjqjluoswa7awzggaggj3/com.atproto.lexicon.schema/social.colibri.community.migrate

Version History (3 versions)

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • 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 …

  • social.colibri.community.create procedurenot from the namespace authority

    Creates a community, bootstrapping its DID repo with a default category, channel, owner role, and member record.

  • Adopts an existing account as a community: this AppView takes custody of its credentials, creates the four community spaces on whichever PDS already hosts it, and seeds the same starter layout social.colibri.beta.commun…

  • Lists the repo-backed communities the requesting user belongs to that have not been migrated onto spaces yet, so a client can offer them as a choice rather than asking for a handle. The AppView reads this live from the …

  • Provisions a new community: an account on the AppView's PDS, its four spaces, an owner role, and a starter layout of two categories holding one text channel and one voice channel between them. This call runs long enough…

Lexicon Garden

@