com.atmosphereaccount.registry.profile

atmosphereaccount.com

{
  "id": "com.atmosphereaccount.registry.profile",
  "defs": {
    "main": {
      "key": "literal:self",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "name",
          "description",
          "categories",
          "createdAt"
        ],
        "properties": {
          "icon": {
            "type": "blob",
            "accept": [
              "image/svg+xml"
            ],
            "maxSize": 200000,
            "description": "Optional vector icon (SVG) intended for developers building badges, app showcases, sign-in flows, etc. Not displayed on the public Explore profile. Sanitised on upload (script tags, event handlers, foreignObject and javascript:/data: hrefs are stripped)."
          },
          "name": {
            "type": "string",
            "maxLength": 60,
            "minLength": 1,
            "description": "Display name for the project.",
            "maxGraphemes": 60
          },
          "links": {
            "type": "array",
            "items": {
              "ref": "#linkEntry",
              "type": "ref"
            },
            "maxLength": 12,
            "description": "Outbound buttons shown on the public profile. Atmosphere links (kind = bsky / tangled / supper) derive their URL from the project's current handle by default; a `url` override is allowed for tangled / supper when the canonical destination differs from the handle. Custom link kinds (kind = website / other) always carry their `url`."
          },
          "avatar": {
            "type": "blob",
            "accept": [
              "image/png",
              "image/jpeg",
              "image/webp"
            ],
            "maxSize": 1000000,
            "description": "Project icon. Recommended 512x512 square."
          },
          "createdAt": {
            "type": "string",
            "format": "datetime"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string",
              "knownValues": [
                "app",
                "accountProvider",
                "moderator",
                "infrastructure",
                "developerTool"
              ]
            },
            "maxLength": 4,
            "minLength": 1,
            "description": "All categories that apply to the project. A project can be both an app and an account provider, etc. The first item is treated as the primary category for sort/grouping. New values can be added to knownValues over time without breaking existing records."
          },
          "description": {
            "type": "string",
            "maxLength": 500,
            "minLength": 1,
            "description": "Short description of the project.",
            "maxGraphemes": 500
          },
          "subcategories": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 32
            },
            "maxLength": 10,
            "description": "Open-ended subcategory tags. For apps: microblog, photo, video, blogging, music, events, clients, tools, social, reading, productivity, research, science, reviews, gaming, community, food, location, liveStreaming, niche, content, art."
          }
        }
      },
      "description": "A project's profile in the Atmosphere registry. Created by the project's own account on its PDS; one record per account. Kept intentionally minimal so future additions (reviews, age ratings, donations metadata, etc.) live in sibling com.atmosphereaccount.registry.* records."
    },
    "linkEntry": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "url": {
          "type": "string",
          "format": "uri",
          "maxLength": 512,
          "description": "Optional for atmosphere kinds (bsky derives URL from clientId+handle; tangled/supper default to the canonical handle URL but accept an override). Required for `website` and `other`."
        },
        "kind": {
          "type": "string",
          "description": "Link kind. Drives the icon/label and how `url` / `clientId` are resolved at render time. New atmosphere services can be added to knownValues without breaking older records.",
          "knownValues": [
            "bsky",
            "tangled",
            "supper",
            "website",
            "other"
          ]
        },
        "label": {
          "type": "string",
          "maxLength": 64,
          "description": "Required when kind=\"other\". Used as the visible button title for custom links."
        },
        "clientId": {
          "type": "string",
          "maxLength": 64,
          "description": "Required when kind=\"bsky\". Picks which Bluesky-compatible web client should host the link (bluesky, blacksky, deer, …)."
        }
      }
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}

Validate Record

Validate a record against com.atmosphereaccount.registry.profile

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:ab7uvkn4kyf7l7prl26pz4r2
CID
bafyreih3uvdlxklymy65rk6ow6fs6nq34wrreqmbri3klcipot6wmzcnlm
Indexed At
2026-04-21 14:17 UTC
AT-URI
at://did:plc:ab7uvkn4kyf7l7prl26pz4r2/com.atproto.lexicon.schema/com.atmosphereaccount.registry.profile

Version History (3 versions)

Lexicon Garden

@