{
  "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": {
            "email": { "type": "string" },
            "handle": {
              "type": "string",
              "format": "handle",
              "description": "Requested handle for the account."
            },
            "did": {
              "type": "string",
              "format": "did",
              "description": "Pre-existing atproto DID, being imported to a new account."
            },
            "inviteCode": { "type": "string" },
            "verificationCode": { "type": "string" },
            "verificationPhone": { "type": "string" },
            "password": {
              "type": "string",
              "description": "Initial account password. May need to meet instance-specific password strength requirements."
            },
            "recoveryKey": {
              "type": "string",
              "description": "DID PLC rotation key (aka, recovery key) to be included in PLC creation operation."
            },
            "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."
            }
          }
        }
      },
      "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" },
            "refreshJwt": { "type": "string" },
            "handle": { "type": "string", "format": "handle" },
            "did": {
              "type": "string",
              "format": "did",
              "description": "The DID of the new account."
            },
            "didDoc": {
              "type": "unknown",
              "description": "Complete DID document."
            }
          }
        }
      },
      "errors": [
        { "name": "InvalidHandle" },
        { "name": "InvalidPassword" },
        { "name": "InvalidInviteCode" },
        { "name": "HandleNotAvailable" },
        { "name": "UnsupportedDomain" },
        { "name": "UnresolvableDid" },
        { "name": "IncompatibleDidDoc" }
      ]
    }
  }
}
