Teams
Teams in ATPub provide a decentralized mechanism for establishing verifiable affiliations between AT Protocol accounts. An account, identified by its DID, can represent either an individual or an organization (a “team”). This system allows users to claim membership in a team and for teams to claim members, with the affiliation becoming verified only when the assertion is mutual.
The Principle of Mutual Assertion
Section titled “The Principle of Mutual Assertion”Verified team membership is established through a bilateral agreement. These claims are standard AT Protocol records, meaning each is created by and stored in the repository of the asserting account (either the user or the team).
Verification requires two claims to exist:
- A user must claim they are a member of a team.
- The team must claim that user as a member.
When both claims are present, a client application can display the affiliation as verified.
Team Record Types
Section titled “Team Record Types”The mutual assertion is achieved using two distinct lexicon types. A “team” is any AT Protocol account that represents a group or organization.
The Member’s Claim
Section titled “The Member’s Claim”A user declares their affiliation with a team by creating a me.atpub.team.member record.
- Purpose: A user asserts, “I am a member of this team”.
- Structure:
team: The DID of the team account.
{ "$type": "me.atpub.team.member", "team": "did:plc:team_did_goes_here", "createdAt": "2025-09-04T00:40:00Z"}The Team’s Claim
Section titled “The Team’s Claim”A team acknowledges a user as a member by creating a me.atpub.team.membership record.
- Purpose: A team asserts, “This user is a member of our team”.
- Structure:
member: The DID of the user.
{ "$type": "me.atpub.team.membership", "member": "did:plc:user_did_goes_here", "createdAt": "2025-09-04T00:45:00Z"}The Verification Process
Section titled “The Verification Process”Client applications verify an affiliation by fetching records from both the user and the team.
- The client fetches
me.atpub.team.memberrecords from the user’s account. - For each record found, the client extracts the team’s DID.
- The client then queries the team’s account for a corresponding
me.atpub.team.membershiprecord that points back to the user. - If a corresponding record is found, the affiliation is considered verified.
The diagram below illustrates this data flow:
Client Application User's PDS Team's PDS | | | | 1. Request member claims | | |------------------------------>| | | | | | 2. Respond with member claim | | | (contains team DID) | | |<------------------------------| | | | | | 3. Parse team DID & request | | | corresponding membership | | | claim from Team's PDS | | |----------------------------------------------------------->| | | | | | 4. Respond with matching | | | membership claim | |<-----------------------------------------------------------| | | | | 5. Confirm mutual claims | | | exist. | | | | | o-----> Affiliation Verified | |