{
  "protocol": "identify",
  "imports": [
    {
      "path": "common.avdl",
      "type": "idl"
    },
    {
      "path": "identify_common.avdl",
      "type": "idl"
    }
  ],
  "types": [
    {
      "type": "record",
      "name": "IdentifyProofBreak",
      "fields": [
        {
          "type": "RemoteProof",
          "name": "remoteProof"
        },
        {
          "type": "LinkCheckResult",
          "name": "lcr"
        }
      ]
    },
    {
      "type": "record",
      "name": "IdentifyTrackBreaks",
      "fields": [
        {
          "type": {
            "type": "array",
            "items": "IdentifyKey"
          },
          "name": "keys"
        },
        {
          "type": {
            "type": "array",
            "items": "IdentifyProofBreak"
          },
          "name": "proofs"
        }
      ]
    },
    {
      "type": "record",
      "name": "Identify2Res",
      "fields": [
        {
          "type": "UserPlusKeys",
          "name": "upk"
        },
        {
          "type": [
            null,
            "IdentifyTrackBreaks"
          ],
          "name": "trackBreaks"
        }
      ]
    }
  ],
  "messages": {
    "Resolve": {
      "request": [
        {
          "name": "assertion",
          "type": "string"
        }
      ],
      "response": "UID",
      "doc": "Resolve an assertion to a UID. On failure, resolves to an empty UID and returns\n    an error.",
      "lint": "ignore"
    },
    "Resolve2": {
      "request": [
        {
          "name": "assertion",
          "type": "string"
        }
      ],
      "response": "User",
      "doc": "Resolve an assertion to a (UID,username). On failure, returns an error.",
      "lint": "ignore"
    },
    "identify": {
      "request": [
        {
          "name": "sessionID",
          "type": "int"
        },
        {
          "name": "userAssertion",
          "type": "string"
        },
        {
          "name": "forceRemoteCheck",
          "type": "boolean",
          "default": false
        },
        {
          "name": "useDelegateUI",
          "type": "boolean",
          "default": false
        },
        {
          "name": "reason",
          "type": "IdentifyReason"
        },
        {
          "name": "source",
          "type": "ClientType"
        }
      ],
      "response": "IdentifyRes",
      "doc": "DEPRECATED:  use identify2\n\n    Identify a user from a username or assertion (e.g. kbuser, twuser@twitter).\n    If forceRemoteCheck is true, we force all remote proofs to be checked (otherwise a cache is used)."
    },
    "identify2": {
      "request": [
        {
          "name": "sessionID",
          "type": "int"
        },
        {
          "name": "uid",
          "type": "UID"
        },
        {
          "name": "userAssertion",
          "type": "string"
        },
        {
          "name": "reason",
          "type": "IdentifyReason"
        },
        {
          "name": "useDelegateUI",
          "type": "boolean",
          "default": false
        },
        {
          "name": "alwaysBlock",
          "type": "boolean",
          "default": false
        },
        {
          "name": "noErrorOnTrackFailure",
          "type": "boolean",
          "default": false
        },
        {
          "name": "forceRemoteCheck",
          "type": "boolean",
          "default": false
        },
        {
          "name": "needProofSet",
          "type": "boolean",
          "default": false
        },
        {
          "name": "allowEmptySelfID",
          "type": "boolean",
          "default": false
        },
        {
          "name": "noSkipSelf",
          "type": "boolean",
          "default": true
        },
        {
          "name": "canSuppressUI",
          "type": "boolean",
          "default": false
        },
        {
          "name": "identifyBehavior",
          "type": "TLFIdentifyBehavior",
          "default": 0
        },
        {
          "name": "forceDisplay",
          "type": "boolean",
          "default": false
        }
      ],
      "response": "Identify2Res"
    }
  },
  "namespace": "keybase.1"
}