app.atmobb.forum.profile

lexicons.atmobb.app

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "font": {
      "properties": {
        "family": {
          "maxGraphemes": 64,
          "maxLength": 640,
          "type": "string"
        },
        "source": {
          "accept": [
            "font/woff",
            "font/woff2"
          ],
          "maxSize": 2000000,
          "type": "blob"
        },
        "style": {
          "knownValues": [
            "normal",
            "italic"
          ],
          "maxLength": 16,
          "type": "string"
        },
        "weight": {
          "maximum": 900,
          "minimum": 100,
          "type": "integer"
        }
      },
      "required": [
        "family",
        "weight",
        "style",
        "source"
      ],
      "type": "object"
    },
    "homepage": {
      "properties": {
        "featuredThreads": {
          "items": {
            "format": "at-uri",
            "type": "string"
          },
          "maxLength": 3,
          "type": "array"
        },
        "layout": {
          "knownValues": [
            "boards",
            "latest",
            "categories-latest"
          ],
          "maxLength": 32,
          "type": "string"
        },
        "sidebar": {
          "type": "boolean"
        },
        "welcome": {
          "knownValues": [
            "classic",
            "compact",
            "hidden"
          ],
          "maxLength": 32,
          "type": "string"
        }
      },
      "type": "object"
    },
    "main": {
      "description": "A forum's identity and configuration. Lives in the forum account's repo; the forum's DID is the forum's identity.",
      "key": "literal:self",
      "record": {
        "properties": {
          "avatar": {
            "accept": [
              "image/png",
              "image/jpeg",
              "image/webp"
            ],
            "maxSize": 1000000,
            "type": "blob"
          },
          "banner": {
            "accept": [
              "image/png",
              "image/jpeg",
              "image/webp"
            ],
            "maxSize": 2000000,
            "type": "blob"
          },
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "customCss": {
            "description": "Forum-owned CSS applied to public pages. Admin pages deliberately ignore it so a broken stylesheet can always be repaired.",
            "maxLength": 100000,
            "type": "string"
          },
          "customFonts": {
            "description": "Forum-owned webfont faces available to customCss.",
            "items": {
              "ref": "#font",
              "type": "ref"
            },
            "maxLength": 12,
            "type": "array"
          },
          "description": {
            "maxGraphemes": 1000,
            "maxLength": 10000,
            "type": "string"
          },
          "favicon": {
            "accept": [
              "image/png",
              "image/jpeg",
              "image/webp"
            ],
            "description": "Forum-owned browser icon.",
            "maxSize": 1000000,
            "type": "blob"
          },
          "hideCredit": {
            "description": "Hide the 'powered by atmobb' badge in the page footer. Absent means shown.",
            "type": "boolean"
          },
          "hideDefaultStamps": {
            "description": "Hide the board and arrival default stamps on member rails. The 'here since' line always shows. Absent means shown.",
            "type": "boolean"
          },
          "homepage": {
            "description": "Optional forum homepage presentation. Absent values retain the classic board index.",
            "ref": "#homepage",
            "type": "ref"
          },
          "intro": {
            "description": "Rich welcome shown in the home page hero under the description. Absent means the hero shows the name and description only.",
            "items": {
              "refs": [
                "app.atmobb.richtext.block#text",
                "app.atmobb.richtext.block#quote",
                "app.atmobb.richtext.block#code"
              ],
              "type": "union"
            },
            "maxLength": 50,
            "type": "array"
          },
          "links": {
            "items": {
              "format": "uri",
              "type": "string"
            },
            "maxLength": 20,
            "type": "array"
          },
          "membership": {
            "description": "How people join. Absent means open: declaring membership is joining.",
            "ref": "#membership",
            "type": "ref"
          },
          "name": {
            "maxGraphemes": 100,
            "maxLength": 1000,
            "type": "string"
          },
          "ogImage": {
            "accept": [
              "image/png"
            ],
            "description": "Forum-owned 1200 by 630 PNG used as the forum landing page's social preview image.",
            "maxSize": 2000000,
            "type": "blob"
          },
          "ogTheme": {
            "description": "Visual preset used by the generated forum landing page social preview.",
            "knownValues": [
              "classic",
              "midnight",
              "ocean",
              "forest",
              "plum"
            ],
            "maxLength": 32,
            "type": "string"
          },
          "ranks": {
            "description": "Deprecated and no longer rendered: post-count ranks gave way to stamps (app.atmobb.forum.stamp). Kept so older records still validate.",
            "items": {
              "ref": "#rank",
              "type": "ref"
            },
            "maxLength": 50,
            "type": "array"
          },
          "rules": {
            "items": {
              "refs": [
                "app.atmobb.richtext.block#text",
                "app.atmobb.richtext.block#quote",
                "app.atmobb.richtext.block#code"
              ],
              "type": "union"
            },
            "maxLength": 50,
            "type": "array"
          },
          "theme": {
            "description": "Built-in color theme preset. Absent means the classic atmobb skin. Custom CSS loads after the preset and may override it.",
            "knownValues": [
              "classic",
              "sky",
              "bubblegum",
              "midnight",
              "forest"
            ],
            "maxLength": 32,
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "membership": {
      "description": "Join policy for a forum. In the apply and invite modes only accounts the forum has accepted (an acceptMember moderation action) may post; reading stays public.",
      "properties": {
        "gatedSince": {
          "description": "When the forum last entered a gated mode. Posts written while the forum was open are served regardless of membership.",
          "format": "datetime",
          "type": "string"
        },
        "inviteCap": {
          "description": "Open invites an ordinary member may hold at once. 0 means only staff mint invites.",
          "maximum": 100,
          "minimum": 0,
          "type": "integer"
        },
        "inviteDays": {
          "description": "Days before an unredeemed invite expires.",
          "maximum": 365,
          "minimum": 1,
          "type": "integer"
        },
        "mode": {
          "knownValues": [
            "open",
            "apply",
            "invite"
          ],
          "maxLength": 32,
          "type": "string"
        },
        "prompt": {
          "description": "The one question shown on the application form in apply mode.",
          "maxGraphemes": 300,
          "maxLength": 3000,
          "type": "string"
        }
      },
      "type": "object"
    },
    "rank": {
      "properties": {
        "minPosts": {
          "minimum": 0,
          "type": "integer"
        },
        "title": {
          "maxGraphemes": 64,
          "maxLength": 640,
          "type": "string"
        }
      },
      "required": [
        "title",
        "minPosts"
      ],
      "type": "object"
    }
  },
  "id": "app.atmobb.forum.profile",
  "lexicon": 1
}

Validate Record

Validate a record against app.atmobb.forum.profile

Validation Options
Automatically resolve and include external schemas for full validation
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:dqnwiguwsbb6uwrm7a2rsff2
CID
bafyreid7jxx6ap5a53gou3to4tj55rkqeuui6jj42gxdrmrpvscwt4k4ba
Indexed At
2026-09-13 23:12 UTC
AT-URI
at://did:plc:dqnwiguwsbb6uwrm7a2rsff2/com.atproto.lexicon.schema/app.atmobb.forum.profile

Version History (6 versions)

Referenced Schemas (3)

Similar Lexicons

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

  • A user's atmoBB account defaults and per-forum overrides. Lives in the user's repo.

  • Declares membership in a forum. Lives in the member's own repo, pointing at the forum's DID — joining is an act of the member, leaving is deleting this record.

  • A board within a forum. Lives in the forum account's repo. Subforums reference their parent board.

Lexicon Garden

@