{
  "protocol": "identifyCommon",
  "imports": [
    {
      "path": "common.avdl",
      "type": "idl"
    },
    {
      "path": "prove_common.avdl",
      "type": "idl"
    }
  ],
  "types": [
    {
      "type": "record",
      "name": "TrackToken",
      "fields": [],
      "typedef": "string"
    },
    {
      "type": "enum",
      "name": "TrackDiffType",
      "symbols": [
        "NONE_0",
        "ERROR_1",
        "CLASH_2",
        "REVOKED_3",
        "UPGRADED_4",
        "NEW_5",
        "REMOTE_FAIL_6",
        "REMOTE_WORKING_7",
        "REMOTE_CHANGED_8",
        "NEW_ELDEST_9",
        "NONE_VIA_TEMPORARY_10"
      ]
    },
    {
      "type": "record",
      "name": "TrackDiff",
      "fields": [
        {
          "type": "TrackDiffType",
          "name": "type"
        },
        {
          "type": "string",
          "name": "displayMarkup"
        }
      ]
    },
    {
      "type": "record",
      "name": "TrackSummary",
      "fields": [
        {
          "type": "string",
          "name": "username"
        },
        {
          "type": "Time",
          "name": "time"
        },
        {
          "type": "boolean",
          "name": "isRemote"
        }
      ]
    },
    {
      "type": "enum",
      "name": "TrackStatus",
      "symbols": [
        "NEW_OK_1",
        "NEW_ZERO_PROOFS_2",
        "NEW_FAIL_PROOFS_3",
        "UPDATE_BROKEN_FAILED_PROOFS_4",
        "UPDATE_NEW_PROOFS_5",
        "UPDATE_OK_6",
        "UPDATE_BROKEN_REVOKED_7"
      ],
      "doc": "TrackStatus is a summary of this track before the track is approved by the\n    user.\n    NEW_*: New tracks\n    UPDATE_*: Update to an existing track\n    NEW_OK: Everything ok\n    NEW_ZERO_PROOFS: User being tracked has no proofs\n    NEW_FAIL_PROOFS: User being tracked has some failed proofs\n    UPDATE_BROKEN: Previous tracking statement broken, this one will fix it.\n    UPDATE_NEW_PROOFS: Previous tracking statement ok, but there are new proofs since previous tracking statement generated\n    UPDATE_OK: No changes to previous tracking statement"
    },
    {
      "type": "record",
      "name": "TrackOptions",
      "fields": [
        {
          "type": "boolean",
          "name": "localOnly"
        },
        {
          "type": "boolean",
          "name": "bypassConfirm"
        },
        {
          "type": "boolean",
          "name": "forceRetrack"
        },
        {
          "type": "boolean",
          "name": "expiringLocal"
        }
      ]
    },
    {
      "type": "enum",
      "name": "IdentifyReasonType",
      "symbols": [
        "NONE_0",
        "ID_1",
        "TRACK_2",
        "ENCRYPT_3",
        "DECRYPT_4",
        "VERIFY_5",
        "RESOURCE_6"
      ]
    },
    {
      "type": "record",
      "name": "IdentifyReason",
      "fields": [
        {
          "type": "IdentifyReasonType",
          "name": "type"
        },
        {
          "type": "string",
          "name": "reason"
        },
        {
          "type": "string",
          "name": "resource"
        }
      ]
    },
    {
      "type": "record",
      "name": "IdentifyOutcome",
      "fields": [
        {
          "type": "string",
          "name": "username"
        },
        {
          "type": [
            null,
            "Status"
          ],
          "name": "status"
        },
        {
          "type": {
            "type": "array",
            "items": "string"
          },
          "name": "warnings"
        },
        {
          "type": [
            null,
            "TrackSummary"
          ],
          "name": "trackUsed"
        },
        {
          "type": "TrackStatus",
          "name": "trackStatus"
        },
        {
          "type": "int",
          "name": "numTrackFailures"
        },
        {
          "type": "int",
          "name": "numTrackChanges"
        },
        {
          "type": "int",
          "name": "numProofFailures"
        },
        {
          "type": "int",
          "name": "numRevoked"
        },
        {
          "type": "int",
          "name": "numProofSuccesses"
        },
        {
          "type": {
            "type": "array",
            "items": "TrackDiff"
          },
          "name": "revoked"
        },
        {
          "type": "TrackOptions",
          "name": "trackOptions"
        },
        {
          "type": "boolean",
          "name": "forPGPPull"
        },
        {
          "type": "IdentifyReason",
          "name": "reason"
        }
      ]
    },
    {
      "type": "record",
      "name": "IdentifyRes",
      "fields": [
        {
          "type": [
            null,
            "User"
          ],
          "name": "user"
        },
        {
          "type": {
            "type": "array",
            "items": "PublicKey"
          },
          "name": "publicKeys"
        },
        {
          "type": "IdentifyOutcome",
          "name": "outcome"
        },
        {
          "type": "TrackToken",
          "name": "trackToken"
        }
      ]
    },
    {
      "type": "record",
      "name": "RemoteProof",
      "fields": [
        {
          "type": "ProofType",
          "name": "proofType"
        },
        {
          "type": "string",
          "name": "key"
        },
        {
          "type": "string",
          "name": "value"
        },
        {
          "type": "string",
          "name": "displayMarkup"
        },
        {
          "type": "SigID",
          "name": "sigID"
        },
        {
          "type": "Time",
          "name": "mTime"
        }
      ]
    }
  ],
  "messages": {},
  "namespace": "keybase.1"
}