{
  "lexicon": 1,
  "id": "com.atproto.server.createAccount",
  "defs": {
    "main": {
      "type": "procedure",
      "description": "Create an account. Implemented by PDS.",
      "input": {
        "encoding": "application/json",
        "schema": {
          "type": "object",
          "required": [
            "handle"
          ],
          "properties": {
            "did": {
              "type": "string",
              "description": "Pre-existing atproto DID, being imported to a new account.",
              "format": "did"
            },
            "email": {
              "type": "string"
            },
            "handle": {
              "type": "string",
              "description": "Requested handle for the account.",
              "format": "handle"
            },
            "inviteCode": {
              "type": "string"
            },
            "password": {
              "type": "string",
              "description": "Initial account password. May need to meet instance-specific password strength requirements."
            },
            "plcOp": {
              "type": "unknown",
              "description": "A signed DID PLC operation to be submitted as part of importing an existing account to this instance. NOTE: this optional field may be updated when full account migration is implemented."
            },
            "recoveryKey": {
              "type": "string",
              "description": "DID PLC rotation key (aka, recovery key) to be included in PLC creation operation."
            },
            "verificationCode": {
              "type": "string"
            },
            "verificationPhone": {
              "type": "string"
            }
          }
        }
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "type": "object",
          "description": "Account login session returned on successful account creation.",
          "required": [
            "accessJwt",
            "refreshJwt",
            "handle",
            "did"
          ],
          "properties": {
            "accessJwt": {
              "type": "string"
            },
            "did": {
              "type": "string",
              "description": "The DID of the new account.",
              "format": "did"
            },
            "didDoc": {
              "type": "unknown",
              "description": "Complete DID document."
            },
            "handle": {
              "type": "string",
              "format": "handle"
            },
            "refreshJwt": {
              "type": "string"
            }
          }
        }
      },
      "errors": [
        {
          "name": "InvalidHandle"
        },
        {
          "name": "InvalidPassword"
        },
        {
          "name": "InvalidInviteCode"
        },
        {
          "name": "HandleNotAvailable"
        },
        {
          "name": "UnsupportedDomain"
        },
        {
          "name": "UnresolvableDid"
        },
        {
          "name": "IncompatibleDidDoc"
        }
      ]
    }
  }
}