pics.2bit.actor.profile

2bit.pics

Documentation

A 2bit.pics profile.

main record

A 2bit.pics profile.

Record Key literal:self Fixed literal value

Properties

avatar bytes Optional

Superseded by `avatarContent`, and written only by profiles that predate it: 128x112 2bpp Game Boy Camera tile data, same layout as pics.2bit.feed.photo#image. Read together with `avatarColors` it means exactly what a one-exposure pics.2bit.image#mono means. Kept declared for the reason pics.2bit.feed.photo#image is: HappyView keeps only the properties a schema names, so dropping it would index every unmigrated avatar with its pixels removed.

maxLength: 3584minLength: 3584
avatarColors array of integer Optional

Superseded by pics.2bit.image#mono `colors`, and written only alongside `avatar`. Four 24-bit RGB colors (0 to 0xFFFFFF) corresponding to the avatar's 2bpp pixel values 0 through 3, where 0 is lightest and 3 is darkest.

maxLength: 4 itemsminLength: 4 items
avatarContent union Optional

The avatar's pixels, in the same shapes as pics.2bit.feed.photo#content - a full 128x112 frame whose planes sit in a pack blob, never on the record. Square avatars are produced by cropping at render time, not on write. Optional only while profiles predating this field remain unmigrated; a profile carries at most one of this and `avatar`. Readers should skip a $type they don't recognize and show no avatar rather than a broken one; this union must never be closed, for the same reason as the photo's.

createdAt string datetime Optional

When this profile record was first published.

description string Optional

No description available.

maxLength: 2560 bytesmaxGraphemes: 256 graphemes
displayName string Optional

No description available.

maxLength: 640 bytesmaxGraphemes: 64 graphemes
gear string Optional

Main rig flex slot.

maxLength: 100 bytes
labels ref com.atproto.label.defs#selfLabels Optional

Self-applied labels on this account. 2bit.pics writes at most `!no-unauthenticated`, the atproto value meaning "don't show this account to logged-out viewers" - the same one Bluesky writes for its own logged-out visibility setting, so other clients already know how to read it.

pinnedPhotos array of ref com.atproto.repo.strongRef Optional

Photos pinned to the top of this profile, in display order - the first ref shows first. Each must be one of this account's own pics.2bit.feed.photo records; like pics.2bit.feed.like#subject, a strongRef carries no type, so that is enforced by the AppView rather than this schema, which also drops refs to photos that have since been deleted or can't be shown. The cid is the photo's at pinning time and isn't expected to track later edits. Modeled on app.bsky.actor.profile#pinnedPost, as a short list rather than a single ref.

maxLength: 3 items
updatedAt string datetime Optional

When this profile record was last edited. Unset on a profile that has never been edited since creation.

View raw schema
{
  "description": "A 2bit.pics profile.",
  "key": "literal:self",
  "record": {
    "properties": {
      "avatar": {
        "description": "Superseded by `avatarContent`, and written only by profiles that predate it: 128x112 2bpp Game Boy Camera tile data, same layout as pics.2bit.feed.photo#image. Read together with `avatarColors` it means exactly what a one-exposure pics.2bit.image#mono means. Kept declared for the reason pics.2bit.feed.photo#image is: HappyView keeps only the properties a schema names, so dropping it would index every unmigrated avatar with its pixels removed.",
        "maxLength": 3584,
        "minLength": 3584,
        "type": "bytes"
      },
      "avatarColors": {
        "description": "Superseded by pics.2bit.image#mono `colors`, and written only alongside `avatar`. Four 24-bit RGB colors (0 to 0xFFFFFF) corresponding to the avatar's 2bpp pixel values 0 through 3, where 0 is lightest and 3 is darkest.",
        "items": {
          "maximum": 16777215,
          "minimum": 0,
          "type": "integer"
        },
        "maxLength": 4,
        "minLength": 4,
        "type": "array"
      },
      "avatarContent": {
        "description": "The avatar's pixels, in the same shapes as pics.2bit.feed.photo#content - a full 128x112 frame whose planes sit in a pack blob, never on the record. Square avatars are produced by cropping at render time, not on write. Optional only while profiles predating this field remain unmigrated; a profile carries at most one of this and `avatar`. Readers should skip a $type they don't recognize and show no avatar rather than a broken one; this union must never be closed, for the same reason as the photo's.",
        "refs": [
          "pics.2bit.image#mono",
          "pics.2bit.image#trichrome"
        ],
        "type": "union"
      },
      "createdAt": {
        "description": "When this profile record was first published.",
        "format": "datetime",
        "type": "string"
      },
      "description": {
        "maxGraphemes": 256,
        "maxLength": 2560,
        "type": "string"
      },
      "displayName": {
        "maxGraphemes": 64,
        "maxLength": 640,
        "type": "string"
      },
      "gear": {
        "description": "Main rig flex slot.",
        "maxLength": 100,
        "type": "string"
      },
      "labels": {
        "description": "Self-applied labels on this account. 2bit.pics writes at most `!no-unauthenticated`, the atproto value meaning \"don't show this account to logged-out viewers\" - the same one Bluesky writes for its own logged-out visibility setting, so other clients already know how to read it.",
        "ref": "com.atproto.label.defs#selfLabels",
        "type": "ref"
      },
      "pinnedPhotos": {
        "description": "Photos pinned to the top of this profile, in display order - the first ref shows first. Each must be one of this account's own pics.2bit.feed.photo records; like pics.2bit.feed.like#subject, a strongRef carries no type, so that is enforced by the AppView rather than this schema, which also drops refs to photos that have since been deleted or can't be shown. The cid is the photo's at pinning time and isn't expected to track later edits. Modeled on app.bsky.actor.profile#pinnedPost, as a short list rather than a single ref.",
        "items": {
          "ref": "com.atproto.repo.strongRef",
          "type": "ref"
        },
        "maxLength": 3,
        "type": "array"
      },
      "updatedAt": {
        "description": "When this profile record was last edited. Unset on a profile that has never been edited since creation.",
        "format": "datetime",
        "type": "string"
      }
    },
    "type": "object"
  },
  "type": "record"
}

Lexicon Garden

@