com.atmosphereaccount.registry.profile

atmosphereaccount.com

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "linkEntry": {
      "properties": {
        "clientId": {
          "description": "Required when kind=\"bsky\". Picks which Bluesky-compatible web client should host the link (bluesky, blacksky, deer, …).",
          "maxLength": 64,
          "type": "string"
        },
        "kind": {
          "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"
          ],
          "type": "string"
        },
        "label": {
          "description": "Required when kind=\"other\". Used as the visible button title for custom links.",
          "maxLength": 64,
          "type": "string"
        },
        "url": {
          "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`.",
          "format": "uri",
          "maxLength": 512,
          "type": "string"
        }
      },
      "required": [
        "kind"
      ],
      "type": "object"
    },
    "main": {
      "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.",
      "key": "literal:self",
      "record": {
        "properties": {
          "avatar": {
            "accept": [
              "image/png",
              "image/jpeg",
              "image/webp"
            ],
            "description": "Project icon. Recommended 512x512 square.",
            "maxSize": 1000000,
            "type": "blob"
          },
          "categories": {
            "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.",
            "items": {
              "knownValues": [
                "app",
                "accountProvider",
                "moderator",
                "infrastructure",
                "developerTool"
              ],
              "type": "string"
            },
            "maxLength": 4,
            "minLength": 1,
            "type": "array"
          },
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "description": {
            "description": "Short description of the project.",
            "maxGraphemes": 500,
            "maxLength": 500,
            "minLength": 1,
            "type": "string"
          },
          "icon": {
            "accept": [
              "image/svg+xml"
            ],
            "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).",
            "maxSize": 200000,
            "type": "blob"
          },
          "links": {
            "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`.",
            "items": {
              "ref": "#linkEntry",
              "type": "ref"
            },
            "maxLength": 12,
            "type": "array"
          },
          "name": {
            "description": "Display name for the project.",
            "maxGraphemes": 60,
            "maxLength": 60,
            "minLength": 1,
            "type": "string"
          },
          "subcategories": {
            "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.",
            "items": {
              "maxLength": 32,
              "type": "string"
            },
            "maxLength": 10,
            "type": "array"
          }
        },
        "required": [
          "name",
          "description",
          "categories",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "com.atmosphereaccount.registry.profile",
  "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)

Similar Lexicons

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

Lexicon Garden

@