fyi.opensocial.importAccount

lexicons.opensocial.fyi

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Start moving an account that already exists on the network, on any server, here to become a group: check the account's proof that it hands its DID to this host, make it here switched off with new keys, and copy its whole repo and its files from its server. Answers with the credentials the account's PLC operation should name; once its server has signed one, completeImport finishes the move. The caller becomes the group's admin. Only a did:plc account, and never the caller's own. Starting again for an account the caller started on discards what the first start copied.",
      "errors": [
        {
          "name": "NotAllowed"
        },
        {
          "name": "InvalidToken"
        },
        {
          "name": "NotPlc"
        },
        {
          "name": "SameAccount"
        },
        {
          "name": "AlreadyHere"
        },
        {
          "name": "InvalidHandle"
        },
        {
          "name": "HandleNotAvailable"
        },
        {
          "name": "InvalidRepo"
        },
        {
          "name": "UpstreamFailure"
        }
      ],
      "input": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "address": {
              "description": "The label of its address on this host; by default its handle's first label.",
              "type": "string"
            },
            "serviceJwt": {
              "description": "A service token from the account's own server (com.atproto.server.getServiceAuth), with this host's DID as aud and com.atproto.server.createAccount as lxm.",
              "type": "string"
            }
          },
          "required": [
            "serviceJwt"
          ],
          "type": "object"
        }
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "address": {
              "format": "handle",
              "type": "string"
            },
            "blobs": {
              "description": "Files copied.",
              "type": "integer"
            },
            "did": {
              "format": "did",
              "type": "string"
            },
            "displayName": {
              "type": "string"
            },
            "handle": {
              "description": "Its handle once moved: its own domain if it has one that still names it, otherwise its address.",
              "format": "handle",
              "type": "string"
            },
            "recommendedCreds": {
              "description": "rotationKeys, alsoKnownAs, verificationMethods and services, as com.atproto.identity.getRecommendedDidCredentials answers: what the account's server signs into its PLC operation (com.atproto.identity.signPlcOperation).",
              "type": "unknown"
            },
            "records": {
              "description": "Records copied.",
              "type": "integer"
            }
          },
          "required": [
            "did",
            "handle",
            "address",
            "displayName",
            "records",
            "blobs",
            "recommendedCreds"
          ],
          "type": "object"
        }
      },
      "type": "procedure"
    }
  },
  "id": "fyi.opensocial.importAccount",
  "lexicon": 1
}

Validate Record

Validate a record against fyi.opensocial.importAccount

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:2gqnilpksz2e7faj3bwvo6qc
CID
bafyreigtmc5mitg3es2r2xg2dhutxvtuur3v3tocdaaxlabnn6nfgexjpe
Indexed At
2026-11-02 23:05 UTC
AT-URI
at://did:plc:2gqnilpksz2e7faj3bwvo6qc/com.atproto.lexicon.schema/fyi.opensocial.importAccount

Similar Lexicons

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

  • Finish moving an account here: send the PLC operation its old server signed, which must give it to this host as importAccount said, switch it on and tell the network, and make the group's spaces with the caller as its a…

  • What moving an account here would make of it, before anything moves (importAccount moves it so): its handle here, whether that's the one it has, and its address, this host's own name for it, where its site lives. A hand…

  • On the source host: start moving the group to another host. Answers with a createAccount service token signed by the group, for the destination; the group's handle, address and spaces; and a token, good for an hour, wit…

  • On the destination host: take the group in. Pulls it from the host it's leaving with migratePrepare's token (its public repo, each space's meta archive and the group's repo there, its files), checked against the group's…

  • Source host: sign and submit the PLC operation repointing the group's DID document at the destination, and relinquish the group. Requires group.configure.

Lexicon Garden

@