# social.colibri.beta.actor.defs

> 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.defs)
- [Documentation](https://lexicon.garden/lexicon/did:plc:mprdjqjluoswa7awzggaggj3/social.colibri.beta.actor.defs/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:mprdjqjluoswa7awzggaggj3/social.colibri.beta.actor.defs/examples)

## Definitions

### `social.colibri.beta.actor.defs#mute`

**Type**: `object`

A muted subject.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `subject` | `union` | Yes | What is muted. A user or a community is named by DID, a channel by its space. |
| `createdAt` | `string` (datetime) | Yes | When the mute was created. |

### `social.colibri.beta.actor.defs#status`

**Type**: `object`

A user's status line.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `text` | `string` | Yes | The status text. |
| `emoji` | `string` | No | An emoji shown beside the status. |

### `social.colibri.beta.actor.defs#presence`

**Type**: `object`

A user's live, off-protocol state.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `voice` | `ref` → `#voiceState` | No | Where the user is connected for voice, if anywhere. |
| `status` | `ref` → `#status` | No | The user's status line. |
| `onlineState` | `string` | Yes | Derived online state. |

### `social.colibri.beta.actor.defs#mutedActor`

**Type**: `object`

A muted user or community.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `did` | `string` (did) | Yes | The muted user or community. |

### `social.colibri.beta.actor.defs#voiceState`

**Type**: `object`

A user's voice connection.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `muted` | `boolean` | No | Whether the user's microphone is muted, for any reason. |
| `channel` | `string` (space-ref) | Yes | The voice channel the user is connected to. |
| `deafened` | `boolean` | No | Whether the user has incoming audio silenced, for any reason. |
| `serverMuted` | `boolean` | No | Whether a moderator muted them. When this is true they cannot unmute themselves, and a client must not offer them the control. |
| `serverDeafened` | `boolean` | No | Whether a moderator deafened them. When this is true they cannot undeafen themselves. |

### `social.colibri.beta.actor.defs#preferences`

**Type**: `object`

The authenticated user's own settings, as the AppView currently holds them.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `mutes` | `array` | Yes | Subjects the user has muted. |
| `gifFavorites` | `array` | Yes | GIFs saved from the picker, stored whole. |
| `communityOrder` | `array` | Yes | Communities in preferred sidebar order. |
| `notificationLevel` | `string` | Yes | Which messages produce a notification. |

### `social.colibri.beta.actor.defs#profileView`

**Type**: `object`

A Colibri user as the AppView serves them: identity, resolved profile, and presence.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `did` | `string` (did) | Yes | The user's DID. |
| `isBot` | `boolean` | Yes | Whether the account is labelled as an automated account. |
| `theme` | `ref` → `social.colibri.beta.actor.profile#theme` | No | Colibri-only profile theming, read from the profile record even when the mirrored fields come from Bluesky. |
| `avatar` | `string` (uri) | No | URL of the user's avatar, served by this AppView's blob proxy. |
| `banner` | `string` (uri) | No | URL of the user's profile banner, served by this AppView's blob proxy. |
| `handle` | `string` (handle) | Yes | The user's handle, or 'handle.invalid' when it does not resolve. |
| `presence` | `ref` → `#presence` | No | Live presence, when the AppView is tracking any. |
| `description` | `string` | No | Resolved bio. |
| `displayName` | `string` | Yes | Resolved display name, falling back to the handle. |
| `syncBluesky` | `boolean` | Yes | Whether the mirrored profile fields come from app.bsky.actor.profile. |
| `preferredBadge` | `string` | No | Label value of the badge the user chose to display. |

### `social.colibri.beta.actor.defs#mutedChannel`

**Type**: `object`

A muted channel. Muting a channel silences it without leaving the community it belongs to.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `channel` | `string` (space-ref) | Yes | The muted channel's space. |

## Raw Schema

```json
{
  "id": "social.colibri.beta.actor.defs",
  "defs": {
    "mute": {
      "type": "object",
      "required": [
        "subject",
        "createdAt"
      ],
      "properties": {
        "subject": {
          "refs": [
            "#mutedActor",
            "#mutedChannel"
          ],
          "type": "union",
          "closed": true,
          "description": "What is muted. A user or a community is named by DID, a channel by its space."
        },
        "createdAt": {
          "type": "string",
          "format": "datetime",
          "description": "When the mute was created."
        }
      },
      "description": "A muted subject."
    },
    "status": {
      "type": "object",
      "required": [
        "text"
      ],
      "properties": {
        "text": {
          "type": "string",
          "maxLength": 32,
          "description": "The status text."
        },
        "emoji": {
          "type": "string",
          "description": "An emoji shown beside the status."
        }
      },
      "description": "A user's status line."
    },
    "presence": {
      "type": "object",
      "required": [
        "onlineState"
      ],
      "properties": {
        "voice": {
          "ref": "#voiceState",
          "type": "ref",
          "description": "Where the user is connected for voice, if anywhere."
        },
        "status": {
          "ref": "#status",
          "type": "ref",
          "description": "The user's status line."
        },
        "onlineState": {
          "type": "string",
          "description": "Derived online state.",
          "knownValues": [
            "online",
            "away",
            "dnd",
            "offline"
          ]
        }
      },
      "description": "A user's live, off-protocol state."
    },
    "mutedActor": {
      "type": "object",
      "required": [
        "did"
      ],
      "properties": {
        "did": {
          "type": "string",
          "format": "did",
          "description": "The muted user or community."
        }
      },
      "description": "A muted user or community."
    },
    "voiceState": {
      "type": "object",
      "required": [
        "channel"
      ],
      "properties": {
        "muted": {
          "type": "boolean",
          "description": "Whether the user's microphone is muted, for any reason."
        },
        "channel": {
          "type": "string",
          "format": "space-ref",
          "description": "The voice channel the user is connected to."
        },
        "deafened": {
          "type": "boolean",
          "description": "Whether the user has incoming audio silenced, for any reason."
        },
        "serverMuted": {
          "type": "boolean",
          "description": "Whether a moderator muted them. When this is true they cannot unmute themselves, and a client must not offer them the control."
        },
        "serverDeafened": {
          "type": "boolean",
          "description": "Whether a moderator deafened them. When this is true they cannot undeafen themselves."
        }
      },
      "description": "A user's voice connection."
    },
    "preferences": {
      "type": "object",
      "required": [
        "notificationLevel",
        "communityOrder",
        "mutes",
        "gifFavorites"
      ],
      "properties": {
        "mutes": {
          "type": "array",
          "items": {
            "ref": "#mute",
            "type": "ref"
          },
          "description": "Subjects the user has muted."
        },
        "gifFavorites": {
          "type": "array",
          "items": {
            "ref": "social.colibri.beta.embed.defs#gifView",
            "type": "ref"
          },
          "description": "GIFs saved from the picker, stored whole."
        },
        "communityOrder": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "did",
            "description": "A community."
          },
          "description": "Communities in preferred sidebar order."
        },
        "notificationLevel": {
          "type": "string",
          "description": "Which messages produce a notification.",
          "knownValues": [
            "all",
            "mentionsAndReplies"
          ]
        }
      },
      "description": "The authenticated user's own settings, as the AppView currently holds them."
    },
    "profileView": {
      "type": "object",
      "required": [
        "did",
        "handle",
        "displayName",
        "isBot",
        "syncBluesky"
      ],
      "properties": {
        "did": {
          "type": "string",
          "format": "did",
          "description": "The user's DID."
        },
        "isBot": {
          "type": "boolean",
          "description": "Whether the account is labelled as an automated account."
        },
        "theme": {
          "ref": "social.colibri.beta.actor.profile#theme",
          "type": "ref",
          "description": "Colibri-only profile theming, read from the profile record even when the mirrored fields come from Bluesky."
        },
        "avatar": {
          "type": "string",
          "format": "uri",
          "description": "URL of the user's avatar, served by this AppView's blob proxy."
        },
        "banner": {
          "type": "string",
          "format": "uri",
          "description": "URL of the user's profile banner, served by this AppView's blob proxy."
        },
        "handle": {
          "type": "string",
          "format": "handle",
          "description": "The user's handle, or 'handle.invalid' when it does not resolve."
        },
        "presence": {
          "ref": "#presence",
          "type": "ref",
          "description": "Live presence, when the AppView is tracking any."
        },
        "description": {
          "type": "string",
          "description": "Resolved bio."
        },
        "displayName": {
          "type": "string",
          "description": "Resolved display name, falling back to the handle."
        },
        "syncBluesky": {
          "type": "boolean",
          "description": "Whether the mirrored profile fields come from app.bsky.actor.profile."
        },
        "preferredBadge": {
          "type": "string",
          "description": "Label value of the badge the user chose to display."
        }
      },
      "description": "A Colibri user as the AppView serves them: identity, resolved profile, and presence."
    },
    "mutedChannel": {
      "type": "object",
      "required": [
        "channel"
      ],
      "properties": {
        "channel": {
          "type": "string",
          "format": "space-ref",
          "description": "The muted channel's space."
        }
      },
      "description": "A muted channel. Muting a channel silences it without leaving the community it belongs to."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
