agency.portable.membership

portable.agency

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A self-attested claim by an atproto account that it is linked to an identity, community, or role in an external service. Paired with a matching agency.portable.attestation record on the attester's PDS.",
      "key": "any",
      "record": {
        "properties": {
          "attestedBy": {
            "description": "DID of the attester that verified this claim.",
            "format": "did",
            "type": "string"
          },
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "role": {
            "description": "Optional role, rank, or status within the service or community (e.g. 'admin', 'maintainer', 'fascinator').",
            "type": "string"
          },
          "service": {
            "ref": "#service",
            "type": "ref"
          }
        },
        "required": [
          "service",
          "attestedBy",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "service": {
      "description": "Identifies an external service and, optionally, a specific community and identity within it.",
      "properties": {
        "community": {
          "description": "Optional identifier for a specific group, server, workspace, or organization within the service (e.g. a Discord guild ID, a GitHub org slug).",
          "type": "string"
        },
        "identifier": {
          "description": "Optional external identity within the service (e.g. a user ID or handle). Include when proving platform identity; may be omitted when only proving community or role membership.",
          "type": "string"
        },
        "type": {
          "description": "External service identifier (e.g. 'discord', 'github', 'slack').",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    }
  },
  "id": "agency.portable.membership",
  "lexicon": 1
}

Validate Record

Validate a record against agency.portable.membership

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:y564i3jkoqqb5of5bcnq4xee
CID
bafyreifnqzssddtmr5tgcuhec7i6i4khhsownhi6gr3xzrqisiihpyv6ra
Indexed At
2026-04-23 12:32 UTC
AT-URI
at://did:plc:y564i3jkoqqb5of5bcnq4xee/com.atproto.lexicon.schema/agency.portable.membership

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • An attestation by a verifier that a subject atproto account is linked to an identity, community, or role in an external service. Paired with a matching agency.portable.membership record on the subject's PDS.

  • A community-side member record granting a user roles within the community. Lives on the community repo and is written when an admission is finalized.

  • uk.co.bstools.alias.test.link recordnot from the namespace authority

    Claims that an account on another service belongs to this atproto account. Only valid if the authoriser has published a matching attestation.

  • com.getorbyt.community.membership recordnot from the namespace authority

    A user-owned canonical membership link, one record per Community. The record key MUST be base32(sha256(community AT-URI)) truncated to 24 characters, lowercase and unpadded, so writing it twice replaces the record inste…

  • A registered mapped.at member. Stored on the service account repo.

Lexicon Garden

@