type: object
description: |
    Stored social profile for a Bigscreen account — the **admin** shape
    returned from `/admin/account/{bigscreenAccountId}/social/profile` and
    `/admin/account/{bigscreenAccountId}/social_profiles`. Mirrors
    `SocialProfile` (extends `DocumentDatabase.BaseItem`) in
    [`cloud/src/SocialAPI/Schemas.ts`](../../../../cloud/src/SocialAPI/Schemas.ts).

    - `id` is the `socialId` (the class also exposes a `socialId` getter that
      returns `id` — both names refer to the same value).
    - `bigscreenAccountId` is admin-only; the public projection
      ([`PublicSocialProfile`](./PublicSocialProfile.yaml)) strips it.
    - There is at most one `SocialProfile` per Bigscreen account
      (`SocialProfileLookup` enforces uniqueness); the
      `/admin/account/{id}/social_profiles` endpoint returning an array is a
      debug surface for migrations / multi-handle situations.
required: [id, bigscreenAccountId, createdAt]
properties:
    id:
        type: string
        description: |
            `socialId` — same value as the `socialId` getter on the class.
    createdAt:
        type: integer
        description: Profile creation, Unix timestamp in **milliseconds** (from `BaseItem`).
    updatedAt:
        type: integer
        description: Last write to the profile row, Unix timestamp in **milliseconds**.
    bigscreenAccountId:
        type: string
        description: |
            Underlying Bigscreen account this profile wraps. Admin-only —
            stripped by `getPublicData()`.
    accountCreatedAt:
        type: integer
        description: |
            Underlying Bigscreen account creation, Unix timestamp in
            **seconds**. Copied in via `updatePublicAccountData()`.
    bigAccountStatus:
        $ref: "./BigscreenAccountStatus.yaml"
    isVerified: { type: boolean }
    username: { type: string }
    oculusId: { type: string }
    oculusUserId: { type: string }
    steamId: { type: string }
    smallImageUrl: { type: string, format: uri }
    largeImageUrl: { type: string, format: uri }
    badges:
        type: array
        items: { type: string }
    stats:
        $ref: "./SocialStats.yaml"
example:
    id: "soc_01HZR12345ABC678DEF90GHJKM"
    createdAt: 1761127240000
    updatedAt: 1762462440000
    bigscreenAccountId: "acct_01HXJ4Q12345"
    accountCreatedAt: 1761127200
    bigAccountStatus: OK
    isVerified: true
    username: "alice"
    oculusId: ""
    oculusUserId: ""
    steamId: "76561198012345678"
    smallImageUrl: "https://cdn.bigscreenvr.com/avatars/alice_sm.png"
    largeImageUrl: "https://cdn.bigscreenvr.com/avatars/alice_lg.png"
    badges: ["beyond-early-supporter"]
    stats:
        socialId: "soc_01HZR12345ABC678DEF90GHJKM"
        notificationsCount: 12
        unreadNotificationsCount: 3
        historyItemCount: 87
        friendsCount: 42
        followersCount: 18
        blockedCount: 1
        lastOnlineDate: 1762462440
