Technical Preview - ATProtoFans is in early access. Learn more

Lexicon Specifications

This document describes the ATProtoFans lexicon schemas for record types stored in ATProtocol repositories.

Record Types

com.atprotofans.supporter

Record declaring support for another identity. Stored in the supporter's repository.

Key: tid

{
  "$type": "com.atprotofans.supporter",
  "subject": "did:plc:creator123",
  "txnid": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
  "signatures": [
    {
      "$type": "com.atprotofans.supporterProof",
      "cid": "bafyreiabc..."
    }
  ]
}

Fields

Field Type Required Description
subject string (DID) Yes DID of the identity being supported
txnid string Yes Unique transaction identifier (ULID) for this instance of support. Used to de-duplicate support records. Max length: 100 characters
signatures array No Attestation proofs for this support relationship. Can contain com.atproto.repo.strongRef, com.atprotofans.supporterProof, or com.atprotofans.brokerProof

com.atprotofans.supporterProof

Attestation proof for a supporter relationship. When inline, cid and signature are required. When remote, only cid is required.

Key: tid

Remote Reference

{
  "$type": "com.atprotofans.supporterProof",
  "cid": "bafyreiabc..."
}

Inline Proof

{
  "$type": "com.atprotofans.supporterProof",
  "cid": "bafyreiabc...",
  "key": "did:key:z6Mk...",
  "signature": "<bytes>"
}

Fields

Field Type Required Description
cid string (CID) Yes CID of the proof record
key string No Signing key (for inline proofs)
signature bytes No Signature data (for inline proofs)

com.atprotofans.brokerProof

Broker attestation proof for a supporter relationship. Similar to supporterProof but specifically for broker attestations.

Key: tid

Remote Reference

{
  "$type": "com.atprotofans.brokerProof",
  "cid": "bafyreiabc..."
}

Inline Proof

{
  "$type": "com.atprotofans.brokerProof",
  "cid": "bafyreiabc...",
  "key": "did:key:z6Mk...",
  "signature": "<bytes>"
}

Fields

Field Type Required Description
cid string (CID) Yes CID of the proof record
key string No Signing key (for inline proofs)
signature bytes No Signature data (for inline proofs)

com.atprotofans.profile

An identity profile for display and discovery on ATProtoFans.

Key: literal:self

{
  "$type": "com.atprotofans.profile",
  "displayName": "Jane Creator",
  "description": "Making cool things!",
  "acceptingSupporters": true,
  "avatar": {
    "$type": "blob",
    "ref": {"$link": "bafyrei..."},
    "mimeType": "image/png",
    "size": 12345
  },
  "banner": {
    "$type": "blob",
    "ref": {"$link": "bafyrei..."},
    "mimeType": "image/png",
    "size": 67890
  }
}

Fields

Field Type Required Description
displayName string No Display name (max 64 graphemes, 640 bytes)
description string No Profile bio/description with optional rich text (max 256 graphemes, 2560 bytes)
facets array No Rich text facets for description annotations (app.bsky.richtext.facet)
avatar blob No Avatar image (PNG, JPEG, or WebP, max 1MB)
banner blob No Banner image (PNG, JPEG, or WebP, max 1MB)
acceptingSupporters boolean No Whether the identity is currently accepting new supporters

Object Types

com.atprotofans.hydratedProfile

A hydrated identity profile with computed fields. Used in API responses.

{
  "did": "did:plc:abc123",
  "handle": "creator.bsky.social",
  "displayName": "Jane Creator",
  "description": "Making cool things!",
  "acceptingSupporters": true,
  "supporterCount": 42
}

Fields

Field Type Required Description
did string (DID) Yes DID of the profile owner
handle string (handle) No Handle of the profile owner
displayName string No Display name (max 64 graphemes)
description string No Profile bio/description (max 256 graphemes)
facets array No Rich text facets for description annotations
avatar blob No Avatar image blob reference
banner blob No Banner image blob reference
acceptingSupporters boolean No Whether accepting new supporters
supporterCount integer No Number of supporters for this profile