@namespace("keybase.1") protocol identify { import idl "common.avdl"; import idl "identify_common.avdl"; /** Resolve an assertion to a (UID,username) or (TeamID,teamname). On failure, returns an error. */ @lint("ignore") UserOrTeamLite Resolve3(string assertion, OfflineAvailability oa); record IdentifyProofBreak { RemoteProof remoteProof; LinkCheckResult lcr; } record IdentifyTrackBreaks { array keys; array proofs; } record Identify2Res { UserPlusKeys upk; Time identifiedAt; union { null, IdentifyTrackBreaks } trackBreaks; } // Identify2ResUPK2 is used internally, but we return Identify2Res for // the purposes of KBFS. @lint("ignore") record Identify2ResUPK2 { UserPlusKeysV2AllIncarnations upk; Time identifiedAt; union { null, IdentifyTrackBreaks } trackBreaks; } /* * Note that UID can be empty, in which case a resolution is also forced. */ Identify2Res identify2( int sessionID, UID uid, string userAssertion, IdentifyReason reason, boolean useDelegateUI, boolean alwaysBlock, boolean noErrorOnTrackFailure, boolean forceRemoteCheck, boolean needProofSet, boolean allowEmptySelfID, boolean noSkipSelf, boolean canSuppressUI, TLFIdentifyBehavior identifyBehavior, boolean forceDisplay, boolean actLoggedOut ); record IdentifyLiteRes { UserOrTeamLite ul; union { null, IdentifyTrackBreaks } trackBreaks; } /* * Note that UID can be empty, in which case a resolution is also forced. */ IdentifyLiteRes identifyLite( int sessionID, UserOrTeamID id, string assertion, IdentifyReason reason, boolean useDelegateUI, boolean alwaysBlock, boolean noErrorOnTrackFailure, boolean forceRemoteCheck, boolean needProofSet, boolean allowEmptySelfID, boolean noSkipSelf, boolean canSuppressUI, TLFIdentifyBehavior identifyBehavior, boolean forceDisplay, OfflineAvailability oa ); /* * Resolve a set of assertions to an implicit team, optionally creating the team and identifying the members. * When doIdentifies is not set, social assertion resolutions are server trust. */ ResolveIdentifyImplicitTeamRes resolveIdentifyImplicitTeam( int sessionID, string assertions, string suffix, boolean isPublic, boolean doIdentifies, // Whether core runs identifies on all the people or assertions boolean create, // Whether to create the team if none exists IdentifyReason reason, // Displayed in the header of the tracker popup TLFIdentifyBehavior identifyBehavior, OfflineAvailability oa ); record ResolveIdentifyImplicitTeamRes { // Display name possibly updated by resolutions and conflicts. // With the logged-in user first (so not a canonical CORE display name). string displayName; // example: "alice,bob,zed#bot (conflicted copy 2017-05-08 #3)" TeamID teamID; array writers; // Members of the team that can write. The team OWNERs. map trackBreaks; TLFID folderID; // i-team TLF ID, if there is one } /** resolveImplicitTeam returns a TLF display name given a teamID. The publicness of the team is inferred from the TeamID. */ Folder resolveImplicitTeam(int sessionID, TeamID id); SocialAssertion normalizeSocialAssertion(string assertion); }