# com.babesky.actor.profile

> Published by [babesky.com](https://lexicon.garden/identity/did:plc:qtapiembzpxlzsiagnc7eyy3)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:qtapiembzpxlzsiagnc7eyy3/com.babesky.actor.profile)
- [Documentation](https://lexicon.garden/lexicon/did:plc:qtapiembzpxlzsiagnc7eyy3/com.babesky.actor.profile/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:qtapiembzpxlzsiagnc7eyy3/com.babesky.actor.profile/examples)

## Definitions

### `com.babesky.actor.profile`

**Type**: `record`

Core record of the Babesky creator portfolio. Stores the creator's tagline, avatar, content niches, ratings, collab availability, and contact preferences. Consumed alongside com.babesky.actor.links, com.babesky.actor.support, and com.babesky.actor.featured to render a full portfolio in Atmosphere-compatible apps.

**Key**: `literal:self`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `avatar` | `blob` | No | Optional avatar override. Must be a blob already present in the actor's PDS. |
| `niches` | `array` | No | Free-text content category tags chosen by the creator. |
| `customs` | `ref` → `#customsAvailability` | No |  |
| `tagline` | `string` | No | Short creator bio for Atmosphere apps. |
| `bookings` | `ref` → `#bookingsAvailability` | No |  |
| `createdAt` | `string` (datetime) | Yes |  |
| `collabBrand` | `boolean` | No | Creator is open to brand partnerships. |
| `taglineMode` | `string` | No | Whether the tagline supplements or replaces the Bluesky bio on Atmosphere apps. |
| `collabContent` | `boolean` | No | Creator is open to content collaborations. |
| `contentRating` | `string` | No | Self-declared content rating. Metadata only. Does not trigger any Bluesky labels. |
| `preferredContact` | `ref` → `#contactMethod` | No | How fans should reach out. |

### `com.babesky.actor.profile#contactMethod`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `kind` | `string` | Yes |  |
| `value` | `string` | No | Contact address (email, handle, phone number, etc.). Not used when kind=platform. |
| `platformSlug` | `string` | No | When kind=platform, references one of the creator's saved com.babesky.actor.links entries by slug. |

### `com.babesky.actor.profile#customsAvailability`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `details` | `string` | No | Free text: pricing, turnaround, do-not-do list, etc. |
| `enabled` | `boolean` | Yes |  |
| `expiresAt` | `string` (datetime) | No | When this availability window closes. Maximum 30 days from publish time. |
| `contentTypes` | `array` | No |  |

### `com.babesky.actor.profile#bookingsAvailability`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `details` | `string` | No |  |
| `enabled` | `boolean` | Yes |  |
| `location` | `string` | No | City, region, or travel note. |
| `expiresAt` | `string` (datetime) | No | When this availability window closes. Maximum 30 days from publish time. |

## Raw Schema

```json
{
  "id": "com.babesky.actor.profile",
  "defs": {
    "main": {
      "key": "literal:self",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "createdAt"
        ],
        "properties": {
          "avatar": {
            "type": "blob",
            "accept": [
              "image/png",
              "image/jpeg",
              "image/webp"
            ],
            "maxSize": 1000000,
            "description": "Optional avatar override. Must be a blob already present in the actor's PDS."
          },
          "niches": {
            "type": "array",
            "items": {
              "type": "string",
              "maxGraphemes": 32
            },
            "maxLength": 10,
            "description": "Free-text content category tags chosen by the creator."
          },
          "customs": {
            "ref": "#customsAvailability",
            "type": "ref"
          },
          "tagline": {
            "type": "string",
            "description": "Short creator bio for Atmosphere apps.",
            "maxGraphemes": 280
          },
          "bookings": {
            "ref": "#bookingsAvailability",
            "type": "ref"
          },
          "createdAt": {
            "type": "string",
            "format": "datetime"
          },
          "collabBrand": {
            "type": "boolean",
            "description": "Creator is open to brand partnerships."
          },
          "taglineMode": {
            "type": "string",
            "description": "Whether the tagline supplements or replaces the Bluesky bio on Atmosphere apps.",
            "knownValues": [
              "addition",
              "override"
            ]
          },
          "collabContent": {
            "type": "boolean",
            "description": "Creator is open to content collaborations."
          },
          "contentRating": {
            "type": "string",
            "description": "Self-declared content rating. Metadata only. Does not trigger any Bluesky labels.",
            "knownValues": [
              "none",
              "nudity",
              "sexual",
              "porn",
              "graphic-media"
            ]
          },
          "preferredContact": {
            "ref": "#contactMethod",
            "type": "ref",
            "description": "How fans should reach out."
          }
        }
      },
      "description": "Core record of the Babesky creator portfolio. Stores the creator's tagline, avatar, content niches, ratings, collab availability, and contact preferences. Consumed alongside com.babesky.actor.links, com.babesky.actor.support, and com.babesky.actor.featured to render a full portfolio in Atmosphere-compatible apps."
    },
    "contactMethod": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "knownValues": [
            "platform",
            "email",
            "signal",
            "whatsapp",
            "telegram",
            "germ",
            "discord",
            "phone",
            "other"
          ]
        },
        "value": {
          "type": "string",
          "description": "Contact address (email, handle, phone number, etc.). Not used when kind=platform.",
          "maxGraphemes": 200
        },
        "platformSlug": {
          "type": "string",
          "description": "When kind=platform, references one of the creator's saved com.babesky.actor.links entries by slug."
        }
      }
    },
    "customsAvailability": {
      "type": "object",
      "required": [
        "enabled"
      ],
      "properties": {
        "details": {
          "type": "string",
          "description": "Free text: pricing, turnaround, do-not-do list, etc.",
          "maxGraphemes": 500
        },
        "enabled": {
          "type": "boolean"
        },
        "expiresAt": {
          "type": "string",
          "format": "datetime",
          "description": "When this availability window closes. Maximum 30 days from publish time."
        },
        "contentTypes": {
          "type": "array",
          "items": {
            "type": "string",
            "knownValues": [
              "photo",
              "video",
              "audio",
              "physical",
              "other"
            ]
          }
        }
      }
    },
    "bookingsAvailability": {
      "type": "object",
      "required": [
        "enabled"
      ],
      "properties": {
        "details": {
          "type": "string",
          "maxGraphemes": 500
        },
        "enabled": {
          "type": "boolean"
        },
        "location": {
          "type": "string",
          "description": "City, region, or travel note.",
          "maxGraphemes": 120
        },
        "expiresAt": {
          "type": "string",
          "format": "datetime",
          "description": "When this availability window closes. Maximum 30 days from publish time."
        }
      }
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
