com.atmosphereaccount.registry.profile

atmosphereaccount.com

Documentation

A user or project profile in the Atmosphere registry. Created by the account owner on their PDS; one record per account. Reviews, ratings, moderation, and other social data live in sibling com.atmosphereaccount.registry.* records.

main record

A user or project profile in the Atmosphere registry. Created by the account owner on their PDS; one record per account. Reviews, ratings, moderation, and other social data live in sibling com.atmosphereaccount.registry.* records.

Record Key literal:self Fixed literal value

Properties

avatar blob Optional

Project icon. Recommended 512x512 square.

maxSize: 1.0 MB
banner blob Optional

Optional project banner image. Rendered at the top of the project page and used as the OpenGraph / Twitter card preview when the page is shared. Recommended 1200x630 (1.91:1 OG ratio).

maxSize: 3.0 MB
categories array of string Optional

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.

maxLength: 4 itemsminLength: 1 items
createdAt string datetime Required

An RFC 3339 formatted timestamp.

maxLength: 64 bytes
description string Optional

Optional short description for a project or bio for a user profile.

maxLength: 500 bytesmaxGraphemes: 500 graphemes
icon blob Optional

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: 200.0 KB
iconBw blob Optional

Optional black & white companion to `icon`. Same audience and sanitisation rules — published alongside the color mark for monochrome contexts (light/dark badges, sign-in chrome, print).

maxSize: 200.0 KB
name string Required

Display name for the user or project.

maxLength: 60 bytesminLength: 1 bytesmaxGraphemes: 60 graphemes
profileType string Optional

Distinguishes project profiles from user profiles. Omitted means project for backwards compatibility with existing records.

maxLength: 16 bytes
Known values: project, user
screenshots array of ref #screenshotEntry Optional

Optional screenshots for the project. Up to 4 PNG, JPEG, or WebP images.

maxLength: 4 items
subcategories array of string Optional

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.

maxLength: 10 items
View raw schema
{
  "key": "literal:self",
  "type": "record",
  "record": {
    "type": "object",
    "required": [
      "name",
      "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 user or project.",
        "maxGraphemes": 60
      },
      "links": {
        "type": "array",
        "items": {
          "ref": "#linkEntry",
          "type": "ref"
        },
        "maxLength": 12,
        "description": "Outbound buttons shown on the public profile after the Web / iOS / Android app links. 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`; new records no longer emit website entries."
      },
      "avatar": {
        "type": "blob",
        "accept": [
          "image/png",
          "image/jpeg",
          "image/webp"
        ],
        "maxSize": 1000000,
        "description": "Project icon. Recommended 512x512 square."
      },
      "banner": {
        "type": "blob",
        "accept": [
          "image/png",
          "image/jpeg",
          "image/webp"
        ],
        "maxSize": 3000000,
        "description": "Optional project banner image. Rendered at the top of the project page and used as the OpenGraph / Twitter card preview when the page is shared. Recommended 1200x630 (1.91:1 OG ratio)."
      },
      "iconBw": {
        "type": "blob",
        "accept": [
          "image/svg+xml"
        ],
        "maxSize": 200000,
        "description": "Optional black & white companion to `icon`. Same audience and sanitisation rules — published alongside the color mark for monochrome contexts (light/dark badges, sign-in chrome, print)."
      },
      "iosLink": {
        "type": "string",
        "format": "uri",
        "maxLength": 512,
        "description": "Optional App Store URL for projects with an iOS app. Rendered as an iOS button on the public profile when present."
      },
      "mainLink": {
        "type": "string",
        "format": "uri",
        "maxLength": 512,
        "description": "Primary web destination for the project (the actual web app, service, or website). Rendered as the Web button inside the public profile card when present. Optional when an iOS or Android destination is provided."
      },
      "createdAt": {
        "type": "string",
        "format": "datetime",
        "maxLength": 64
      },
      "categories": {
        "type": "array",
        "items": {
          "type": "string",
          "maxLength": 32,
          "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."
      },
      "androidLink": {
        "type": "string",
        "format": "uri",
        "maxLength": 512,
        "description": "Optional Google Play or Android distribution URL for projects with an Android app. Rendered as an Android button on the public profile when present."
      },
      "description": {
        "type": "string",
        "maxLength": 500,
        "description": "Optional short description for a project or bio for a user profile.",
        "maxGraphemes": 500
      },
      "profileType": {
        "type": "string",
        "maxLength": 16,
        "description": "Distinguishes project profiles from user profiles. Omitted means project for backwards compatibility with existing records.",
        "knownValues": [
          "project",
          "user"
        ]
      },
      "screenshots": {
        "type": "array",
        "items": {
          "ref": "#screenshotEntry",
          "type": "ref"
        },
        "maxLength": 4,
        "description": "Optional screenshots for the project. Up to 4 PNG, JPEG, or WebP images."
      },
      "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 user or project profile in the Atmosphere registry. Created by the account owner on their PDS; one record per account. Reviews, ratings, moderation, and other social data live in sibling com.atmosphereaccount.registry.* records."
}
linkEntry object

No description available.

Properties

clientId string Optional

Required when kind="bsky". Picks which Bluesky-compatible web client should host the link (bluesky, blacksky, deer, …).

maxLength: 64 bytes
kind string Required

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.

maxLength: 32 bytes
Known values: bsky, tangled, supper, website, other
label string Optional

Required when kind="other". Used as the visible button title for custom links.

maxLength: 64 bytes
url string uri Optional

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`.

maxLength: 512 bytes
View raw schema
{
  "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",
      "maxLength": 32,
      "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, …)."
    }
  }
}
screenshotEntry object

No description available.

Properties

image blob Required

Screenshot image. Up to 5MB.

maxSize: 5.0 MB
View raw schema
{
  "type": "object",
  "required": [
    "image"
  ],
  "properties": {
    "image": {
      "type": "blob",
      "accept": [
        "image/png",
        "image/jpeg",
        "image/webp"
      ],
      "maxSize": 5000000,
      "description": "Screenshot image. Up to 5MB."
    }
  }
}

Lexicon Garden

@