# social.colibri.beta.actor.profile

> Published by [colibri.social](https://lexicon.garden/identity/did:plc:mprdjqjluoswa7awzggaggj3)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:mprdjqjluoswa7awzggaggj3/social.colibri.beta.actor.profile)
- [Documentation](https://lexicon.garden/lexicon/did:plc:mprdjqjluoswa7awzggaggj3/social.colibri.beta.actor.profile/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:mprdjqjluoswa7awzggaggj3/social.colibri.beta.actor.profile/examples)

## Definitions

### `social.colibri.beta.actor.profile`

**Type**: `record`

A Colibri profile. A public record on the user's own repo, kept separate from app.bsky.actor.profile so Colibri never needs write access to the Bluesky record.

**Key**: `literal:self`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `theme` | `ref` → `#theme` | No | Colibri-only profile theming. |
| `avatar` | `blob` | No | Avatar image. |
| `banner` | `blob` | No | Profile banner image. |
| `description` | `string` | No | Bio. |
| `displayName` | `string` | No | Display name. |
| `syncBluesky` | `boolean` | No | When true, displayName, description, avatar and banner are served from app.bsky.actor.profile instead of from this record. |
| `preferredBadge` | `string` | No | Label value of the badge to display. Absent means the highest-priority badge. |

### `social.colibri.beta.actor.profile#theme`

**Type**: `object`

Colibri-only profile theming. Always read from this record, even when syncBluesky is set.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `gradient` | `ref` → `#themeGradient` | No | Two-colour gradient. |
| `accentColor` | `string` | No | Accent colour as #rrggbb. |
| `bannerColor` | `string` | No | Fallback banner colour as #rrggbb, used when no banner image is set. |

### `social.colibri.beta.actor.profile#themeGradient`

**Type**: `object`

A two-colour gradient.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `primary` | `string` | No | Primary colour as #rrggbb. |
| `secondary` | `string` | No | Secondary colour as #rrggbb. |

## Raw Schema

```json
{
  "id": "social.colibri.beta.actor.profile",
  "defs": {
    "main": {
      "key": "literal:self",
      "type": "record",
      "record": {
        "type": "object",
        "required": [],
        "properties": {
          "theme": {
            "ref": "#theme",
            "type": "ref",
            "description": "Colibri-only profile theming."
          },
          "avatar": {
            "type": "blob",
            "accept": [
              "image/jpeg",
              "image/png",
              "image/gif",
              "image/webp"
            ],
            "description": "Avatar image."
          },
          "banner": {
            "type": "blob",
            "accept": [
              "image/jpeg",
              "image/png",
              "image/gif",
              "image/webp"
            ],
            "description": "Profile banner image."
          },
          "description": {
            "type": "string",
            "maxLength": 2560,
            "description": "Bio.",
            "maxGraphemes": 256
          },
          "displayName": {
            "type": "string",
            "maxLength": 640,
            "description": "Display name.",
            "maxGraphemes": 64
          },
          "syncBluesky": {
            "type": "boolean",
            "default": false,
            "description": "When true, displayName, description, avatar and banner are served from app.bsky.actor.profile instead of from this record."
          },
          "preferredBadge": {
            "type": "string",
            "maxLength": 64,
            "description": "Label value of the badge to display. Absent means the highest-priority badge."
          }
        }
      },
      "description": "A Colibri profile. A public record on the user's own repo, kept separate from app.bsky.actor.profile so Colibri never needs write access to the Bluesky record."
    },
    "theme": {
      "type": "object",
      "required": [],
      "properties": {
        "gradient": {
          "ref": "#themeGradient",
          "type": "ref",
          "description": "Two-colour gradient."
        },
        "accentColor": {
          "type": "string",
          "maxLength": 7,
          "description": "Accent colour as #rrggbb."
        },
        "bannerColor": {
          "type": "string",
          "maxLength": 7,
          "description": "Fallback banner colour as #rrggbb, used when no banner image is set."
        }
      },
      "description": "Colibri-only profile theming. Always read from this record, even when syncBluesky is set."
    },
    "themeGradient": {
      "type": "object",
      "required": [],
      "properties": {
        "primary": {
          "type": "string",
          "maxLength": 7,
          "description": "Primary colour as #rrggbb."
        },
        "secondary": {
          "type": "string",
          "maxLength": 7,
          "description": "Secondary colour as #rrggbb."
        }
      },
      "description": "A two-colour gradient."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
